- UID
- 674970
- 积分
- 469
- 精华
- 贡献
-
- 威望
-
- 活跃度
-
- D豆
-
- 在线时间
- 小时
- 注册时间
- 2013-4-8
- 最后登录
- 1970-1-1
|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
本帖最后由 spp_wall 于 2013-9-22 15:21 编辑
如题 有没什么软件能实现?
现在纬地的标注只能标注 固定的桩号! 如果要标注任意点的桩号 还是比较繁琐 比如市政道路的路幅宽度 渐变段太多 现在的方法改路幅宽度很麻烦,找了很多地方都没有找到修改纬地路幅宽度的好办法,不知道有没同行有更好的办法呢?
下面这个lsp能实现标注任意点桩号 但是 没有生成文本格式
如果可以 谁有能力希望能完善成下面的格式 就是纬地的wid格式
点取主线一点 输出这个点的桩号 然后点取下一点 输出距离 点下个点输出距离
格式如下:
ZZZZZZZ (左幅)
桩号 距离1 距离2 距离3 距离4 距离5
0.000 1.00 17.00 0.00 0.00 0.00 0
280.000 1.00 17.00 0.00 0.00 0.00 0
280.000 1.00 11.50 0.00 0.00 0.00 0
1612.586 1.00 11.50 0.00 0.00 0.00 0
(vl-load-com)
(vl-load-com)
(defun c:zhcx ();桩号查询
(prompt "2010-07-27 zo roo CGGC 武赤公路")
(prompt "*查询线路任意点桩号* << C:zhcx>> *计算中桩坐标*")
(setq old_lay (getvar "clayer"))
(if (=(tblobjname "LAYER" "桩号标注") nil)
(progn
(entmake (list
'(0 . "LAYER")
'(100 . "AcDbSymbolTableRecord")
'(100 . "AcDbLayerTableRecord")
'(6 . "CONTINUOUS")
'(62 . 3)
'(70 . 0)
(cons 2 "桩号标注")
)
)
)
)
(setvar "clayer" "桩号标注")
(setq en (entsel "\n选择道路中心线: ")
a (getreal "\n请输入起点桩号:")
e (car en)
pt (cadr en)
)
(if (setq len (getreal "\n输入垂线长度(道路半幅宽):")) ;此处要加入非法输入的控制
(progn
(setq OBJ (vlax-ename->vla-object (car en)))
)
)
(while (setq pt0 (getPoint "\n选择查询点:"))
;画曲线的垂线
(setq Perpt (vlax-curve-getClosestPointTo OBJ pt0 T)
LST (vlax-curve-getfirstderiv OBJ (vlax-curve-getparamatpoint OBJ Perpt))
ANG (atan (/ (cadr LST) (car LST)))
pt1 (polar Perpt (+ ANG (* 0.5 pi)) len)
pt2 (polar Perpt (- ANG (* 0.5 pi)) len)
;此处就是你画出来的是水平线的原因,变量换个方向即可
)
(setq ang2 (angtos (angle pt2 pt1)0 4) )
(command "pline" pt1 pt2 "")
;计算桩号
(setq leng (vlax-curve-getDistAtParam e (vlax-curve-getEndParam e))
leng1 (+ a (vlax-curve-getDistAtPoint e Perpt))
leng2 (- leng leng1)
)
;计算桩号
(if (< leng1 0.0) (setq fh "-") (setq fh "+"))
(setq nn1 (fix (/ leng1 1000.0 )))
(setq nn2 (abs(- leng1 (* 1000.0 nn1 ))))
(if (= nn2 0.0) (setq str_1 (strcat fh "00" )))
(if (and (> nn2 0) (< nn2 10.0)) (setq str_1 (strcat (strcat fh "00" ) (rtos nn2 2 3))))
(if (and (> nn2 10.0) (< nn2 100.0)) (setq str_1 (strcat (strcat fh "0" ) (rtos nn2 2 3))))
(if (>= nn2 100.0) (setq str_1 (strcat fh (rtos nn2 2 3))))
(setq str_1 (strcat "K"(rtos nn1 2 0)"+" (rtos nn2 2 3) ))
(setq pt4 (polar pt1 (+ (* pi 0.45) ang) (* -2 (* 1.65406 0.67))))
(command "text" "j" "MC" pt4 "0.3" ang2 str_1)
(setq py (rtos (nth 0 pt0)));提取测量坐标系Y值
(setq px (rtos (nth 1 pt0)));提取测量坐标洗X值
(setq pxy (strcat str_1"中桩坐标:X="px",Y="py))
(princ pxy)
)
(princ)
) |
|