明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 445|回复: 9

关于动态索引文字的实现

[复制链接]
发表于 2023-7-10 20:10 | 显示全部楼层 |阅读模式
10明经币
本帖最后由 包哥 于 2023-7-10 20:18 编辑

题目大概是这样的:拾取一个圆,给出直径动态索引标注,如下图GIF演示,主要是动态文字如何实现,在确定索引转折点之前,必须实时显示,不能是拾取索引转折点之后才显示。
附件: 您需要 登录 才可以下载或查看,没有账号?注册

最佳答案

查看完整内容

把你的源程序放出来改改就可以了
发表于 2023-7-10 20:10 | 显示全部楼层
把你的源程序放出来改改就可以了
回复

使用道具 举报

 楼主| 发表于 2023-7-11 09:52 | 显示全部楼层
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)
回复

使用道具 举报

 楼主| 发表于 2023-7-11 09:55 | 显示全部楼层
目前只能实现这种效果,文字不能跟随鼠标动态显示

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
回复

使用道具 举报

发表于 2023-7-11 11:19 | 显示全部楼层

比较基础,一个jig,另外,提问时要注明想要什么语言,这是cad二次开发论坛,不是lisp论坛



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
回复

使用道具 举报

发表于 2023-7-11 11:31 | 显示全部楼层
原程序已经很好的实现了,别搞那些花里胡哨的东西为好
回复

使用道具 举报

 楼主| 发表于 2023-7-11 11:42 | 显示全部楼层
已实现,谢谢各位!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
回复

使用道具 举报

 楼主| 发表于 2023-7-11 11:48 | 显示全部楼层
liuhe 发表于 2023-7-11 08:36
把你的源程序放出来改改就可以了

感谢
回复

使用道具 举报

 楼主| 发表于 2023-7-11 11:50 | 显示全部楼层
d1742647821 发表于 2023-7-11 11:19
比较基础,一个jig,另外,提问时要注明想要什么语言,这是cad二次开发论坛,不是lisp论坛

好的,下次注意
回复

使用道具 举报

发表于 2023-8-15 17:29 | 显示全部楼层
包哥 发表于 2023-7-11 11:42
已实现,谢谢各位!

贴出修改的学习一下吧
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-5-6 09:01 , Processed in 2.289207 second(s), 22 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表