rlx 发表于 2022-7-5 22:14:58

entmake实心椭圆

我正在构建一个等距标注的应用程序。我可以毫无问题地制作所有正常的箭头。我还可以画一个椭圆。但当我试图做一个实心椭圆时,我被卡住了。最后,我想把实心椭圆(或图案填充)嵌入到一个块中。
 
 
 
当我绘制椭圆并创建其实体图案填充时,我看到以下数据:
 
选择对象:(-1。)(0.HATCH)(330.7ef01cf8>)(5.22AC)(100.AcDbEntity)(67.0)(410.Model)(8.0)(100。
AcDbHatch)(10 0.0 0.0 0.0)(210 0.0 0.0 1.0)(2.实心)(70.1)(71.1)(91)
. 1) (92.1)(93.1)(72.3)(10 0.0 0.0 0.0)(11-0.612372 3.74958e-017)
0.0)(40.0.57735)(50.0.0)(51.6.28319)(73.1)(97.1)(330。名称:7ef03488>)(75.1)(76.1)(98.1)(10.0.0.0)(450.0)(451)。
0) (460 . 0.0) (461 . 0.0) (452 . 0) (462 . 1.0) (453 . 2) (463 . 0.0) (63 . 5)
(421.255)(463.1.0)(63.2)(421.16776960)(470.线性))
 
第97组之后是椭圆的名称。因此,我创建了椭圆,并尝试将其实体编号作为330组添加到图案填充的entmake中。这似乎是不可能的。
 
唯一的其他方法似乎是将椭圆转换为点列表或仅使用标准autocad命令,但我只想知道是否有可能将实体名称作为边界数据传递给entmake。
 
任何人
 
 
RLX公司

Lee Mac 发表于 2022-7-5 22:25:12

欢迎来到CADTutor rlx
 
虽然理论上可以使用entmake(x)实现,但使用Visual LISP的ActiveX(COM)方法生成图案填充实体要容易得多-下面是一个快速示例来演示:

(defun c:hatchtest ( / cen hat maj mni rat spc )
   (if
       (and
         (setq cen (getpoint   "\nSpecify ellipse center: "))
         (setq maj (getpoint cen "\nSpecify major axis endpoint: "))
         (setq mni (getpoint cen "\nSpecify minor axis length: "))
       )
       (progn
         (if (< 1.0 (setq rat (/ (distance cen mni) (distance cen maj))))
               (mapcar 'set
                  '( mni maj rat )
                   (list maj mni (/ 1.0 rat))
               )
         )
         (vla-appendouterloop
               (setq hat
                   (vla-addhatch
                     (setq spc
                           (vlax-get-property (vla-get-activedocument (vlax-get-acad-object))
                               (if (= 1 (getvar 'cvport))
                                 'paperspace
                                 'modelspace
                               )
                           )
                     )
                     achatchpatterntypepredefined
                     "SOLID"
                     :vlax-true
                     achatchobject
                   )
               )
               (vlax-make-variant
                   (vlax-safearray-fill (vlax-make-safearray vlax-vbobject '(0 . 0))
                     (list
                           (vla-addellipse spc
                               (vlax-3D-point (trans cen 1 0))
                               (vlax-3D-point (trans (mapcar '- maj cen) 1 0))
                               rat
                           )
                     )
                   )
               )
         )
         (vla-evaluate hat)
       )
   )
   (princ)
)
(vl-load-com) (princ)

rlx 发表于 2022-7-5 22:36:46

我不经常这么说(实际上从来没有),但你真的是我的英雄!你是不是一个智商很高的外星人
 
 
thanx人!

Lee Mac 发表于 2022-7-5 22:46:32

感谢您对rlx的恭维,您能这么说真是太好了-
但是,在伟大的计划中涉及到编程的地方,我只是一条大池塘里的小鱼

hanhphuc 发表于 2022-7-5 22:55:15

你不是!!因为我们其他人不想成为蝌蚪或幼虫
你是我们当中的巨鲸!!!

Lee Mac 发表于 2022-7-5 23:06:19

 
哈哈谢谢hanhphuc
我的观点是,AutoLISP只是编程冰山的一角

rlx 发表于 2022-7-5 23:14:16

https://www.cadtutor.net/forum/attachment.php?attachmentid=51528&cid=1&stc=1
 
我在荷兰卑尔根op Zoom的sabic(前GE)工作,我的同事们仍然在使用isomectric,手工剪切和粘贴尺寸,所以我决定做些什么,并建立了一个界面,但“点”阻碍了我的路哈哈,不再是李的X了。
 
 

Lee Mac 发表于 2022-7-5 23:21:36

看起来很好rlx-做得好!
页: [1]
查看完整版本: entmake实心椭圆