明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1918|回复: 4

[讨论] [求助]请问如何使下列程序标注值3米是3.00而不是3000?

[复制链接]
发表于 2010-6-19 09:59:00 | 显示全部楼层 |阅读模式
请问如何使下列程序标注值3米是3.00而不是3000?
  1. (defun c:bz1( / pt1 pt2 ss sname sinf ent)
  2.   (setq pt1 (getpoint "Get the point:"))
  3.   (setq ss (ssget pt1))
  4.   (if ss
  5.     (progn
  6.       (setq sname (ssname ss 0))
  7.       (setq sinf (entget sname))
  8.       (setq ent (cdr (assoc 0 sinf)))
  9.     )
  10.     (setq ent "Nothing")
  11.   )
  12.   (cond
  13.     ((= (strcase ent 0) "circle") (command "_dimdiameter" (list sname pt1) pause))
  14.     ((= (strcase ent 0) "arc") (command "_dimdiameter" (list sname pt1) pause))
  15.     (t
  16.      (setq pt2 (getpoint pt1 "Etner the second point:"))
  17.      (if (or (equal (car pt1) (car pt2) 0.01) (equal (cadr pt1) (cadr pt2) 0.01))
  18.        (command "_dimlinear" pt1 pt2 pause)
  19.        (command "_dimaligned" pt1 pt2 pause)
  20.      )
  21.     )
  22.   )
  23. )
  24. (defun C:bz2 (/    HOLDOSMODE      HOLDECHO HOLDBLIP P340
  25.     P340ENTGET10     A1      AAA1     A        AAA
  26.     AAL    AAPT     Q%Q      Q%Q1     Q%Q11
  27.    )
  28.   (setq HOLDECHO (getvar "cmdecho"))
  29.   (setq HOLDBLIP (getvar "blipmode"))
  30.   (setq HOLDOSMODE (getvar "osmode"))
  31.   (setvar "cmdecho" 0)
  32.   (setvar "blipmode" 0)
  33.   (setvar "osmode" 0)
  34.   (while (null AAA1)
  35.     (setq AAA1 (nentsel))
  36.   )
  37.   (setq AAL (length AAA1))
  38.   (cond
  39.     ((/= AAL 2)
  40.      (setq AAL (length (last AAA1)))
  41.      (if (/= AAL 1)
  42.        (progn
  43.   (setq A1 (car AAA1))
  44.   (setq AAPT (cadr AAA1))
  45.   (setq AAA (entget A1))
  46.   (setq Q%Q (cdr (assoc 0 AAA)))
  47.   (setq Q%Q11 (cdr (assoc 0 (entget (car (last AAA1))))))
  48.   (if (= Q%Q11 "DIMENSION")
  49.     (setq Q%Q NIL)
  50.   )
  51.   (setq Q%Q1 (cdr (assoc 0 (entget (car AAA1)))))
  52.   (cond
  53.     ((and (/= Q%Q1 "LINE")
  54.    (/= Q%Q1 "CIRCLE")
  55.    (/= Q%Q1 "ARC")
  56.    (/= Q%Q1 "MLINE")
  57.    (/= Q%Q1 "VERTEX")
  58.      )
  59.      (setq Q%Q NIL)
  60.     )
  61.   )
  62.        )
  63.        (progn
  64.   (setq A1 (car (last AAA1)))
  65.   (setq AAPT (cdr AAA1))
  66.   (setq AAA (entget A1))
  67.   (setq Q%Q (cdr (assoc 0 AAA)))
  68.        )
  69.      )
  70.     )
  71.     ((= AAL 2)
  72.      (setq A1 (car AAA1))
  73.      (setq AAPT (cadr AAA1))
  74.      (setq AAA (entget A1))
  75.      (setq Q%Q (cdr (assoc 0 AAA)))
  76.     )
  77.   )
  78.   (cond
  79.     ((or (= Q%Q "LINE") (= Q%Q "MLINE"))
  80.      (command "_.DIMLINEAR" "" AAPT)
  81.     )
  82.     ((= Q%Q "CIRCLE") (command "_.DIMDIAMETER" AAPT))
  83.     ((= Q%Q "ARC") (command "_.DIMRADIUS" AAPT))
  84.     ((= Q%Q "DIMENSION") (command "_.DIMTEDIT" A1))
  85.     ((= Q%Q "LEADER")
  86.      (setq P340 (cdr (assoc 340 (entget A1))))
  87.      (setq P340ENTGET10 (cdr (assoc 10 (entget P340))))
  88.      (command "_.move" P340ENTGET10 "")
  89.     )
  90.     ((= Q%Q "MTEXT") (command "_.DDEDIT" AAPT))
  91.     ((= Q%Q "TEXT") (command "_.DDEDIT" AAPT))
  92.     ((= Q%Q "HATCH")
  93.      (initdia 1)
  94.      (command "_.HATCHEDIT" AAPT)
  95.      (initdia 0)
  96.     )
  97.     ((= Q%Q "ATTDEF") (command "_.DDEDIT" AAPT))
  98.     ((= Q%Q "ATTRIB") (command "_.DDATTE" AAPT))
  99.     ((= Q%Q "SPLINE") (command "_.SPLINEDIT" AAPT))
  100.     ;|
  101.     ((= Q%Q "TOLERANCE")
  102.      (if (wcmatch (getvar "acadver") "15*")
  103.        (progn
  104.   (if (not DDMODIFYY)
  105.     (load "ddmodifyy")
  106.   )
  107.   (DDMODIFYY A1)
  108.        )
  109.        (progn
  110.   (if (not DDMODIFY)
  111.     (load "ddmodify")
  112.   )
  113.   (DDMODIFY A1)
  114.        )
  115.      )
  116.     )|;
  117.     ((or (= Q%Q "VERTEX")
  118.   (= Q%Q "LWPOLYLINE")
  119.   (= Q%Q "POLYLINE")
  120.      )
  121.      (setq AA (entget (car AAA1)))
  122.      (setq AAPT (cadr AAA1))
  123.      (setq AAA (cdr (assoc 42 AA)))
  124.      (if (= AAA 0)
  125.        (command "_.DIMLINEAR" "" AAPT)
  126.        (command "_.DIMRADIUS" AAPT)
  127.      )
  128.     )
  129.     ((= Q%Q "INSERT")
  130.      (setq AA (entget (car AAA1)))
  131.      (setq AAPT (cadr AAA1))
  132.      (setq Q%Q (cdr (assoc 0 AA)))
  133.      (cond
  134.        ((or (= Q%Q "LINE") (= Q%Q "MLINE"))
  135. (command "_.DIMLINEAR" "" AAPT)
  136.        )
  137.        ((= Q%Q "CIRCLE") (command "_.DIMDIAMETER" AAPT))
  138.        ((= Q%Q "ARC") (command "_.DIMRADIUS" AAPT))
  139.        ((or (= Q%Q "VERTEX")
  140.      (= Q%Q "LWPOLYLINE")
  141.      (= Q%Q "POLYLINE")
  142. )
  143. (setq AA (entget (car AAA1)))
  144. (setq AAPT (cadr AAA1))
  145. (setq AAA (cdr (assoc 42 AA)))
  146. (if (= AAA 0)
  147.    (command "_.DIMLINEAR" "" AAPT)
  148.    (command "_.DIMRADIUS" AAPT)
  149. )
  150.        )
  151.        (t
  152. (prompt "\n不能编辑及标注区块中之非线类")
  153.        )
  154.      )
  155.     )
  156.     (t
  157.      (prompt "\n不能编辑及标注区块中之非线类")
  158.     )
  159.   )
  160.   (setvar "blipmode" HOLDBLIP)
  161.   (setvar "osmode" HOLDBLIP)
  162.   (setvar "cmdecho" HOLDECHO)
  163.   (princ)
  164. )

