Advertisement
Guest User

LISP ARTBD - bonuscad

a guest
Jan 4th, 2017
327
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.22 KB | None | 0 0
  1. (vl-load-com)
  2.  
  3. (defun c:ARTDB ( / js n AcDoc Space ename obj pr nb typ_obj oldim oldlay a_base a_dir
  4.  
  5. pt_start pt_end pt_cen rad alpha pt_vtx dist_start dist_end seg_len seg_bulge)
  6.  
  7. (defun grdraw-id_arc ( / oldcolor)
  8.  
  9. (setq oldcolor (getvar "CECOLOR"))
  10.  
  11. (setvar "CECOLOR" "3")
  12.  
  13. (command "_.line" "_none" (trans pt_start 0 1) "_none" (trans pt_vtx 0 1) "")
  14.  
  15. (command "_.line" "_none" (trans pt_vtx 0 1) "_none" (trans pt_end 0 1) "")
  16.  
  17. (setvar "CECOLOR" "5")
  18.  
  19. (command "_.line" "_none" (trans pt_start 0 1) "_none" (trans pt_cen 0 1) "")
  20.  
  21. (command "_.line" "_none" (trans pt_cen 0 1) "_none" (trans pt_end 0 1) "")
  22.  
  23. (setvar "CECOLOR" "2")
  24.  
  25. (command "_.line" "_none" (trans (polar pt_cen (angle pt_cen pt_vtx) (abs rad)) 0 1) "_none" (trans pt_vtx 0 1) "")
  26.  
  27. (setvar "CECOLOR" oldcolor)
  28.  
  29. )
  30.  
  31. (defun add_mt_arc ( / ins_txt h_t)
  32.  
  33. (initget 9)
  34.  
  35. (setq ins_txt (getpoint (trans pt_cen 0 1) "\nPoint d'insertion des informations de l'arc?: "))
  36.  
  37. (initget 6)
  38.  
  39. (setq h_t (getdist ins_txt (strcat "\nTaille du texte <" (rtos (getvar "textsize")) ">: ")))
  40.  
  41. (if (null h_t) (setq h_t (getvar "textsize")) (setvar "textsize" h_t))
  42.  
  43. (vla-addMtext Space
  44.  
  45. (vlax-3d-point (trans ins_txt 1 0))
  46.  
  47. 0.0
  48.  
  49. (strcat
  50.  
  51. "{\\fArial Narrow|b0|i0|c0|p34;"
  52.  
  53. "A = " (angtos (- pi (* 2 alpha)) (getvar "LUNITS") 4)
  54.  
  55. "\\PR = " (rtos rad 2 3)
  56.  
  57. "\\PT = " (rtos (distance pt_start pt_vtx) 2 3)
  58.  
  59. "\\PD = " (rtos seg_len 2 3)
  60.  
  61. "\\PB = " (rtos (- (distance pt_cen pt_vtx) (abs rad)) 2 3)
  62.  
  63. "}"
  64.  
  65. )
  66.  
  67. )
  68.  
  69. (entmod
  70.  
  71. (append
  72.  
  73. (vl-remove-if
  74.  
  75. (function
  76.  
  77. (lambda (x)
  78.  
  79. (or (member (car x) '(90 63 421 45))
  80.  
  81. (< 419 (car x) 440)
  82.  
  83. )
  84.  
  85. )
  86.  
  87. )
  88.  
  89. (entget (entlast))
  90.  
  91. )
  92.  
  93. (list
  94.  
  95. '(90 . 1)
  96.  
  97. '(63 . 41)
  98.  
  99. '(421 . 16770196)
  100.  
  101. '(45 . 1.5)
  102.  
  103. )
  104.  
  105. )
  106.  
  107. )
  108.  
  109. (entupd (entlast))
  110.  
  111. )
  112.  
  113. (princ "\nSélectionner des Arcs/PolyArcs .")
  114.  
  115. (setq
  116.  
  117. js
  118.  
  119. (ssget
  120.  
  121. '((-4 . "")
  122.  
  123. (-4 . "AND>")
  124.  
  125. (0 . "LWPOLYLINE,ARC")
  126.  
  127. (-4 . "OR>"))
  128.  
  129. )
  130.  
  131. n -1
  132.  
  133. )
  134.  
  135. (cond
  136.  
  137. (js
  138.  
  139. (setq
  140.  
  141. AcDoc (vla-get-ActiveDocument (vlax-get-acad-object))
  142.  
  143. Space
  144.  
  145. (if (= 1 (getvar "CVPORT"))
  146.  
  147. (vla-get-PaperSpace AcDoc)
  148.  
  149. (vla-get-ModelSpace AcDoc)
  150.  
  151. )
  152.  
  153. nb 0
  154.  
  155. )
  156.  
  157. (cond
  158.  
  159. ((null (tblsearch "LAYER" "Info ARTDB des Arcs"))
  160.  
  161. (vlax-put (vla-add (vla-get-layers AcDoc) "Info ARTDB des Arcs") 'Color "5")
  162.  
  163. )
  164.  
  165. )
  166.  
  167. (setq
  168.  
  169. oldim (getvar "dimzin")
  170.  
  171. oldlay (getvar "clayer")
  172.  
  173. a_base (getvar "ANGBASE")
  174.  
  175. a_dir (getvar "ANGDIR")
  176.  
  177. )
  178.  
  179. (setvar "dimzin" 0) (setvar "clayer" "Info ARTDB des Arcs")
  180.  
  181. (setvar "ANGBASE" 0) (setvar "ANGDIR" 0)
  182.  
  183. (repeat (sslength js)
  184.  
  185. (setq
  186.  
  187. ename (ssname js (setq n (1+ n)))
  188.  
  189. obj (vlax-ename->vla-object ename)
  190.  
  191. pr -1
  192.  
  193. nb 0
  194.  
  195. )
  196.  
  197. (setq typ_obj (vla-get-ObjectName obj))
  198.  
  199. (if (eq typ_obj "AcDbArc")
  200.  
  201. (progn
  202.  
  203. (setq
  204.  
  205. pt_start (vlax-get obj 'StartPoint)
  206.  
  207. pt_end (vlax-get obj 'EndPoint)
  208.  
  209. pt_cen (vlax-get obj 'Center)
  210.  
  211. rad (vlax-get obj 'Radius)
  212.  
  213. alpha (* (vlax-get obj 'TotalAngle) 0.5)
  214.  
  215. seg_len (vlax-get obj 'ArcLength)
  216.  
  217. pt_vtx (polar pt_cen (+ (vlax-get obj 'StartAngle) alpha) (+ rad (* rad (1- (/ 1 (cos alpha))))))
  218.  
  219. nb (1+ nb)
  220.  
  221. )
  222.  
  223. (grdraw-id_arc)
  224.  
  225. (add_mt_arc)
  226.  
  227. )
  228.  
  229. (repeat (fix (vlax-curve-getEndParam obj))
  230.  
  231. (setq
  232.  
  233. dist_start (vlax-curve-GetDistAtParam obj (setq pr (1+ pr)))
  234.  
  235. dist_end (vlax-curve-GetDistAtParam obj (1+ pr))
  236.  
  237. pt_start (vlax-curve-GetPointAtParam obj pr)
  238.  
  239. pt_end (vlax-curve-GetPointAtParam obj (1+ pr))
  240.  
  241. seg_len (- dist_end dist_start)
  242.  
  243. seg_bulge (vla-GetBulge obj pr)
  244.  
  245. )
  246.  
  247. (if (not (zerop seg_bulge))
  248.  
  249. (progn
  250.  
  251. (setq
  252.  
  253. rad (/ seg_len (* 4.0 (atan seg_bulge)))
  254.  
  255. alpha (+ (angle pt_start pt_end) (- (* pi 0.5) (* 2.0 (atan seg_bulge))))
  256.  
  257. pt_cen (polar pt_start alpha rad)
  258.  
  259. pt_vtx (polar pt_start (- alpha (* pi 0.5)) (* rad (/ (sin (* 2.0 (atan seg_bulge))) (cos (* 2.0 (atan seg_bulge))))))
  260.  
  261. alpha (if (< (* 2.0 (atan seg_bulge)) 0) (- pi (* 2.0 (atan seg_bulge))) (* 2.0 (atan seg_bulge)))
  262.  
  263. nb (1+ nb)
  264.  
  265. )
  266.  
  267. (grdraw-id_arc)
  268.  
  269. (add_mt_arc)
  270.  
  271. )
  272.  
  273. )
  274.  
  275. )
  276.  
  277. )
  278.  
  279. )
  280.  
  281. (setvar "dimzin" oldim) (setvar "clayer" oldlay)
  282.  
  283. (setvar "ANGBASE" a_base) (setvar "ANGDIR" a_dir)
  284.  
  285. )
  286.  
  287. )
  288.  
  289. (prin1)
  290.  
  291. )
  292.  
  293. </or")>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement