找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 2722|回复: 8

[求助] 求修改个程序 读取曲线桩号后生成txt格式 再下一步能实现文中的格式更好

[复制链接]

已领礼包: 127个

财富等级: 日进斗金

发表于 2013-9-22 14:55:18 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

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

×
本帖最后由 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)
)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2013-9-22 15:40:50 | 显示全部楼层
本帖最后由 Free-Lancer 于 2013-9-22 15:53 编辑

桩号应该和中心导线关联的,你应该先确定这个导线的信息,找到起点和起点桩号信息就可以标注任意点的桩号了
这些软件喜欢用 xdata ,查询下

点评

已经可以标注任意桩号了 现在想把提取的桩号生成txt文件 还要提取距离  详情 回复 发表于 2013-9-23 09:09
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 127个

财富等级: 日进斗金

 楼主| 发表于 2013-9-23 09:09:01 | 显示全部楼层
Free-Lancer 发表于 2013-9-22 15:40
桩号应该和中心导线关联的,你应该先确定这个导线的信息,找到起点和起点桩号信息就可以标注任意点的桩号了 ...

已经可以标注任意桩号了  现在想把提取的桩号生成txt文件  还要提取距离

点评

桩号本身不代表距离吗? 写文件很简单的  详情 回复 发表于 2013-9-23 09:14
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2013-9-23 09:14:41 | 显示全部楼层
spp_wall 发表于 2013-9-23 09:09
已经可以标注任意桩号了  现在想把提取的桩号生成txt文件  还要提取距离

桩号本身不代表距离吗?
写文件很简单的

点评

可惜我对于lsp一窍不通 在附上测试的DWG吧 看看谁能帮帮忙  详情 回复 发表于 2013-9-23 11:57
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 127个

财富等级: 日进斗金

 楼主| 发表于 2013-9-23 11:57:01 | 显示全部楼层
Free-Lancer 发表于 2013-9-23 09:14
桩号本身不代表距离吗?
写文件很简单的

可惜我对于lsp一窍不通

在附上测试的DWG吧  看看谁能帮帮忙

提取桩号和距离测试文件.zip

18.04 KB, 下载次数: 3, 下载积分: D豆 -1 , 活跃度 1

点评

楼主这图是是任意画的,没有价值  详情 回复 发表于 2013-9-23 19:14
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

发表于 2013-9-23 19:14:44 | 显示全部楼层
spp_wall 发表于 2013-9-23 11:57
可惜我对于lsp一窍不通

在附上测试的DWG吧  看看谁能帮帮忙

楼主这图是是任意画的,没有价值

点评

只是说思路 本来也想要个通用的 而且曲线任意标注桩号 也是随意的中线都可以标注啊  详情 回复 发表于 2013-9-23 19:29
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 127个

财富等级: 日进斗金

 楼主| 发表于 2013-9-23 19:29:28 | 显示全部楼层
st788796 发表于 2013-9-23 19:14
楼主这图是是任意画的,没有价值

只是说思路  本来也想要个通用的

而且曲线任意标注桩号  也是随意的中线都可以标注啊

点评

任意线标准是另外一码事,起点一定是 K+0 吗? 在其他专业软件上补充完善功能要先搞清该软件的数据组织才好加以利用并改进!  详情 回复 发表于 2013-9-23 20:01
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

发表于 2013-9-23 20:01:38 | 显示全部楼层
spp_wall 发表于 2013-9-23 19:29
只是说思路  本来也想要个通用的

而且曲线任意标注桩号  也是随意的中线都可以标注啊

任意线标准是另外一码事,起点一定是 K+0 吗?
在其他专业软件上补充完善功能要先搞清该软件的数据组织才好加以利用并改进!

点评

起点最好不K0+000 因为有的道路项目不是的道路桩号从K0+00开始 最好是可以定义这个起点的桩号 比如 一条曲线总长为5000米 定义曲线的起点 为0 那终点就是5000 定义曲线起点为138 那终点就是5138了  详情 回复 发表于 2013-9-24 09:08
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 127个

财富等级: 日进斗金

 楼主| 发表于 2013-9-24 09:08:09 | 显示全部楼层
st788796 发表于 2013-9-23 20:01
任意线标准是另外一码事,起点一定是 K+0 吗?
在其他专业软件上补充完善功能要先搞清该软件的数据组织 ...

起点最好不K0+000   因为有的道路项目不是的道路桩号从K0+00开始  最好是可以定义这个起点的桩号

比如 一条曲线总长为5000米  定义曲线的起点  为0    那终点就是5000    定义曲线起点为138   那终点就是5138了

这个lsp最好是以数字的形式   不需要K0+000或者K5+000这样的桩号标示


论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-11-22 05:39 , Processed in 0.351956 second(s), 62 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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