[求助]请问如何使下列程序标注值3米是3.00而不是3000?
请问如何使下列程序标注值3米是3.00而不是3000?(defun c:bz1( / pt1 pt2 ss sname sinf ent)
(setq pt1 (getpoint "Get the point:"))
(setq ss (ssget pt1))
(if ss
(progn
(setq sname (ssname ss 0))
(setq sinf (entget sname))
(setq ent (cdr (assoc 0 sinf)))
)
(setq ent "Nothing")
)
(cond
((= (strcase ent 0) "circle") (command "_dimdiameter" (list sname pt1) pause))
((= (strcase ent 0) "arc") (command "_dimdiameter" (list sname pt1) pause))
(t
(setq pt2 (getpoint pt1 "Etner the second point:"))
(if (or (equal (car pt1) (car pt2) 0.01) (equal (cadr pt1) (cadr pt2) 0.01))
(command "_dimlinear" pt1 pt2 pause)
(command "_dimaligned" pt1 pt2 pause)
)
)
)
)
(defun C:bz2 (/ HOLDOSMODE HOLDECHO HOLDBLIP P340
P340ENTGET10 A1 AAA1 A AAA
AAL AAPT Q%Q Q%Q1 Q%Q11
)
(setq HOLDECHO (getvar "cmdecho"))
(setq HOLDBLIP (getvar "blipmode"))
(setq HOLDOSMODE (getvar "osmode"))
(setvar "cmdecho" 0)
(setvar "blipmode" 0)
(setvar "osmode" 0)
(while (null AAA1)
(setq AAA1 (nentsel))
)
(setq AAL (length AAA1))
(cond
((/= AAL 2)
(setq AAL (length (last AAA1)))
(if (/= AAL 1)
(progn
(setq A1 (car AAA1))
(setq AAPT (cadr AAA1))
(setq AAA (entget A1))
(setq Q%Q (cdr (assoc 0 AAA)))
(setq Q%Q11 (cdr (assoc 0 (entget (car (last AAA1))))))
(if (= Q%Q11 "DIMENSION")
(setq Q%Q NIL)
)
(setq Q%Q1 (cdr (assoc 0 (entget (car AAA1)))))
(cond
((and (/= Q%Q1 "LINE")
(/= Q%Q1 "CIRCLE")
(/= Q%Q1 "ARC")
(/= Q%Q1 "MLINE")
(/= Q%Q1 "VERTEX")
)
(setq Q%Q NIL)
)
)
)
(progn
(setq A1 (car (last AAA1)))
(setq AAPT (cdr AAA1))
(setq AAA (entget A1))
(setq Q%Q (cdr (assoc 0 AAA)))
)
)
)
((= AAL 2)
(setq A1 (car AAA1))
(setq AAPT (cadr AAA1))
(setq AAA (entget A1))
(setq Q%Q (cdr (assoc 0 AAA)))
)
)
(cond
((or (= Q%Q "LINE") (= Q%Q "MLINE"))
(command "_.DIMLINEAR" "" AAPT)
)
((= Q%Q "CIRCLE") (command "_.DIMDIAMETER" AAPT))
((= Q%Q "ARC") (command "_.DIMRADIUS" AAPT))
((= Q%Q "DIMENSION") (command "_.DIMTEDIT" A1))
((= Q%Q "LEADER")
(setq P340 (cdr (assoc 340 (entget A1))))
(setq P340ENTGET10 (cdr (assoc 10 (entget P340))))
(command "_.move" P340ENTGET10 "")
)
((= Q%Q "MTEXT") (command "_.DDEDIT" AAPT))
((= Q%Q "TEXT") (command "_.DDEDIT" AAPT))
((= Q%Q "HATCH")
(initdia 1)
(command "_.HATCHEDIT" AAPT)
(initdia 0)
)
((= Q%Q "ATTDEF") (command "_.DDEDIT" AAPT))
((= Q%Q "ATTRIB") (command "_.DDATTE" AAPT))
((= Q%Q "SPLINE") (command "_.SPLINEDIT" AAPT))
;|
((= Q%Q "TOLERANCE")
(if (wcmatch (getvar "acadver") "15*")
(progn
(if (not DDMODIFYY)
(load "ddmodifyy")
)
(DDMODIFYY A1)
)
(progn
(if (not DDMODIFY)
(load "ddmodify")
)
(DDMODIFY A1)
)
)
)|;
((or (= Q%Q "VERTEX")
(= Q%Q "LWPOLYLINE")
(= Q%Q "POLYLINE")
)
(setq AA (entget (car AAA1)))
(setq AAPT (cadr AAA1))
(setq AAA (cdr (assoc 42 AA)))
(if (= AAA 0)
(command "_.DIMLINEAR" "" AAPT)
(command "_.DIMRADIUS" AAPT)
)
)
((= Q%Q "INSERT")
(setq AA (entget (car AAA1)))
(setq AAPT (cadr AAA1))
(setq Q%Q (cdr (assoc 0 AA)))
(cond
((or (= Q%Q "LINE") (= Q%Q "MLINE"))
(command "_.DIMLINEAR" "" AAPT)
)
((= Q%Q "CIRCLE") (command "_.DIMDIAMETER" AAPT))
((= Q%Q "ARC") (command "_.DIMRADIUS" AAPT))
((or (= Q%Q "VERTEX")
(= Q%Q "LWPOLYLINE")
(= Q%Q "POLYLINE")
)
(setq AA (entget (car AAA1)))
(setq AAPT (cadr AAA1))
(setq AAA (cdr (assoc 42 AA)))
(if (= AAA 0)
(command "_.DIMLINEAR" "" AAPT)
(command "_.DIMRADIUS" AAPT)
)
)
(t
(prompt "\n不能编辑及标注区块中之非线类")
)
)
)
(t
(prompt "\n不能编辑及标注区块中之非线类")
)
)
(setvar "blipmode" HOLDBLIP)
(setvar "osmode" HOLDBLIP)
(setvar "cmdecho" HOLDECHO)
(princ)
)
第一个程序改了一下,第二个可自行更改。
(defun c:bz1( / pt1 pt2 ss sname sinf ent)
(setq pt1 (getpoint "\nGet the point:"))
(if (setq ss (ssget pt1)) (progn
(setq sname (ssname ss 0))
(setq sinf (entget sname))
(setq ent (cdr (assoc 0 sinf)))
(setq oldlfac (getvar "DIMLFAC")) ;读入旧参数
(setvar "DIMLFAC" 0.001) ;设置新参数
(cond
((= ent "CIRCLE") (command "_dimdiameter" (list sname pt1) pause))
((= ent "ARC") (command "_dimdiameter" (list sname pt1) pause))
(t
(setq pt2 (getpoint pt1 "\nEtner the second point:"))
(if (or (equal (car pt1) (car pt2) 0.01) (equal (cadr pt1) (cadr pt2) 0.01))
(command "_dimlinear" pt1 pt2 pause)
(command "_dimaligned" pt1 pt2 pause)
)
)
)
(setvar "DIMLFAC" oldlfac) ;恢复旧参数
)
(setq ent "Nothing")
)
)
<p><font face="Verdana" color="#da2549"><b>路过……看到ZZXXQQ版主诲人不倦!谢谢!</b></font></p> <strong><font color="#0000ff">ZZXXQQ版主你调的程序还有个问题,输出的标注只有整数,如何调整为有2位小数的标注?谢谢!</font></strong> 加上一行(setvar "DIMZIN" 0)试试
页:
[1]