philk 发表于 2022-7-6 10:08:01

点样式

大家好,有人知道如何将大约1000个点变成我可以使用的实体/圆/甜甜圈吗。

eldon 发表于 2022-7-6 10:12:46

如果您访问Jeffery P Sanders的网站,会发现一个名为NodeSert的lisp,它将在图形中的每个节点插入一个块。如果使用所选实体生成块,则可以在使用lisp后分解所有块。

Tharwat 发表于 2022-7-6 10:15:41

这是我的,我只是为你做的。

(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)
)

 
塔瓦特

Lee Mac 发表于 2022-7-6 10:19:23

谢谢,我也用这个!

stevesfr 发表于 2022-7-6 10:23:41

很好谢谢

philk 发表于 2022-7-6 10:24:00

 
很高兴你喜欢。
 
随时欢迎你。
 
塔瓦特

philk 发表于 2022-7-6 10:29:53

嗨,塔瓦,
 
干得好
 
我更倾向于使用这样的方法来保留原始点的图层/线型/线宽等属性:
 

(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)
)

 
此外,我建议在从图形中删除点之前,检查圆的创建是否成功。
 
只是一些建设性的批评

philk 发表于 2022-7-6 10:31:11

 
谢谢李。
 
但是,既然您没有使用(cdr(assoc 8 el))来实现这一点,那么如何保留图层/线型/线宽呢?
 
在删除点之前检查圆的创建,这确实是一个非常好的主意。我喜欢它。
 
你在entmakex中使用(apply'append(subst…)的方法确实展示了你对代码的深刻理解。很幸运,这很好。
 
塔瓦特

Tharwat 发表于 2022-7-6 10:34:45

 
代码使用点的DXF数据中已经存在的值-只需替换必要的部分,使DXF数据成为可以表示圆的数据。
 
 
谢谢Tharwat,但我不能承担全部责任-使用(subst nil…)是一种在不使用Visual LISP函数的情况下删除列表项的技术,我以前在其他地方见过这种函数,因此将其应用于这种情况-我通常可能使用vl remove if或vl remove

designerstuart 发表于 2022-7-6 10:36:58

 
假设当前层不是放置点的同一层,因此创建的圆将是
在当前图层名称下创建。我说得对吗?
页: [1] 2
查看完整版本: 点样式