本帖最后由 weilu 于 2015-7-20 11:11 编辑
试着编了一个布局空间输入页码的一个小程序,有几个问题
1:我想选择TEXT或MTEXT类型的,这个“或”的意思在vlisp里怎么实现?
2:文字是能写到布局空间,但是一直在原点,不在我想要的位置,怎么回事?
怎么没人来呢,求指导!~~~
代码如下: - (defun C:BJKJ()
- (vl-load-com)
- (setvar "cmdecho" 0)
- (setvar "osmode" 0)
- (setq AcadObj (vlax-get-acad-object))
- (setq AcadDoc (vla-get-ActiveDocument AcadObj))
- (setq mSpace (vla-get-ModelSpace AcadDoc))
- (setq pSpace (vla-get-PaperSpace AcadDoc))
- (setq layouts (vla-get-layouts AcadDoc))
- (setq prefix "U-" num 0);;;前缀
- (vlax-for layout layouts
- (if (/= "Model" (vla-get-name layout))
- (progn (vla-put-name layout (strcat prefix (itoa (1+ num))))
- (setq block (vla-get-block layout))
- (setq setObj (vla-add (vla-get-SelectionSets AcadDoc) "SSET"));;;建立选择集
- (setq pt1 (vlax-3D-point (list 378 287 0)) pt2 (vlax-3D-point (list 382 280 0)))
- (setq gpCode (vlax-make-safearray vlax-vbInteger '(0 . 0)))
- (vlax-safearray-fill gpCode (list 0))
- (setq dataValue (vlax-make-safearray vlax-vbVariant '(0 . 0)))
- (vlax-safearray-fill dataValue (list "TEXT"))
- (setq mode acSelectionSetCrossing)
- (vla-Select setObj mode pt1 pt2 gpCode dataValue)
- (if (eq setObj :vlax-true) (vla-Erase setObj) );;;若存在文字则删之
- (setq pt (vlax-3D-point (list 380 283.5 0)))
- (setq textObj (vla-AddText block (itoa (1+ num)) pt 3.0));;;输入文字
- (vla-put-Alignment textObj acAlignmentMiddleCenter)
- (vla-put-Layer textObj "文本")
- (vla-put-Color textObj acRed)
- (vla-put-LineType textObj "Continuous")
- (setq num (1+ num))
- (vla-Delete setObj)
- )) );;;~vlax-for
- (princ)
- )
|