工具箱相关
您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符

lj.lsp 3.2KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166
  1. ;;连接2条3dpolyline;;coord为LJ的子程序
  2. (defun coord(en / ed)
  3. (setq ee (entsel "\n请选择要连接的线:"))
  4. (setq en (car ee))
  5. (setq ed (enTGET en))
  6. (print ed)
  7. (setq la (cdr (assoc 8 ed)))
  8. (setq pp (cdr (assoc 0 ed)))
  9. (if (/= pp "LINE")
  10. (progn
  11. (setq la (cdr (assoc 8 ed)))
  12. (setq c38 (assoc 38 ed))
  13. (if (eq c38 nil)
  14. (progn
  15. (setq en1 (entnext en))
  16. (setq ed1 (entget en1))
  17. (setq pp (cdr (assoc 0 ed1)))
  18. (setq pt1 (assoc 10 ed1))
  19. (if (/= pt1 nil)
  20. (progn
  21. (setq pt (cdr pt1))
  22. ))
  23. (setq lt (list pt))
  24. (while (/= pp "SEQEND")
  25. (progn
  26. (setq en1 (entnext en1))
  27. (setq ed1 (entget en1))
  28. (setq pp (cdr (assoc 0 ed1)))
  29. (setq pt1 (assoc 10 ed1))
  30. (if (/= pt1 nil)
  31. (progn
  32. (setq pt (cdr pt1))
  33. ))
  34. (setq lt (cons pt lt))
  35. )
  36. )
  37. (setq lt (cdr lt))
  38. ); not lwpolyline
  39. (progn
  40. (print "aaa")
  41. (setq ev38 (cdr c38))
  42. (setq len (length ed))
  43. (setq len (- len 3))
  44. (setq j 0)
  45. (setq c10 (car (nth j ed)))
  46. (while (/= c10 10)
  47. (progn
  48. (setq j (+ 1 j))
  49. (setq c10 (car (nth j ed)))
  50. ))
  51. (setq lt (list (list 0 0 0)))
  52. (while (< j len)
  53. (progn
  54. (setq lpt1 (cdr (nth j ed)))
  55. (setq lptx (nth 0 lpt1))
  56. (setq lpty (nth 1 lpt1))
  57. (setq lpt (list lptx lpty ev38))
  58. (setq lt (cons lpt lt))
  59. (setq j (+ j 4))
  60. ))
  61. (setq lt (reverse lt))
  62. (setq lt (cdr lt))
  63. )); is lwpolyline
  64. ) ; not line
  65. (progn
  66. (setq lip1 (cdr (assoc 10 ed)))
  67. (setq lt (list lip1))
  68. (setq lip2 (cdr (assoc 11 ed)))
  69. (setq lt (cons lip2 lt))
  70. )) ; line
  71. (setq pot (cadr ee))
  72. (setq edd ed)
  73. (setq lla la)
  74. (setq e en)
  75. (setq lt lt)
  76. ;(entdel en)
  77. )
  78. 连接2条3dpolyline,LJ为主程序;;coord为LJ的子程序
  79. (defun c:y()
  80. (setq lt1 (coord en))
  81. (setq e1 e)
  82. (setq la1 lla)
  83. (setq et1 edd)
  84. (setq pot1 pot)
  85. (setq lt1 (reverse lt1))
  86. (setq color1 (cdr c66))
  87. ;(setq c62 (assoc 62 ed))
  88. ;(setq cc62 (cons 62 3))
  89. ;(setq color1 (cdr c62))
  90. ;(setq ed (subst cc62 c62 ed))
  91. ;(entmod ed)
  92. (command "change" e1 "" "P" "c" "3" "")
  93. ;_______________
  94. (setq pss1 (car lt1))
  95. (setq ps1 (list (nth 0 pss1) (nth 1 pss1)))
  96. (setq pee1 (last lt1))
  97. (setq pe1 (list (nth 0 pee1) (nth 1 pee1)))
  98. (setq pot1 (list (nth 0 pot1) (nth 1 pot1)))
  99. (setq ds1 (distance ps1 pot1))
  100. (setq de1 (distance pe1 pot1))
  101. (if (> ds1 de1)
  102. (progn
  103. (setq lt1 lt1)
  104. )
  105. (progn
  106. (setq lt1 (reverse lt1))
  107. ))
  108. ;________________
  109. (setq lt2 (coord en))
  110. (setq e2 e)
  111. (setq la2 lla)
  112. (setq et2 edd)
  113. (setq pot2 pot)
  114. (setq lt2 (reverse lt2))
  115. (command "change" e2 "" "p" "c" 3 "")
  116. ;_________________
  117. (setq pss2 (car lt2))
  118. (setq ps2 (list (nth 0 pss2) (nth 1 pss2)))
  119. (setq pee2 (last lt2))
  120. (setq pe2 (list (nth 0 pee2) (nth 1 pee2)))
  121. (setq pot2 (list (nth 0 pot2) (nth 1 pot2)))
  122. (setq ds2 (distance ps2 pot2))
  123. (setq de2 (distance pe2 pot2))
  124. (if (< ds2 de2)
  125. (progn
  126. (setq lt2 lt2)
  127. )
  128. (progn
  129. (setq lt2 (reverse lt2))
  130. ))
  131. ;_________________
  132. (if (= la1 la2)
  133. (progn
  134. (setq lt (append lt1 lt2))
  135. (setvar "clayer" la1)
  136. (setq i 0)
  137. (setq len (length lt))
  138. (if (NOT (EQ e1 e2))
  139. (progn
  140. (command "3dpoly")
  141. (while (< i len)
  142. (progn
  143. (setq pt (nth i lt))
  144. (command pt)
  145. (setq i (+ 1 i))
  146. ))
  147. (command "")
  148. (entdel e1)
  149. (entdel e2)
  150. )
  151. (progn
  152. (prompt "\nSORRY! 你选择了同一条线!!!!")
  153. (print)
  154. ))
  155. )
  156. (progn
  157. (prompt "\nSORRY! 你选择的不是同一层的线!!!!")
  158. (PRINT)
  159. ))
  160. ;(command "change" "l" "" "p" "c" color1 "")
  161. )