为什么我在布局空间用vla-addtext插入的文字都跑到了原点???
本帖最后由 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)
) 第一次编写布局空间的程序,什么都不太懂,大家指导指导!
页:
[1]