找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 769|回复: 7

[已解决] 【已解决】二维多段线太密,想简化点,线是3DMAX切割平面出来的,顺便转化为多段线

[复制链接]

已领礼包: 50个

财富等级: 招财进宝

发表于 2018-5-23 15:12:49 | 显示全部楼层 |阅读模式

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

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

×
本帖最后由 君是我的泪 于 2018-5-24 08:14 编辑

二维多段点太密,想简化点,已从三维多段线转为带高程的二维多段线,线是3DMAX切割平面出来的,顺便转化为多段线,并标注转角  和长度(长xxx mm,用汉字长隔开,防重叠,方便导出excel可以吗?
Unnamed QQ Screenshot20180523155319.png
请点击此处下载

查看状态:需购买或无权限

您的用户组是:游客

文件名称:二维多段线简化导出.zip 
下载次数:4  文件大小:17.81 KB 
下载权限: 不限 以上  [免费赚D豆]




以下源码

(defun c:tcc()
    (if (setq ssa (ssget ":S" '((0 . "lwpolyline"))))
        (if (setq wjm (getfiled "存盘文件" "e:\\" "csv" 1))
             (progn
                  (setq ent (ssname ssa 0)
                        dxf (entget ent)
                        pts (mapcar 'cdr (vl-remove-if '(lambda(x)(/= (car x) 10)) dxf))
                  )
                  (setq i 0  n (length pts))
                  (setq jgb nil)
                  (setq fff (open wjm "w"))
                  (write-line "节点号,X值,Y值,长度(m),角度(°)" fff)
                  (repeat n
                      (if (= i 0)
                          (setq p1 (last pts))
                          (setq p1 (nth (1- i) pts))
                      )
                      (setq p2 (nth i pts))
                      (if (= i (1- n))
                          (setq p3 (car pts))
                          (setq p3 (nth (1+ i) pts))
                      )
                      (setq jlz (distance p1 p2))
                      (setq ang (- (angle p2 p3) (angle p2 p1)))
                      (if (< ang 0) (setq ang (+ ang (* 2 pi))))
                      (if (> ang pi) (setq ang (- (* 2 pi) ang)))
                      (setq ang (vl-string-subst "" "d" (angtos ang 1 0)))
                      (setq i (1+ i))
                      (write-line (strcat (itoa i) ","
                                          (rtos (car  p2) 2 3) ","
                                          (rtos (cadr p2) 2 3) ","
                                          (rtos jlz 2 1) ","
                                          ang
                                  )
                                  fff
                      )
                  )
                  (close fff)
             )
         )
    )
    (princ)
)

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

已领礼包: 40个

财富等级: 招财进宝

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

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2018-5-23 15:27:46 | 显示全部楼层
你这是3维多段线,不是二维多段线,另外,你要导出EXCEL,导出什么? 把你手动做的EXCEL表截图贴上来看看。

点评

这是用你那个3D多段线转2D多段线的插件转的 [attachimg]77625[/attachimg]  详情 回复 发表于 2018-5-23 15:35
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 50个

财富等级: 招财进宝

 楼主| 发表于 2018-5-23 15:35:23 | 显示全部楼层
本帖最后由 君是我的泪 于 2018-5-23 15:49 编辑
newer 发表于 2018-5-23 15:27
你这是3维多段线,不是二维多段线,另外,你要导出EXCEL,导出什么? 把你手动做的EXCEL表截图贴上来看看。 ...

这是用你那个3D多段线转2D多段线的插件转的,刚刚上传的是未转换的,这涉及到好几个步骤,这是一种3D模型施工解决方案
请点击此处下载

查看状态:需购买或无权限

您的用户组是:游客

文件名称:二维多段线.zip 
下载次数:2  文件大小:17.36 KB 
下载权限: 不限 以上  [免费赚D豆]


Unnamed QQ Screenshot20180523153250.png QQ Photo20180523154307.jpg

以下源码 标注夹角(defun c:tt ()
  (defun _process (pl)
    (xdrx_polyline_convertfrom pl)
    (setq verts (xdrx_polyline_numverts pl))
    (setq inx 0)
    (repeat verts
      (setq inxs (XD::PolyLine:-Index+ pl inx))
      (if (apply 'and inxs)
        (progn
          (if (and (= (xdrx_polyline_segtype pl (car inxs)) "kLine")
                   (= (xdrx_polyline_segtype pl inx) "kLine")
              )
            (progn (setq pl1  (xdrx_polyline_getlinesegat pl (car inxs))
                         v1   (mapcar '- (car pl1) (cadr pl1))
                         v1   (xdrx_vector_normalize v1)
                         pl2  (xdrx_polyline_getlinesegat pl inx)
                         v2   (mapcar '- (cadr pl2) (car pl2))
                         v2   (xdrx_vector_normalize v2)
                         an   (xdrx_vector_angle v2 v1)
                         pos1 (polar (cadr pl1)
                                     (angle (cadr pl1) (car pl1))
                                     (/ (apply 'distance pl1) 5.0)
                              )
                         pos2 (polar (car pl2)
                                     (angle (car pl2) (cadr pl2))
                                     (/ (apply 'distance pl2) 5.0)
                              )
                         pos  (xdrx_line_midp pos1 pos2)
                   )
                   (xdrx_dimension_make2lang
                     (cadr pl1)
                     (car pl1)
                     (car pl2)
                     (cadr pl2)
                     pos
                   )
                   (xdrx_setpropertyvalue
                     (entlast)
                     "dimasz" 1.0
                     "dimtxt" 3.0
                     "dimgap" 1.0
                     "dimtxsty" styl
                   )
              (setq nums (1+ nums))
            )
          )
        )
      )
      (setq inx (1+ inx))
    )
  )
  (if (and (xdrx_initssget "选择标注的多段线<退出>:")
           (setq ss (xdrx_ssget '((0 . "*polyline"))))
      )
    (progn (xdrx_begin)
           (setq styl (cadr (xd::text:init 1))
                 nums 0
           )
           (mapcar '(lambda (x) (_process x)) (xdrx_pickset->ents ss))
           (xdrx_prompt "\n标注了 " nums " 个夹角.")
           (xdrx_end)
    )
  )
  (princ)
)



以下源码     标注长度


(defun c:XDTB_PLSegLen (/ _process val)
  (defun _process (e / segs inx g v #angle #length #midpoint p1)
    (setq segs (xdrx_polyline_numverts e))
    (setq inx 0)
    (repeat segs
      (if (setq g (xdrx_polyline_getlinesegat e inx t))
        (progn
          (xdge::getpropertyvalue g "length" "midpoint" "angle")
        )
        (progn
          (setq g (xdrx_polyline_getarcsegat e inx t))
          (xdge::getpropertyvalue g "length" "midpoint")
          (setq v (xdrx_curve_getfirstderiv e #midpoint)
                #angle (xdrx_vector_angle v))
        )
      )
      (setq #angle (xd::geom:angleformat #angle)
            p1           (trans (polar #midpoint
                                 (+ #angle (/ pi 2.0))
                                 (/ #txt_height 2.0))
                                 e
                                 0
                          )
                   )
      (xdrx_text_make
        p1
        (strcat "长" (rtos #length 2 #txt_bit))
        (getvar "textstyle")
        #txt_height
        #angle
      )
      (xd::text:setalignment (entlast) p1 "BC")
      (setq inx (1+ inx))
    )
    (xdge::free g)
  )
  (if (not #txt_height)
    (setq #txt_height 3.5)
  )
  (if (not #txt_bit)
    (setq #txt_bit 1)
  )
  (if (setq val (getint (xdrx_prompt "\n保留位数<" #txt_bit ">:" t)))
    (setq #txt_bit val)
  )
  (if (setq val (getreal (xdrx_prompt "\n字高<" #txt_height ">:" t)))
    (setq #txt_height val)
  )
  (xdrx_begin)
  (xdrx_sysvar_push '("dimzin" 0))
  (if (and (xdrx_initssget "\n选择多段线<退出>:")
           (setq ss (xdrx_ssget '((0 . "LWPOLYLINE"))))
      )
    (progn
      (xd::text:init 1)
      (mapcar '(lambda (x) (_process x)) (xdrx_pickset->ents ss))
    )
  )
  (xdrx_sysvar_pop)
  (xdrx_end)
  (princ)
)




点评

二维多段线简化节点有现成的 [attachimg]77631[/attachimg]  详情 回复 发表于 2018-5-23 16:03
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2018-5-23 16:03:59 | 显示全部楼层
君是我的泪 发表于 2018-5-23 15:35
这是用你那个3D多段线转2D多段线的插件转的,刚刚上传的是未转换的,这涉及到好几个步骤,这是一种3D模型 ...

二维多段线简化节点有现成的

搜狗截图20180523160400.png

点评

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

使用道具 举报

已领礼包: 50个

财富等级: 招财进宝

 楼主| 发表于 2018-5-23 16:08:14 | 显示全部楼层
本帖最后由 君是我的泪 于 2018-5-23 16:18 编辑
newer 发表于 2018-5-23 16:03
二维多段线简化节点有现成的

我的是CAD2006,版本很低的,找到了多段线抽稀,为什么抽稀以后,会从二维多段线变成多段线,神奇,已解决
http://bbs.xdcad.net/forum.php?m ... hlight=%B3%E9%CF%A1

点评

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

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2018-5-23 16:23:16 | 显示全部楼层
君是我的泪 发表于 2018-5-23 16:08
我的是CAD2006,版本很低的,找到了多段线抽稀,为什么抽稀以后,会从二维多段线变成多段线,神奇,已解决 ...

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

使用道具 举报

已领礼包: 1304个

财富等级: 财源广进

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-26 12:57 , Processed in 0.194825 second(s), 48 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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