jasonle215 发表于 2022-7-5 18:47:16

entmake甜甜圈

大家好,
 
你能帮我做块面包圈吗,我不熟悉autolisp语法。。。
 
块仅包含一个甜甜圈,中心位于(0,0)
甜甜圈是黄色的,内径是0mm,外径是50mm。
 
非常感谢你。这个论坛帮了我很多,谢谢管理员和mods

Dadgad 发表于 2022-7-5 18:53:23

jason,你真的需要Lisp程序吗?
为什么不使用圆环命令创建一个呢!最多0秒,包括找出它的时间,然后使用Wblock命令将其转换为块?

jasonle215 发表于 2022-7-5 18:57:02

 
我正在尝试制作一个lisp,它可以自动化一系列的事情,并将所有的事情放在一起,这样你只需要点击几下就可以完成工作,而不是停下来用甜甜圈创建一个块。这可以提高效率

Dadgad 发表于 2022-7-5 19:00:56

我建议制作一个块的唯一原因是为了方便下次重用,例如,您可以将其从工具选项板拖到绘图中。如果位置和圆环始终相同,则可以将其另存为。dwt也是。
 
另一种方法是使用动作录制器,保存动作宏,非常简单,不需要编码。
你熟悉动作记录器吗?
 
忍不住要问,因为您似乎很容易接受使用动态块作为lisp的替代方案的概念,在Autocad中有很多不同的方法。
 
你最近有没有重访过你的动态块线程?

rlx 发表于 2022-7-5 19:01:50

此例程是我为等距标注编写的程序的一部分,因此可以删除一些线或需要进行一些修改。例如,我使用vla addEllipse,您需要添加圆,并且可以删除addLine。我需要一个实心箭头,一个甜甜圈,但在等轴测中,这将是一个椭圆。Thanx告诉李,他向我指出了命令vla appendouterloop,我想到了制作一个等距椭圆,然后用实心图案填充它的想法。
 
 

(defun RlxIso_CreateSolidDotArrow ( blkname / acObj docObj spcObj hatObj linObj ellObj blkObj)
(setq acObj (vlax-get-acad-object) docObj (vla-get-ActiveDocument acObj))
(setq spcObj (vlax-get-property docObj (if (= 1 (getvar 'cvport)) 'paperspace 'modelspace)))
(setq hatObj (vla-AddHatch spcObj acHatchPatternTypePreDefined "solid" :vlax-True))
(setq linObj (vla-addline spcObj (vlax-3d-point -0.377964 0.0 0.0)(vlax-3d-point -1 0.0 0.0)))
;vla-addEllips <space> <center> (= dxf 10) <major axis> (= dxf 11) <radius ratio> (= dxf 40)
;ellipse major ax 1 @ 0,0 , minor ax 0.5 , rotate 30 degrees
(setq ellObj (vla-AddEllipse spcObj (vlax-3d-point 0 0 0)
(if (wcmatch blkname "*330")
    (vlax-3d-point -0.433013 0.25 0.0) (vlax-3d-point -0.433013 -0.25 0.0)) 0.5))
(vla-appendouterloop hatObj
   (vlax-make-variant (vlax-safearray-fill (vlax-make-safearray vlax-vbobject '(0 . 0)) (list ellObj))))
(vla-Evaluate hatObj)
(setq blkobj (vla-add (vla-get-blocks docObj) (vlax-3d-point 0 0 0) blkname))
(vla-copyobjects docObj
   (vlax-safearray-fill (vlax-make-safearray vlax-vbobject '(0 . 1)) (list hatObj linObj)) blkObj)
(mapcar 'vla-delete (list hatObj ellObj linObj))
(mapcar '(lambda(x)(vl-catch-all-apply 'vlax-release-object (list x)))
(list acObj docObj spcObj hatObj linObj ellObj blkObj)))



 
 
我希望代码的某些部分能够满足您的需要。
 
 
Gr.Rlx

eldon 发表于 2022-7-5 19:07:41

也许这条线索会有一些用处。
 
我认为一个圆环会给你一个3D甜甜圈,但你可以用它来做果酱或奶油冻

rlx 发表于 2022-7-5 19:10:14

如果你想要更简单的东西:
 
 
http://forums.autodesk.com/t5/visual-lisp-autolisp-and-general/entmake-for-a-quot-donut-quot/td-p/860457
 
 
gr.R。

Dadgad 发表于 2022-7-5 19:14:41

 
如果有人对我说甜甜圈,我的大脑(剩下的部分)会自动进入3D建模模式,这与我的男孩形象不同。我强烈希望删除它,并在适当的时候将其制作成一块。
 
一大杯我著名的微温咖啡来冲下去也不会有什么害处!
 
一个中心半径为零的二维甜甜圈与一个圆不是有着惊人的相似之处吗?
 
你发布的链接看起来确实很中肯。
 
除了画油炸圈饼,还有其他人使用过圆环命令吗?

David Bethel 发表于 2022-7-5 19:18:16

下面是如何制作块(“测试”)并插入(@10,20,0),其中包含(1)多段线双螺母内半径0:外半径50
 

(entmake (list (cons 0 "BLOCK")(cons 2 "TEST")(cons 70 0)(list 10 0 0 0)))
(entmake (list (cons 0 "POLYLINE")(cons 8 "0")(cons 66 1)(cons 10 (list 0 0 0))(cons 40 50)(cons 41 50)))
(entmake (list (cons 0 "VERTEX")(cons 8 "0")(cons 10 (list 25 0 0))(cons 40 50)(cons 41 50)(cons 42 1)))
(entmake (list (cons 0 "VERTEX")(cons 8 "0")(cons 10 (list -25 0 0))(cons 40 50)(cons 41 50)(cons 42 1)))
(entmake (list (cons 0 "VERTEX")(cons 8 "0")(cons 10 (list 25 0 0))(cons 40 50)(cons 41 50)(cons 42 -1)))
(entmake (list (cons 0 "SEQEND")(cons 8 "0")))
(entmake (list (cons 0 "ENDBLK")(cons 8 "0")))
(entmake (list (cons 0 "INSERT")(cons 2 "TEST")(cons 8 "0")(list 10 10 20 0)))

 
 
也可以使用LW多段线
 
-大卫
HTH-David

iconeo 发表于 2022-7-5 19:19:13

我越来越好奇杰森在做什么。从他的帖子中,我似乎看不到它的图片。。。
页: [1] 2
查看完整版本: entmake甜甜圈