此例程是我为等距标注编写的程序的一部分,因此可以删除一些线或需要进行一些修改。例如,我使用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 |