本帖最后由 newer 于 2017-5-25 18:15 编辑
XDRX API写一个,批量处理,并且自动转成块实体,所有的圆都变成一个块定义,图纸小。
![](source/plugin/imc_colorcode/images/loading.gif) - (defun c:tt ()
- (defun _process (e)
- (defun _makeblk (/ e)
- (setq e (xdrx_circle_make (setq cen '(0 0 0)) 1.0)
- pnts (xdrx_getsamplept e 5)
- ge1 (xdge::constructor e)
- ge2 (xdge::constructor e)
- )
- (xdge::setpropertyvalue ge1 "setinterval" 0.0 (/ pi 2.0))
- (xdge::setpropertyvalue ge2 "setinterval" pi (/ (* pi 3.0) 2.0))
- (setq l1 (xdge::constructor "kLineSeg3d" (nth 1 pnts) cen)
- l2 (xdge::constructor "kLineSeg3d" cen (nth 2 pnts))
- l3 (xdge::constructor "kLineseg3d" (nth 3 pnts) cen)
- l4 (xdge::constructor "kLineseg3d" cen (last pnts))
- pl (xdge::constructor
- "kCompositecrv3d"
- (list ge1 l1 l2 ge2 l3 l4)
- )
- )
- (setq e1 (xdge::entity:make pl))
- (xdge::free gl)
- (setq e2 (xdrx_hatch_make e1))
- (xdrx_block_make "blk-bj-1" (list e e2))
- (xdrx_entity_delete e1 e e2) )
- (xdrx_getpropertyvalue e "center" "radius")
- (if (not (tblsearch "block" "blk-bj-1"))
- (_makeblk)
- )
- (xdrx_insert_make "blk-bj-1" #center #radius)
- (xdrx_entity_delete e)
- )
- (xdrx_begin)
- (if (and (xdrx_initssget "\n选取要处理的圆<退出>:")
- (setq ss (xdrx_ssget '((0 . "CIRCLE"))))
- )
- (progn
- (mapcar '(lambda (x) (_process x)) (xdrx_pickset->ents ss))
- )
- )
- (xdrx_end)
- (princ)
- )
换种写法:
![](source/plugin/imc_colorcode/images/loading.gif) - (defun c:tt ()
- (defun _process (e)
- (defun _makeblk (/ e)
- (setq e (xdrx_circle_make (setq cen '(0 0 0)) 1.0)
- bulge (- (/ 2 (sqrt 2.0)) 1.0)
- pts (list '(1.0 0.0 0.0)'(0.0 1.0 0.0)'(0.0 0.0 0.0)'(-1.0 0.0 0.0)'(0.0 -1.0 0.0) '(0.0 0.0 0.0) '(1.0 0.0 0.0 ))
- bulges (list bulge 0.0 0.0 bulge 0.0 0.0))
- (setq e1 (xdrx_polyline_make pts bulges))
- (setq e2 (xdrx_hatch_make e1))
- (xdrx_block_make "blk-bj-1" (list e e2))
- (xdrx_entity_delete e e1 e2)
- )
- (xdrx_getpropertyvalue e "center" "radius")
- (if (not (tblsearch "block" "blk-bj-1"))
- (_makeblk)
- )
- (xdrx_insert_make "blk-bj-1" #center #radius)
- (xdrx_entity_delete e)
- )
- (if (and (xdrx_initssget "\n选取要处理的圆<退出>:")
- (setq ss (xdrx_ssget '((0 . "CIRCLE"))))
- )
- (progn
- (mapcar '(lambda (x) (_process x)) (xdrx_pickset->ents ss))
- )
- )
- (princ)
- )
|