最初由 laoxie_1983 发布
[B]谢谢!斑竹!
我运行了.不能满足我的要求点号还是乱的.
我想到一个方法,可以在图形里定一点.然后分别与每个端点计算角度,用最接近135度的那个点作为起始点.你看可以吗?vlx的文件是怎么编辑的呀??.. [/B]
发个图上来(包括测试的结果)。
 - [FONT=courier new]
- (load "xyp_lib")
- ;|加载通用函数(可在签名栏直接下载)
- 如果已经下载xyp_lib并放到搜索路径下可以不再下载!
- 利用以下任何一种方式(首选第一种)即可加载和运行通用函数内的所有子程序:
- ★1·在acad.lsp中增加(load"xyp_lib")
- ■2·在每个程序内增加(load"xyp_lib")
- ■3·在command下,输入(load"xyp_lib")
- ■4·在菜单.mnl中增加(load"xyp_lib")
- ■5·将xyp_lib.vlx文件直接拽到cad屏幕
- [COLOR=red] ★通用函数下载地址:[/COLOR]
- [url]http://www.xdcad.net/forum/attachment.php?s=&postid=1606661[/url]
- |;
- ;;;界址点号
- (defun c:jzdh ()
- (CMDLASC0)
- (setvar "osmode" 0)
- (setq ss (ssget '((0 . "*POLYLINE")))
- ttx ""
- l 0
- i -1
- )
- (mkla "线长标注" 4)
- (while (setq s1 (ssname ss (setq i (1+ i))))
- (setq ptlst-a (xyp-get-Vertexes s1 t)
- ptlst-b ptlst-a
- pt0 (osnap (cadr (entsel "\n桩号1位置 : ")) "int")
- )
- (jiezhihao)
- (mkla "界址点" 1)
- (foreach n ptlst-a (command "circle" n 1))
- (mkla "界址长" 4)
- (while (setq pt1 (car ptlst-a))
- (if (setq ptlst-a (cdr ptlst-a))
- (progn
- (setq pt2 (car ptlst-a)
- leng (distance pt1 pt2)
- tx (rtos leng 2 2)
- ang (rad2ang (angle pt1 pt2))
- pt-tx (xyp-get-RightPoint pt1 pt2 100)
- ttx (strcat ttx "+" tx)
- l (+ l leng)
- )
- (command "text" "j" "BC" pt-tx (* sc 300) ang tx)
- )
- )
- )
- )
- (CMDLA1)
- )
- (defun jiezhihao ()
- (mkla "界址号" 2)
- (setq j 0)
- (while (not (equal (car ptlst-b) pt0))
- (setq ptlst-b (append (cdr ptlst-b) (list (car ptlst-b))))
- )
- (foreach ptx ptlst-b
- (progn
- (setq jh (strcat "J" (rtos (setq j (1+ j)) 2 0)))
- (command "text"
- "j"
- "MC"
- (polar ptx (* pi 0.75) (* sc 500))
- (* sc 300)
- 0
- jh
- )
- )
- )
- )
- (pxyp"jzdh (界址点号)")[/FONT]
|