jh1005 发表于 2009-2-25 22:54:00

[求助]动态引线的箭头方向怎么判断?(已解决)

本帖最后由 作者 于 2009-2-27 22:37:14 编辑 <br /><br /> <p>&nbsp;想弄一个引线会跟着鼠标移动走的,用来做局部放大用,但当鼠标移到对象的另一边时,引线就反了,请问怎样可以把左边那个改成像右边那个一样?有劳诸位大侠,谢谢!!</p><p>还有,鼠标的十字线能不能暂时隐藏掉?</p><p></p>

xshrimp 发表于 2009-2-27 21:44:00

增加一句就可以了.
(vla-put-VerticalTextPosition Leader 1)

(defun c:test (/ ent mspace i m wenzi a b c d aa bb cc dd ee ff gg leader)
(setq ent (car (entsel)));;选择对象
(setq mspace (vla-get-modelspace (vla-get-activedocument (vlax-get-acad-object))))
(setq i T)
(while i
(setq a (grread T 4 0) b (car a) c (cadr a))      ;;b=5移动,b=3左键,c=0右键,;;c=13回车,c=32空格
(cond ((= b 5)                                    ;当鼠标移动时            
      (setq a (trans (cadr a) 1 0))               ;;鼠标移动点
      (setq d (vlax-curve-getclosestpointto ent a)) ;;a到对象ent的最近点
      (setq aa (car a) bb (cadr a) cc (caddr a))    ;;提取 a 的x,y,z
      (setq dd (car d) ee (cadr d) ff (caddr d))    ;;提取 d 的x,y,z
      ;;★创建引线★
      (setq gg (vlax-make-safearray vlax-vbDouble '(0 . 5)))
      (vlax-safearray-fill gg (list dd ee ff aa (- (cadr a) 2) cc));;填满gg
   (if (not Leader);;如果leader为空
         (progn
         (setq m (vla-AddMText mspace (vlax-3d-point (list aa (- (cadr a) 1.5))) 0 "A")) ;;创建文字A
         (setq wenzi (vlax-make-safearray vlax-vbString '(1 . 9)))
         (vlax-safearray-fill wenzi '("TopLeft" "TopCenter" "TopRight" "MiddleLeft"
         "MiddleCenter" "MiddleRight" "BottomLeft" "BottomCenter" "BottomRight")) ;;填满wenzi
         (setq Leader (vla-AddLeader mspace gg m acLineWithArrow));;创建有箭头的引线
         ) ;;end_progn
       );;end_if
    (if (<= aa dd) ;;如果鼠标移动点的x坐标值小于等于最近点的X坐标值
      (vla-put-AttachmentPoint m 9)   ;;更改文字的贴附点为9(右下角)
      (vla-put-AttachmentPoint m 7)   ;;更改文字的贴附点为7(左下角)
    );;end_if
(vla-put-InsertionPoint m (vlax-3d-point (list aa (- (cadr a) 1.5))));;更新文字插入点
(vla-put-Coordinates Leader gg)   ;;更新引线插入点
(vla-put-VerticalTextPosition Leader 1)

) ;;end_cond第一个括号
((= b 3) (setq i nil)) ;;左键结束while(cond第二个括号)
) ;;end_cond
) ;;end_while
(princ)
)

jh1005 发表于 2009-3-2 19:52:00

本帖最后由 作者 于 2009-3-2 19:55:40 编辑 <br /><br /> userzhl发表于2009-3-1 21:45:00static/image/common/back.gif可不可以改成这样?

<p></p>(defun C:as ()&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;;水平--垂直标注互换&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br/>(Setvar "CMDECHO" 0)<br/>(if (and (= (getvar "dimtoh") 0) (= (getvar "dimtih") 0))<br/>&nbsp;&nbsp;&nbsp; (progn <br/>&nbsp;&nbsp;&nbsp; (Setvar "dimtoh" 1)<br/>&nbsp;&nbsp;&nbsp;&nbsp; (Setvar "dimtih" 1)<br/>&nbsp; (prompt "\n水平标注")<br/>&nbsp;)<br/>&nbsp;(progn <br/>&nbsp;&nbsp;&nbsp; (Setvar "dimtoh" 0)<br/>&nbsp;&nbsp;&nbsp;&nbsp; (Setvar "dimtih" 0)<br/>&nbsp; (prompt&nbsp; "\n与尺寸线对齐")<br/>&nbsp;)<br/>&nbsp;)<br/>(princ)<br/>)

leon904828888 发表于 2018-4-7 22:58:15

9年前的讨论就这么高的质量,佩服

jh1005 发表于 2009-2-27 22:47:00

谢谢<strong><font face="Verdana" color="#61b713">xshrimp</font></strong>!!原来就差一句,我弄了很久都没弄出来,函数认识太少了。

userzhl 发表于 2009-3-1 21:45:00

本帖最后由 作者 于 2009-3-2 8:26:34 编辑

可不可以改成这样?

hstea 发表于 2009-3-2 14:39:00

可以把它改成文字由列表选择或者键盘输入吗?

samshs 发表于 2009-3-2 22:54:00

hstea发表于2009-3-2 14:39:00static/image/common/back.gif可以把它改成文字由列表选择或者键盘输入吗?

<p>加上這個就可以键盘输入啦</p><p>(setq ssde (getstring "请输入文字: "))</p>

userzhl 发表于 2009-3-3 01:00:00

如我第四楼上所说的,如何可以自动标注圆弧半径呢?

userzhl 发表于 2009-3-17 00:22:00

这个程序好像在图纸空间不行哦,而且,想问下,如何定义文字的大小呢?

carrot1983 发表于 2009-3-17 09:07:00

userzhl发表于2009-3-17 0:22:00static/image/common/back.gif这个程序好像在图纸空间不行哦,而且,想问下,如何定义文字的大小呢?(setq mspace (vla-get-modelspace    (vla-get-activedocument    (vlax-get-acad-object))))
改成:

;;By carrot1983
(defun CAI-SPACE (/ SPACE ACADDCC)
(setq ACADDCC (vla-get-activedocument
    (vlax-get-acad-object)
)
)
(if (and
(= (getvar "tilemode") 0)
(= (getvar "cvport") 1)
      )
    (setq SPACE (vla-get-paperspace ACADDCC))
    (setq SPACE (vla-get-modelspace ACADDCC))
)
SPACE
)


(CAI-SPACE)
页: [1] 2 3
查看完整版本: [求助]动态引线的箭头方向怎么判断?(已解决)