块属性需要用entnext不断的往后取得到,下面给你一个例子
;;;把两个属性快的属性执行一致
(defun C:bpp() ;;;复制属性
(setq ent1 nil ent2 nil)
(while (= nil ent1)(setq ent1 (car (entsel "\n数据源块:")))) ;;;;;;;;;取其中 一个块
(while (= nil ent2)(setq ent2 (car (entsel "\n需要被一致的块:")))) ;;;;;;;;;取其中另一个块
(setq n
(length (vlax-safearray->list (vlax-variant-value
(vlax-invoke-method
(vlax-ename->vla-object ent1)
'GetAttributes)
)))
)
(repeat n
(setq ent1 (entnext ent1))
(setq ent2 (entnext ent2))
(setq entlist1 (entget ent1))
(setq entlist2 (entget ent2))
(setq entlist2 (subst (assoc 1 entlist1) (assoc 1 entlist2) entlist2))
(entMOD entlist2)
(entUPD ent2)
)
)
请参考下列程序:
;把字符串表示的表转化成实数表示的表
(defun release (l / flag count slength single data itemlist temp)
(if l (progn
(foreach item l
(setq count 1 flag T slength (strlen item) itemlist nil )
(while (<= count slength)
(setq single (substr item count 1))
(if (member single '("X" "x" ""))
(progn
(setq data (atof (substr item 1 (1- count))))
(repeat (atoi (substr item (1+ count)))
(setq itemlist (append itemlist (list data))))
(setq count (1+ slength) flag nil)
);progn
(setq count (1+ count))
);if
);while
(if flag
(setq temp (append temp (list (atof item))))
(setq temp (append temp itemlist))
);if-flag
);foreach
temp
));if-progn
);release
(setq #k (getvar "clayer")) ;;取得当前图层
(setq #os (getvar "osmode"));;得到捕捉设置
(setvar "clayer" "0") ;;切换到图层0
(setvar "osmode" 0) ;;画圆过程必须关闭捕捉
(command "circle" pt 5) ;;画圆
(setvar "clayer" #k) ;;恢复原来图层
(setvar "osmode" #os) ;;恢复捕捉设置
以上就是关于autocad中lisp程序,图形中框选之后如何采集插入块的信息用selection函数吗如何用求代码!谢谢全部的内容,包括:autocad中lisp程序,图形中框选之后如何采集插入块的信息用selection函数吗如何用求代码!谢谢、如何通过 cad 里面的lisp 获得数据;该如何书写、CAD lisp 求助一段代码实现在进行 *** 作之前获取图层信息等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)