2楼
你是哪个省的规划院的,这东西你自己用还行,给别人怎么用呀,图的比例都不知道,单位是什么呀!
回复
3楼
[原创]全功能总图坐标标注源代码
(defun c:POS (/ pt pt1 cSave eSave ret ret1
ang text_a text_b e1 e2 tb textlen
textlen2 dimzinSave
)
(posinit)
(setq cSave (getvar "cmdecho")
eSave *error*
*error* OnError
dimzinSave (getvar "dimzin")
)
(setvar "cmdecho" 0)
(setvar "dimzin" 0)
(setq ret t)
(while ret
(initget "S H P B O")
(setq pt
(getpoint
"\n指定标注点或 [比例(S)/字高(H)/精度(P)/基点(B)/偏移(O)]: "
)
)
(cond
((= pt "S")
(initget 6)
(setq ret1
(getreal (strcat "\n输入制图比例 <" (rtos *POSSCALE) ">: ")
)
)
(if (/= nil ret1)
(setq *POSSCALE ret1)
)
)
((= pt "H")
(initget 6)
(setq ret1
(getreal
(strcat "\n输入文字高度 <" (rtos *POSTEXTHEIGHT) ">: ")
)
)
(if (/= nil ret1)
(setq *POSTEXTHEIGHT ret1)
)
)
((= pt "P")
(initget 4)
(setq ret1
(getint
(strcat "\n输入标注精度 <" (itoa *POSPRECISION) ">: ")
)
)
(if (/= nil ret1)
(setq *POSPRECISION ret1)
)
)
((= pt "O")
(initget 6)
(setq ret1
(getreal
(strcat "\n输入文字偏移 <" (rtos *POSTEXTOFFSET) ">: ")
)
)
(if (/= nil ret1)
(setq *POSTEXTOFFSET ret1)
)
)
((= pt "B")
(setq ret1
(getpoint
(strcat "\n指定基点 <"
(rtos (car *POSBASEPOINT) 2 *POSPRECISION)
" "
(rtos (cadr *POSBASEPOINT) 2 *POSPRECISION)
">: "
)
)
)
(if (/= nil ret1)
(setq *POSBASEPOINT ret1)
)
)
(pt (setq ret nil))
)
)
(setq pt1 (getpoint pt "\n指定下一点: "))
(if (> (car pt1) (car pt))
(setq ang 0)
(setq ang pi)
)
(setq text_a
(rtos (* 0.001 *POSSCALE (- (cadr pt) (cadr *POSBASEPOINT)))
2
*POSPRECISION
)
)
(setq text_b
(rtos (* 0.001 *POSSCALE (- (car pt) (car *POSBASEPOINT)))
2
*POSPRECISION
)
)
(if (and pt pt1)
(progn
(command ".undo" "BE")
(disableos)
(command ".text"
(polar pt1 (/ pi 2) *POSTEXTOFFSET)
*POSTEXTHEIGHT
0
(strcat "A" text_a)
)
(setq e1 (entlast))
(setq tb (textbox (entget e1)))
(setq textlen (abs (- (car (cadr tb)) (car (car tb)))))
(command ".text"
(polar pt1 (/ pi -2) (+ *POSTEXTOFFSET *POSTEXTHEIGHT))
*POSTEXTHEIGHT
0
(strcat "B" text_b)
)
(setq e2 (entlast))
(setq tb (textbox (entget e2)))
(setq textlen2 (abs (- (car (cadr tb)) (car (car tb)))))
(if (> textlen2 textlen)
(setq
textlen textlen2
)
)
(command ".line" pt pt1 (polar pt1 ang textlen) "")
(if (/= ang 0)
(command ".move" e1 e2 "" pt (polar pt ang textlen))
)
)
)
(RestoreOS)
(command ".undo" "E")
(setvar "cmdecho" cSave)
(setvar "dimzin" dimzinSave)
(setq
回复
4楼
还可以。就是没有全自动。我一直也想 搞一个。老是没耐心,当然水平也不行。支持。
回复
5楼
学习中……
回复
6楼
学习中……
回复
7楼
谢谢了
回复
8楼
厉害!佩服!谢谢!
回复
9楼
好用
回复
10楼
第二楼说的,我没有考虑,不过也犯不着这么牛,如果你有本事,不用来这里逛了.
我这里没有考虑比例,因为我一直是以满足工作需要为目的,不是专业搞程序开发的. 我毕竟不是靠这个吃饭的.不能舍本逐末,是吧?
再说,配合点简单的CAD知识,用来不是太坏就行.我这里指的是1:1的图纸上标的,如果不是,可以适当先变比例成为1:1. 现在没有时间改了. 以后吧.
不过,那里有几个小问题(不是错误),已经更改了. 再上传一下.
回复
11楼
另外说明
1.这个程序最大的特点是第二根引线不一定是水平的.任意斜线均可以.
2.因为是改改用用,所以程序中有些代码不是精简的,还有注释,所以不是专供学习用的,是供实用的.
3.运行时要检查(检二三个就行,用ID,结果对比)对不对,如不对,是图实在太另类,请另找或与我联系. zrw_hunter@hotmail.com
4.内附说明.
5.我身边的人在用,基本没有发现问题.
6.水平是有限,请说话客气点.觉得不好不用就是了.
回复