点样式
大家好,有人知道如何将大约1000个点变成我可以使用的实体/圆/甜甜圈吗。 如果您访问Jeffery P Sanders的网站,会发现一个名为NodeSert的lisp,它将在图形中的每个节点插入一个块。如果使用所选实体生成块,则可以在使用lisp后分解所有块。 这是我的,我只是为你做的。(defun c:Pt2Circles (/ ss)
; Tharwat Nov 25 . 2010
(if (setq ss (ssget "_:L" '((0 . "POINT"))))
((lambda (i / a )
(while
(setq a (ssname ss (setq i (1+ i))))
(entmakex (list (cons 0 "CIRCLE")
(cons 10 (cdr (assoc 10 (entget a))))
(cons 40 0.2))); <-- You can change the Radius of the Circles
(entdel a)
)
)
-1
)
(princ "\nNo points selected")
)
(princ)
)
塔瓦特 谢谢,我也用这个! 很好谢谢
很高兴你喜欢。
随时欢迎你。
塔瓦特 嗨,塔瓦,
干得好
我更倾向于使用这样的方法来保留原始点的图层/线型/线宽等属性:
(defun c:Pt2Circles (/ ss)
; Tharwat Nov 25 . 2010
(if (setq ss (ssget "_x" '((0 . "POINT"))))
((lambda (i / a ss1)
(while
(setq a (ssname ss (setq i (1+ i))))
(setq ss1 (ssadd))
(ssadd (entmakex (list (cons 0 "CIRCLE")
(cons 10 (cdr (assoc 10 (entget a))))
(cons 40 0.2)))
ss1)
(command "_.-hatch" "_p" "_solid" "_s" ss1 "" "")
(entdel a)
)
)
-1
)
(princ "\nNo points selected")
)
(princ)
)
此外,我建议在从图形中删除点之前,检查圆的创建是否成功。
只是一些建设性的批评
谢谢李。
但是,既然您没有使用(cdr(assoc 8 el))来实现这一点,那么如何保留图层/线型/线宽呢?
在删除点之前检查圆的创建,这确实是一个非常好的主意。我喜欢它。
你在entmakex中使用(apply'append(subst…)的方法确实展示了你对代码的深刻理解。很幸运,这很好。
塔瓦特
代码使用点的DXF数据中已经存在的值-只需替换必要的部分,使DXF数据成为可以表示圆的数据。
谢谢Tharwat,但我不能承担全部责任-使用(subst nil…)是一种在不使用Visual LISP函数的情况下删除列表项的技术,我以前在其他地方见过这种函数,因此将其应用于这种情况-我通常可能使用vl remove if或vl remove
假设当前层不是放置点的同一层,因此创建的圆将是
在当前图层名称下创建。我说得对吗?
页:
[1]
2