本帖子中包含更多资源

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

x
发表于 2010-6-19 11:30:00 | 显示全部楼层
第一个程序改了一下,第二个可自行更改。
  1. (defun c:bz1( / pt1 pt2 ss sname sinf ent)
  2. (setq pt1 (getpoint "\nGet the point:"))
  3. (if (setq ss (ssget pt1)) (progn
  4.   (setq sname (ssname ss 0))
  5.   (setq sinf (entget sname))
  6.   (setq ent (cdr (assoc 0 sinf)))
  7.   (setq oldlfac (getvar "DIMLFAC")) ;读入旧参数
  8.   (setvar "DIMLFAC" 0.001)           ;设置新参数
  9.   (cond
  10.    ((= ent "CIRCLE") (command "_dimdiameter" (list sname pt1) pause))
  11.    ((= ent "ARC") (command "_dimdiameter" (list sname pt1) pause))
  12.    (t
  13.     (setq pt2 (getpoint pt1 "\nEtner the second point:"))
  14.     (if (or (equal (car pt1) (car pt2) 0.01) (equal (cadr pt1) (cadr pt2) 0.01))
  15.      (command "_dimlinear" pt1 pt2 pause)
  16.      (command "_dimaligned" pt1 pt2 pause)
  17.     )
  18.    )
  19.   )
  20.   (setvar "DIMLFAC" oldlfac)   ;恢复旧参数
  21. )
  22.   (setq ent "Nothing")
  23. )
  24. )
发表于 2010-6-20 07:33:00 | 显示全部楼层

路过……看到ZZXXQQ版主诲人不倦!谢谢!

 楼主| 发表于 2010-6-20 23:14:00 | 显示全部楼层
ZZXXQQ版主你调的程序还有个问题,输出的标注只有整数,如何调整为有2位小数的标注?谢谢!
发表于 2010-6-21 21:58:00 | 显示全部楼层
加上一行(setvar "DIMZIN" 0)试试
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-10-2 06:39 , Processed in 0.177303 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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