raymarcher 发表于 2022-7-5 22:16:11

实体到网格LISP

我制作了一些脚本来处理实体。
前三种方法有效,但第三种方法无法使用meshsnmooth将实体转化为网格。
有人能帮忙吗?
 
SOLIDS ERASE

(
(setvar "qaflags" 1)
(setq SolidsErase (ssget "X" '((0 . "3dsolid"))))
(command "ERASE" SolidsErase "")
(setvar "qaflags" 0)
)


SOLIDS OFFSET BASE POINT

(
(setvar "qaflags" 1)
(setq SolidsOffset (ssget "X" '((0 . "3dsolid"))))
(command "MOVE" SolidsOffset "" "0,0,0" "5,5,0")
(setvar "qaflags" 0)
)


SOLIDS OFFSET DISPLACEMENT

(
(setvar "qaflags" 1)
(setq SolidsOffset (ssget "X" '((0 . "3dsolid"))))
(command "MOVE" SolidsOffset "" "" "2,2,2")
(setvar "qaflags" 0)
)


SOLIDS TO MESH

(
(setq SolidsToMesh (ssget "X" '((0 . "3dsolid"))))
(command "MESHSMOOTH" SolidsToMesh "")
)
 
谢谢

GP_ 发表于 2022-7-5 22:27:48

试试这个:
 
(vl-load-com)
(vla-SendCommand
   (vla-get-ActiveDocument (vlax-get-acad-object))
   (strcat "MESHSMOOTH" " " "(ssget \"X\" '((0 . \"3dsolid\")))" " " " ")
)

raymarcher 发表于 2022-7-5 22:39:32

谢谢,我会让你知道它是否有效。
 
是否有必要使用visual lisp?
我想在autolisp中保持简单。

hmsilva 发表于 2022-7-5 22:50:19

 
在这一侧(仅在AutoCAD 2010中测试)

(setq SolidsToMesh (ssget "X" '((0 . "3dsolid"))))
(command "MESHSMOOTH" SolidsToMesh "")
按预期工作。
 
亨里克

GP_ 发表于 2022-7-5 22:51:54

 
 
 
 
亨里克,代码是一样的。
它在我的A2014上不起作用。

hmsilva 发表于 2022-7-5 23:07:31

 
 
您好,GP,
 
 
我知道代码是一样的,我只是对OP说,这是AC2010中预期的工作代码。。。
在你回复后,我在另一台机器上用AC2012和AC2014测试了OP代码,在所有版本中都正常工作。。。
 
 
亨里克

GP_ 发表于 2022-7-5 23:12:02

嗨,Henrique,
 
在我的AC2014中,OP的代码仅适用于原始实体。

hmsilva 发表于 2022-7-5 23:20:20

 
Gian Paolo,
 
我只测试了原始固体。。。
 
在AC2014中,在没有原始实体的情况下,只有按照您的建议使用vla SendCommand才能正常工作。
 
干杯
亨里克
页: [1]
查看完整版本: 实体到网格LISP