关于动态索引文字的实现
本帖最后由 包哥 于 2023-7-10 20:18 编辑题目大概是这样的:拾取一个圆,给出直径动态索引标注,如下图GIF演示,主要是动态文字如何实现,在确定索引转折点之前,必须实时显示,不能是拾取索引转折点之后才显示。
把你的源程序放出来改改就可以了 liuhe 发表于 2023-7-11 08:36
把你的源程序放出来改改就可以了
(DEFUN C:tt ()
(setq ss (ssadd))
(VL-LOAD-COM)
(setvar "osmode" 0)
(if (= nil (tblsearch "style" "索引文字"))
(command "-style" "索引文字" "黑体" 300 0.70 0 "n" "n")
)
(command "layer" "m" "结-大样文字" "c" "7" "" "lt" "CONTINUOUS" "" "")
(command "clayer" "结-大样文字")
(prompt "\n<<请框选需要索引的一个圆>>:")
(setq ss (ssget '((0 . "CIRCLE"))))
(setq cen (cdr (assoc 10 (entget (ssname ss 0))))) ;圆心
(setq rr (cdr (assoc 40 (entget (ssname ss 0))))) ;半径
(command "undo" "be")
(SETQ LOOP T)
(PROMPT "\n<请指定索引线转折点: >")
(WHILE LOOP
(SETQ GR (GRREAD T 15 2))
(SETQ CODE (CAR GR))
(SETQ GBWZ (CADR GR))
(COND
((OR (= CODE 3) (= CODE 25) (= CODE 2))
(SETQ LOOP NIL)
)
((= CODE 5) ;移动鼠标动作
(redraw) ;视图更新
(setq GBWZ (cadr GR)) ;光标所在位置点(即索引线转折点)
(if (>= (car GBWZ) (car cen)) ;如果鼠标位置在圆心的右侧
(SETQ SYZD (h-xiayidian GBWZ 2300 0)) ;程序自动确定索引线终点,水平索引段默认2300长
(SETQ SYZD (h-xiayidian GBWZ -2300 0)) ;程序自动确定索引线终点,水平索引段默认2300长
)
(grdraw cen GBWZ 252 252) ;将圆心和索引线转折点连接,绘制斜向跟踪线
(grdraw GBWZ SYZD 252 252) ;将圆心和索引线转折点连接,绘制水平跟踪线
)
)
)
(redraw)
(entmake (list '(0 . "LINE") (cons 8 "结-大样文字") (cons 10 cen) (cons 11 GBWZ))) ;画第一段索引线(斜线)
(entmake (list '(0 . "LINE") (cons 8 "结-大样文字") (cons 10 GBWZ) (cons 11 SYZD))) ;画第二段索引线(水平线)
(if (and (>= (atof (angtos (angle GBWZ SYZD))) 0) (<= (atof (angtos (angle GBWZ SYZD))) 90))
(h-wz1 (polar SYZD (+ (angtof "90") (angle GBWZ SYZD)) 80) (angtos (angle GBWZ SYZD)) (strcat "圆的直径=" (rtos (* 2.0 rr) 2 0))) ;书写索引文字,右下对齐
(h-wz2 (polar SYZD (+ (angtof "90") (angle SYZD GBWZ)) 80) (angtos (angle SYZD GBWZ)) (strcat "圆的直径=" (rtos (* 2.0 rr) 2 0))) ;书写索引文字,左下对齐
)
(command "undo" "e")
(setvar "osmode" 16383)
(PRINC)
)
(defun h-xiayidian (ppt1 deltax deltay)
(list (+ (car ppt1) deltax) (+ (cadr ppt1) deltay))
)
(defun h-wz1 (ppt1 jiaodu neirong)
(command "textstyle" "索引文字")
(command "text" "j" "BR" ppt1 jiaodu neirong)
(princ)
)
(defun h-wz2 (ppt1 jiaodu neirong)
(command "textstyle" "索引文字")
(command "text" "j" "BL" ppt1 jiaodu neirong)
(princ)
)
(PRINC) 目前只能实现这种效果,文字不能跟随鼠标动态显示
比较基础,一个jig,另外,提问时要注明想要什么语言,这是cad二次开发论坛,不是lisp论坛
attach://128327.flv
原程序已经很好的实现了,别搞那些花里胡哨的东西为好 已实现,谢谢各位! liuhe 发表于 2023-7-11 08:36
把你的源程序放出来改改就可以了
感谢{:1_1:} d1742647821 发表于 2023-7-11 11:19
比较基础,一个jig,另外,提问时要注明想要什么语言,这是cad二次开发论坛,不是lisp论坛
好的,下次注意{:1_1:} 包哥 发表于 2023-7-11 11:42
已实现,谢谢各位!
贴出修改的学习一下吧
页:
[1]