明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 5451|回复: 20

[讨论] 新手自制的第一个lisp插件:坐标标注。(2022-08-06更新)

  [复制链接]
发表于 2015-12-23 13:17:06 | 显示全部楼层 |阅读模式
本帖最后由 ThinkerHua 于 2022-8-6 09:33 编辑

2022-08-06更新:
心血来潮做了一些略微改进。
1、原程序执行过程中按esc提前结束,有可能导致下次无法正常运行,已修复。
2、原程序预览时,多段线是不断删除重绘实现预览的,现在改为更新数据实现。
3、添加了一个简单的错误处理函数,在某些情况下需要主动结束程序时,输出自定义错误信息。

  1. ;;;全局变量:fh为文字高度, sc为标注比例, pre为坐标值精度, exc为交换X Y坐标标记
  2. (princ "启动命令:ZB")
  3. (princ "  功能:坐标标注")
  4. (princ "  作者:Thinker(ThinkerHua@hotmail.com)")
  5. (defun c:zb (/ pa pb pc ta tb X Y tbox_x tbox_y sl DimZin_Old mouse engl_t1 engl_t2 engl_pl
  6.              err_msg fh_old sc_old pre_old
  7.             )
  8.     ;;;pa pb pc为引线(多段线)顶点, ta tb为文字基点
  9.     ;;;X Y为坐标, tbox_x tbox_y为判断文字对象长度用临时坐标存储器
  10.     ;;;sl为文字对象长度(亦即引线水平段长)
  11.     ;;;DimZin_Old为环境变量临时存储器
  12.     ;;;mouse为动态预览时grread返回值(获取坐标用)
  13.     ;;;engl_t1 engl_t2 engl_pl为文字、引线的资料串行(动态预览时不断更新)
  14.     ;;;fh_old sc_old pre_old为对应全局变量的临时存储器

  15.     ;;;错误处理函数
  16.     (defun *Error* (msg)
  17.         (if (= msg "quit / exit abort")
  18.             (if (/= err_msg nil) (princ err_msg)) ;主动退出时,输出自定义错误信息
  19.             (progn (princ (strcat "\nError:" msg))  ;其他错误发生时,输出错误信息
  20.                    (setq *Error* nil)
  21.             )
  22.         )
  23.     )

  24.     ;;;计算文字插入点和引线末点函数
  25.     (defun poi_calc (sl)
  26.         (if (>= (car pb) (car pa))
  27.             ;插入位置在标注点右侧
  28.             (setq ta (list (car pb) (+ (cadr pb) (/ fh 2)) 0)
  29.                   tb (list (car pb) (- (cadr pb) (/ fh 2)) 0)
  30.                   pc (list (+ (car pb) sl) (cadr pb) 0)
  31.             )
  32.             ;插入位置在标注点左侧
  33.             (setq ta (list (- (car pb) sl) (+ (cadr pb) (/ fh 2)) 0)
  34.                   tb (list (car ta) (- (cadr pb) (/ fh 2)) 0)
  35.                   pc (list (car ta) (cadr pb) 0)
  36.             )
  37.         )
  38.     )

  39.     ;;;程序加载初始化设置
  40.     (if (= fh nil)
  41.         (setq fh 2.5)
  42.     )
  43.     (if (= sc nil)
  44.         (setq sc 0.001)
  45.     )
  46.     (if (= pre nil)
  47.         (setq pre 3)
  48.     )
  49.     (if (= exc nil)
  50.         (setq exc "Y")
  51.     )
  52.     (progn
  53.         (princ "\n当前参数值  字高=")
  54.         (princ fh)
  55.         (princ "  比例=")
  56.         (princ sc)
  57.         (princ "  精度=")
  58.         (princ pre)
  59.         (princ "  交换X Y坐标=")
  60.         (princ exc)
  61.     )

  62.     ;;;指定需标注的点或设置字高、比例、精度、交换X Y坐标
  63.     (setq pa nil)
  64.     (while (= pa nil)
  65.         (initget "F S P E")
  66.         (setq pa (getpoint
  67.                      "\n指定要标注的坐标点 或 [字高(F)/比例(S)/精度(P)/交换X Y坐标(E)]:"
  68.                  )
  69.         )
  70.         (cond
  71.             ((= pa "F")
  72.              (setq pa     nil
  73.                    fh_old fh
  74.              )
  75.              (setq fh (getreal (strcat "\n指定字高<" (rtos fh 2) ">:")))
  76.              (if (= fh nil) (setq fh fh_old))
  77.              (princ (strcat "当前字高=" (rtos fh 2)))
  78.             )
  79.             ((= pa "S")
  80.              (setq pa     nil
  81.                    sc_old sc
  82.              )
  83.              (setq sc (getreal (strcat "\n指定比例<" (rtos sc 2) ">:")))
  84.              (if (= sc nil) (setq sc sc_old))
  85.              (princ (strcat "当前比例=" (rtos sc 2)))
  86.             )
  87.             ((= pa "P")
  88.              (setq pa      nil
  89.                    pre_old pre
  90.              )
  91.              (setq pre (getint (strcat "\n指定精度<" (rtos pre 2 0) ">:")))
  92.              (if (= pre nil) (setq pre pre_old))
  93.              (princ (strcat "当前精度=" (rtos pre 2 0)))
  94.             )
  95.             ((= pa "E")
  96.              (setq pa nil)
  97.              (initget 1 "Y N")
  98.              (setq exc (getkword (strcat "\n是否交换X Y坐标[是(Y)/否(N)]<" exc ">:")))
  99.              (princ
  100.                  (strcat "当前交换坐标="
  101.                          (cond
  102.                              ((= exc "Y") "是")
  103.                              ((= exc "N") "否")
  104.                          )
  105.                  )
  106.              )
  107.             )
  108.             ((= pa nil) (progn (setq err_msg "取消") (quit)))
  109.             (T)
  110.         )
  111.     )

  112.     ;;;获取坐标值
  113.     (setq DimZin_Old (getvar "DimZin"))
  114.     (setvar "DimZin" 1) ;小数末尾0不消除
  115.     (if (= exc "N")
  116.         (setq Y (rtos (* (cadr pa) sc) 2 pre)
  117.               X (rtos (* (car pa) sc) 2 pre)
  118.         )
  119.         (setq X (rtos (* (cadr pa) sc) 2 pre)
  120.               Y (rtos (* (car pa) sc) 2 pre)
  121.         )
  122.     )
  123.     (setvar "DimZin" DimZin_Old) ;恢复环境变量
  124.     (setq X      (strcat "X=" X)
  125.           Y      (strcat "Y=" Y)
  126.           tbox_x (textbox
  127.                      (list
  128.                          '(0 . "text")
  129.                          (cons 40 fh)
  130.                          (cons 1 X)
  131.                          (cons 7 (getvar "textstyle"))
  132.                      )
  133.                  )
  134.           tbox_y (textbox
  135.                      (list
  136.                          '(0 . "text")
  137.                          (cons 40 fh)
  138.                          (cons 1 Y)
  139.                          (cons 7 (getvar "textstyle"))
  140.                      )
  141.                  )
  142.     )
  143.     ;;;根据坐标字符串长度计算引线水平段长度
  144.     (if (>= (car (cadr tbox_x)) (car (cadr tbox_y)))
  145.         (setq sl (car (cadr tbox_x)))
  146.         (setq sl (car (cadr tbox_y)))
  147.     )

  148.     ;;;临时指定文字插入点并计算各个插入点初始值,在程序运行中不断更新
  149.     (setq pb pa)
  150.     (poi_calc sl)
  151.     (princ "\n指定文字插入点:")

  152.     ;;;临时输出文字
  153.     (prin_mtxt ta x fh 7)
  154.     (setq engl_t1 (entget (entlast)))
  155.     (prin_mtxt tb y fh 1)
  156.     (setq engl_t2 (entget (entlast)))

  157.     ;;;临时画引线
  158.     (prin_pl pa pb pc)
  159.     (setq engl_pl (entget (entlast)))

  160.     ;;;实时预览
  161.     (while (= (car (setq mouse (grread t 13 0))) 5)
  162.         (setq pb (cadr mouse))
  163.         (poi_calc sl)
  164.         (progn
  165.             (setq engl_t1 (subst (cons 10 ta) (assoc 10 engl_t1) engl_t1))
  166.             (entmod engl_t1)
  167.             (setq engl_t2 (subst (cons 10 tb) (assoc 10 engl_t2) engl_t2))
  168.             (entmod engl_t2)
  169.             (setq engl_pl (update_point_list_of_LWPOLYLINE
  170.                               engl_pl
  171.                               (list (cons '10 pa) (cons '10 pb) (cons '10 pc))
  172.                           )
  173.             )
  174.             (entmod engl_pl)
  175.         )
  176.     )

  177.     (prin1)
  178. )

  179.         ;;;绘制文字函数
  180. (defun prin_mtxt (point txt fh position)
  181.     (entmake
  182.         (list
  183.             '(0 . "MText")
  184.             '(100 . "AcDbEntity")
  185.             '(100 . "AcDbMText")
  186.             (list 10 (car point) (cadr point))
  187.             (cons 40 fh)
  188.             (cons 71 position)
  189.             (cons 1 txt)
  190.             (cons 7 (getvar "textstyle"))
  191.         )
  192.     )
  193. )

  194.         ;;;绘制引线函数
  195. (defun prin_pl (p1 p2 p3)
  196.     (entmake
  197.         (list '(0 . "LWPOLYLINE")
  198.               '(100 . "AcDbEntity")
  199.               '(100 . "AcDbPolyline")
  200.               (cons 90 3)
  201.               (cons 10 p1)
  202.               (cons 10 p2)
  203.               (cons 10 p3)
  204.         )
  205.     )
  206. )

  207.         ;;;更新LWPOLYLINE顶点列表
  208. (defun update_point_list_of_LWPOLYLINE (pline point_list / new_pline new_point sub_list)
  209.     ;这里假设传入的point_list是符合标准的列表
  210.     ;如果传入的point_list不符合标准,将造成错误,甚至程序崩溃
  211.     ;有必要的话,应当事先将point_list清洗,剔除不标准数据
  212.     (setq new_pline nil)
  213.     (foreach sub_list pline
  214.         (if (and (= 10 (car sub_list)) (/= point_list nil))
  215.             (setq new_point  (car point_list)
  216.                   point_list (cdr point_list)
  217.                   new_pline  (append new_pline (list new_point))
  218.             )
  219.             (setq new_pline (append new_pline (list sub_list)))
  220.         )
  221.     )
  222. )


2016.01.15更新:
1、增加是否交换X Y坐标选项。
2、按网友的回复,使小数不消零。(感谢@wzg356  @香田里浪人)
3、解决特殊情况引线和文字不对齐的问题。
4、文字改为使用多行文字,(X坐标为左下对齐,Y坐标为左上对齐)。且现在文字样式为当前文字样式(前一版为Standard)。
5、添加了预览功能。(感谢@wzg356)
6、对程序进行了模块化的改写。
本次更新,仍然有些不足之处:
1、原先设想中,引线(多段线)是和文本一样不断更新数据以实现预览。但至今仍不知道如何处理,所以暂行的处理方式是,预览中,不断的删除重绘。
2、尚无错误处理机制。
  1. ;;;2016.01.15更新
  2. ;;;pa pb pc为引线(多段线)顶点,ta tb为文字基点(均为全局变量)
  3. ;;;fh为文字高度,sc为标注比例,pre为坐标值精度,exc为交换X Y坐标标记(均为全局变量)
  4. ;;;X Y为坐标,tbox_x tbox_y为判断文字对象长度用临时坐标存储器
  5. ;;;sl为文字对象长度(亦即引线水平段长)
  6. ;;;cyc为循环标记,DimZin_Old为环境变量临时存储器
  7. ;;;mouse为动态预览时grread返回值(获取坐标用)
  8. ;;;engl_t1,engl_t2,engl_pl为文字、引线的资料串行(动态预览时不断更新)
  9. (defun c:zb (/        X         Y  tbox_x   tbox_y    sl
  10.        cyc      DimZin_Old  mouse   engl_t1  engl_t2
  11.        engl_pl
  12.       )

  13. ;;;程序加载初始化设置
  14.   (if (= fh nil)
  15.     (setq fh 2.5)
  16.   )
  17.   (if (= sc nil)
  18.     (setq sc 0.001)
  19.   )
  20.   (if (= pre nil)
  21.     (setq pre 3)
  22.   )
  23.   (if (= exc nil)
  24.     (setq exc "Y")
  25.   )
  26.   (progn
  27.     (princ "******作者:Thinker(ThinkerHua@hotmail.com)******")
  28.     (princ "\n当前参数值   字高:")
  29.     (princ fh)
  30.     (princ "   比例:")
  31.     (princ sc)
  32.     (princ "   精度:")
  33.     (princ pre)
  34.     (princ "   交换X Y坐标:")
  35.     (princ exc)
  36.   )
  37.   (setq DimZin_Old (getvar "DimZin"))
  38.   (setvar "DimZin" 1)

  39. ;;;指定需标注的点或设置字高、比例、精度、交换X Y坐标
  40.   (while (and (= cyc nil) (/= (type pa) 'str))
  41.     (initget "F S P E")
  42.     (setq
  43.       pa
  44.        (getpoint
  45.    "\n指定要标注的坐标点或[字高(F)/比例(S)/精度(P)/交换X Y坐标(E)]:"
  46.        )
  47.     )
  48.     (cond
  49.       ((= pa "F")
  50.        (progn (setq fh (getreal "\n指定字高:"))
  51.         (setq pa nil)
  52.        )
  53.       )
  54.       ((= pa "S")
  55.        (progn (setq sc (getreal "\n指定比例:"))
  56.         (setq pa nil)
  57.        )
  58.       )
  59.       ((= pa "P")
  60.        (progn (setq pre (getint "\n指定精度:"))
  61.         (setq pa nil)
  62.        )
  63.       )
  64.       ((= pa "E")
  65.        (progn (initget 1 "Y N")
  66.         (setq exc (getkword "\n是否交换X Y坐标[是(Y)/否(N)]<Y>:"))
  67.         (setq pa nil)
  68.        )
  69.       )
  70.       ((= pa nil)
  71.       )
  72.       (T (setq cyc T))
  73.     )
  74.   )
  75.   (setq cyc nil)

  76. ;;;获取坐标值
  77.   (if (= exc "N")
  78.     (progn (setq Y (rtos (* (cadr pa) sc) 2 pre))
  79.      (setq X (rtos (* (car pa) sc) 2 pre))
  80.     )
  81.     (progn (setq X (rtos (* (cadr pa) sc) 2 pre))
  82.      (setq Y (rtos (* (car pa) sc) 2 pre))
  83.     )
  84.   )
  85.   (setq X (strcat "X=" X))
  86.   (setq Y (strcat "Y=" Y))
  87.   (setvar "DimZin" DimZin_Old)

  88. ;;;根据坐标字符串长度计算引线水平段长度
  89. ;;;****************************************************************
  90. ;;;2015.12.31 本段代码在极端情况下不能实现引线与文字对齐
  91. ;;;例如X=11111.111,Y=88888.888   ,原因是各字符不等宽
  92. ;;;一般情况均适用,且理论上执行速度比更新后的代码快
  93. ;;;  (setq tbox (textbox (list
  94. ;;;                        '(0 . "text")
  95. ;;;         (cons 40 fh)
  96. ;;;         (cons 1
  97. ;;;           (if (>= (strlen X) (strlen Y))
  98. ;;;                            X
  99. ;;;                            Y
  100. ;;;           )
  101. ;;;                        )
  102. ;;;                      )
  103. ;;;             )
  104. ;;;  )
  105. ;;;  (setq sl (- (car (cadr tbox)) (car (car tbox))))
  106. ;;;****************************************************************
  107. ;;;以下为更新后的代码,任何情况都能实现引线与文字对齐
  108.   (setq  tbox_x (textbox  (list
  109.         '(0 . "text")
  110.         (cons 40 fh)
  111.         (cons 1 X)
  112.         (cons 7 (getvar "textstyle"))
  113.       )
  114.          )
  115.   )
  116.   (setq  tbox_y (textbox  (list
  117.         '(0 . "text")
  118.         (cons 40 fh)
  119.         (cons 1 Y)
  120.         (cons 7 (getvar "textstyle"))
  121.       )
  122.          )
  123.   )
  124.   (if (>= (car (cadr tbox_x)) (car (cadr tbox_y)))
  125.     (setq sl (car (cadr tbox_x)))
  126.     (setq sl (car (cadr tbox_y)))
  127.   )

  128. ;;;临时指定文字插入点并计算各个插入点初始值,在程序运行中不断更新
  129.   (setq pb pa)
  130.   (poi_calc sl)
  131.   (princ "\n指定文字插入点:")

  132. ;;;输出文字
  133.   (prin_mtxt ta x fh 7)
  134.   (setq engl_t1 (entget (entlast)))
  135.   (prin_mtxt tb y fh 1)
  136.   (setq engl_t2 (entget (entlast)))

  137. ;;;画引线
  138.   (prin_pl pa pb pc)
  139.   (setq engl_pl (entget (entlast)))

  140. ;;;实时预览
  141.   (while (= (car (setq mouse (grread t 13 0))) 5)
  142.     (setq pb (cadr mouse))
  143.     (poi_calc sl)
  144.     (progn
  145.       (setq engl_t1 (subst (cons 10 ta) (assoc 10 engl_t1) engl_t1))
  146.       (entmod engl_t1)
  147.       (setq engl_t2 (subst (cons 10 tb) (assoc 10 engl_t2) engl_t2))
  148.       (entmod engl_t2)
  149.           ;画引线:先删除,再重绘
  150. ;;;****************************************************************
  151. ;;;××××××不知如何更新多段线多个顶点值,暂如此处理××××××
  152. ;;;****************************************************************
  153.       (entdel (cdr (car engl_pl)))
  154.       (prin_pl pa pb pc)
  155.       (setq engl_pl (entget (entlast)))
  156.     )
  157.   )

  158.   (prin1)
  159. )

  160. ;;;计算文字插入点和引线末点函数
  161. (defun poi_calc  (sl)
  162.   (if (>= (car pb) (car pa))
  163.           ;插入位置在标注点右侧
  164.     (setq ta (list (car pb) (+ (cadr pb) (/ fh 2)) 0)
  165.     tb (list (car pb) (- (cadr pb) (/ fh 2)) 0)
  166.     pc (list (+ (car pb) sl) (cadr pb) 0)
  167.     )
  168.           ;插入位置在标注点左侧
  169.     (setq ta (list (- (car pb) sl) (+ (cadr pb) (/ fh 2)) 0)
  170.     tb (list (car ta) (- (cadr pb) (/ fh 2)) 0)
  171.     pc (list (car ta) (cadr pb) 0)
  172.     )
  173.   )
  174. )

  175. ;;;绘制文字函数
  176. (defun prin_mtxt (point txt fh position)
  177.   (entmake (list
  178.        '(0 . "MText")
  179.        '(100 . "AcDbEntity")
  180.        '(100 . "AcDbMText")
  181.        (list 10 (car point) (cadr point))
  182.        (cons 40 fh)
  183.        (cons 71 position)
  184.        (cons 1 txt)
  185.        (cons 7 (getvar "textstyle"))
  186.      )
  187.   )
  188. )

  189. ;;;绘制引线函数
  190. (defun prin_pl (p1 p2 p3)
  191.   (entmake (list '(0 . "LWPOLYLINE")
  192.      '(100 . "AcDbEntity")
  193.      '(100 . "AcDbPolyline")
  194.      (cons 90 3)
  195.      (cons 10 p1)
  196.      (cons 10 p2)
  197.      (cons 10 p3)
  198.      )
  199.   )
  200. )

2015.12.23原始内容

从网上下载的网蜂坐标标注插件,总是会出现使用中不能捕捉、使用完后捕捉设置被更改的BUG。
于是便着手自制一个插件,没有以上的问题。但有些不足及没有完全理解之处:
1、不足:不能实时预览;当坐标值小数位数小于指定精度时,不能自动以0补位。
2、没有完全理解之处:list组建群码,没有明白为什么有些要加一个撇 ' ,有些要加一个点 . ,有些要用cons。(下面源码中所用均为拿来主义)
希望各位前辈多多指点。下面贴上源码:
  1.           ;2015.12.23
  2.           ;pa pb pc为引线(多段线)顶点
  3.           ;ta tb为文字基点,X Y为坐标,tbox为判断文字对象长度用临时坐标存储器,sl为文字对象长度(亦即引线水平段长度)
  4.           ;fh为文字高度,sc为标注比例,pre为坐标值精度(全局变量)
  5.           ;b为循环标记
  6. (defun c:zb (/ pa pb pc ta tb X Y tb sl b)

  7.           ;程序加载初始化设置
  8.   (if (= fh nil)
  9.     (setq fh 2.5)
  10.   )
  11.   (if (= sc nil)
  12.     (setq sc 0.001)
  13.   )
  14.   (if (= pre nil)
  15.     (setq pre 3)
  16.   )
  17.   (progn
  18.     (princ "\n当前参数值:字高")
  19.     (princ fh)
  20.     (princ "   比例")
  21.     (princ sc)
  22.     (princ "   精度")
  23.     (princ pre)
  24.   )

  25.           ;指定需标注的点或设置字高、比例、精度
  26.   (while (and (= b nil) (/= (type pa) 'str))
  27.     (initget "F S P")
  28.     (setq pa (getpoint "\n指定坐标点或[字高(F)/比例(S)/精度(P)]:"))
  29.     (cond ((= pa "F")
  30.      (progn (setq fh (getreal "\n指定字高:"))
  31.       (setq pa nil)
  32.      )
  33.     )
  34.     ((= pa "S")
  35.      (progn (setq sc (getreal "\n指定比例:"))
  36.       (setq pa nil)
  37.      )
  38.     )
  39.     ((= pa "P")
  40.      (progn (setq pre (getint "\n指定精度:"))
  41.       (setq pa nil)
  42.      )
  43.     )
  44.     (T (setq b t))
  45.     )
  46.   )
  47.   (setq b nil)

  48.           ;获取坐标值
  49.   (setq X (rtos (* (cadr pa) sc) 2 pre))
  50.   (setq Y (rtos (* (car pa) sc) 2 pre))
  51.   (setq X (strcat "X=" X))
  52.   (setq Y (strcat "Y=" Y))

  53.           ;指定引线折点
  54.   (setq pb (getpoint "\n指定文字插入点:"))

  55.           ;根据坐标字符串长度计算引线水平段长度
  56.   (setq  tbox (textbox (list
  57.       '(0 . "text")
  58.       (cons 40 fh)
  59.       (cons 1
  60.             (if (>= (strlen X) (strlen Y))
  61.         X
  62.         Y
  63.             )
  64.       )
  65.       '(50 . 0)
  66.           )
  67.        )
  68.   )
  69.   (setq sl (- (car (cadr tbox)) (car (car tbox))))

  70.           ;计算文字插入点和引线末点
  71.   (if (>= (car pb) (car pa))
  72.           ;插入位置在标注点右侧
  73.     (setq ta (list (car pb) (+ (cadr pb) (/ fh 2)) 0)
  74.     tb (list (car ta) (- (cadr pb) (* 3 (/ fh 2))) 0)
  75.     pc (list (+ (car pb) sl) (cadr pb) 0)
  76.     )
  77.           ;插入位置在标注点左侧
  78.     (setq ta (list (- (car pb) sl) (+ (cadr pb) (/ fh 2)) 0)
  79.     tb (list (car ta) (- (cadr pb) (* 3 (/ fh 2))) 0)
  80.     pc (list (car ta) (cadr pb) 0)
  81.     )
  82.   )

  83.           ;输出文字
  84.   (entmake (list
  85.        '(0 . "text")
  86.        (list 10 (car ta) (cadr ta))
  87.        (cons 40 fh)
  88.        (cons 1 X)
  89.        '(50 . 0)
  90.      )
  91.   )
  92.   (entmake (list
  93.        '(0 . "text")
  94.        (list 10 (car tb) (cadr tb))
  95.        (cons 40 fh)
  96.        (cons 1 Y)
  97.        '(50 . 0)
  98.      )
  99.   )

  100.           ;画引线
  101.   (entmake (list '(0 . "LWPOLYLINE")
  102.      '(100 . "AcDbEntity")
  103.      '(100 . "AcDbPolyline")
  104.      (cons 90 3)
  105.      (cons 10 pa)
  106.      (cons 10 pb)
  107.      (cons 10 pc)
  108.      )
  109.   )

  110.   (prin1)
  111. )

本帖子中包含更多资源

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

x
发表于 2017-10-18 17:43:53 | 显示全部楼层
上下位数不一时只能左对齐,不能自动居中,影响美观
发表于 2023-2-3 13:49:05 | 显示全部楼层
ucs和wcs不一致时,标注位置错误
发表于 2023-5-19 15:21:20 | 显示全部楼层
感谢分享,学习一下,谢谢
发表于 2015-12-23 14:07:46 | 显示全部楼层
学习中,谢谢…………
发表于 2015-12-23 16:01:01 | 显示全部楼层
(setvar "dimzin" 1);;;数字不消零
发表于 2015-12-23 16:03:34 | 显示全部楼层
实时预览要用grread获取鼠标坐标然后不断更新图元(引线及文字)位置
发表于 2015-12-25 08:43:32 | 显示全部楼层
支持一下!!!!
发表于 2015-12-25 10:59:19 | 显示全部楼层
学习中,谢谢…………
发表于 2015-12-25 18:17:32 | 显示全部楼层
(setvar"dimzin"0);;保留小数位数时如果位数不足可以补零
发表于 2015-12-26 13:14:51 | 显示全部楼层
路过。。。。。。。。。
发表于 2015-12-26 14:42:26 | 显示全部楼层
支持楼主原创 LISP
 楼主| 发表于 2016-1-18 10:48:46 | 显示全部楼层
wzg356 发表于 2015-12-23 16:01
(setvar "dimzin" 1);;;数字不消零

感谢你的回复,程序已经改进,还请多多指点。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-16 21:29 , Processed in 0.220785 second(s), 28 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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