在上的每个夹点处放置一个挡块
该代码在pline的每个夹点中添加了圆圈:(defun c:foo ()
(vl-load-com)
(setq *model-space* (vla-get-modelspace (vla-get-activedocument (vlax-get-acad-object))))
(setq obj (vlax-ename->vla-object (car (entsel))))
(setq c (vlax-get obj "Coordinates") i 0)
(repeat (/ (length c) 2)
(setq x (nth i c) y (nth (1+ i) c))
(vla-addcircle *model-space* (vlax-3d-point (list x y 0.0)) 3.0)
(setq i (+ i 2))
)
(princ)
)
我怎样才能更改放置bloke而不是circle的代码??? (命令“-insert”您的块(vlax-3d-point(list x y 0.0))1 1 0)而不是线(vla addcircle….)?
如果你有2d点,(列表x y)可能就足够了
gr.Rlx 如果您是指法线块(非属性化)。
(defun c:test (/ isattributed blk s i)
;; Tharwat 6/9/2015 ;;
(defun isattributed (doc name / yes)
(vlax-for o (vla-item (vla-get-blocks doc) name)
(if (eq "AcDbAttributeDefinition" (vla-get-objectname o))
(setq yes t)
)
)
yes
)
(if (and (/= ""
(setq blk
(getstring
t
"\nSpecify Block name to place at each coordinates of a LWPolyline :"
)
)
)
(tblsearch "BLOCK" blk)
(if (not (isattributed
(vla-get-activedocument (vlax-get-acad-object))
blk
)
)
t
(progn (princ "\nBlock name is attributed !!") nil)
)
(setq s (ssget '((0 . "LWPOLYLINE"))))
)
(repeat (setq i (sslength s))
(foreach p (entget (ssname s (setq i (1- i))))
(if (eq (car p) 10)
(entmake (list '(0 . "INSERT") p (cons 2 blk)))
)
)
)
(princ
"\nBlock name is not found or selection is not a LWPolyline "
)
)
(princ)
)(vl-load-com)
Tharwat你是Greattttttttttttt
所以thanx非常好
若要询问运行代码中块的名称,如何修改?? 第1个(setq blk(getstring“\n输入块名称”))
第二个Rlx(命令”-插入“blokc”(vlax-3d-point(list x y 0.0))1 1 0)将出错,因为命令不喜欢vlax-3d-point,只保留为(list x y)
我更新了上面的代码。 Thanxxxxxxxxxxxx对Tharwat和Bigal来说太多了 没问题。 FWIW,代码可以压缩为:
(defun c:test ( / blk def enx idx sel vtx )
(while
(and (/= "" (setq blk (getstring t "\nBlock name: ")))
(cond
( (null (setq def (tblsearch "block" blk)))
(princ "\nBlock not found.")
)
( (= 2 (logand 2 (cdr (assoc 70 def))))
(princ "\nBlock is attributed.")
)
)
)
)
(if (and (/= "" blk) (setq sel (ssget '((0 . "LWPOLYLINE")))))
(repeat (setq idx (sslength sel))
(setq enx (entget (ssname sel (setq idx (1- idx)))))
(while (setq vtx (assoc 10 enx))
(entmake (list '(0 . "INSERT") (cons 2 blk) vtx))
(setq enx (cdr (member vtx enx)))
)
)
)
(princ)
)
[列表]
[*]你说得对,我太快了,因为我在决定正常插入和vla插入块之间,并决定正常插入是最简单的(很晚了,正要睡觉……)下次尽量保持清醒
[/列表]
页:
[1]