欢迎来到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)
|