找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1337|回复: 12

[讨论]:多义线画中心线,精简!

[复制链接]
发表于 2006-6-17 15:38:33 | 显示全部楼层 |阅读模式

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

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

×
搜罗网络,多是圆,弧,矩形的中心线绘制,却缺少了多义线的中心线程序!

利用eachy大虾下面的程序,可找出圆,弧,矩形,多义线的中心点,后段该怎么写,才能画出中心线,(中心线长超出物体的5mm)

请高手出招!


  1. (defun C:zxc ()
  2. (setvar "cmdecho" 0)
  3. (setvar "osmode" 0)
  4. (setq s (entsel))
  5. (setq obj (vlax-ename->vla-object (car s)))
  6. (vla-getboundingbox obj 'cen_bp 'cen_up)
  7. (setq cen_bp (safearray-value cen_bp))
  8. (setq cen_up (safearray-value cen_up))
  9. (setq mid_pt (polar cen_bp
  10.                (angle cen_bp cen_up)
  11.                (/ (distance cen_bp cen_up) 2)
  12.              )
  13. )
  14. (command "line" mid_pt )
  15. (setvar "osmode" 39)
  16. (prin1)
  17. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 593个

财富等级: 财运亨通

发表于 2006-6-17 16:58:30 | 显示全部楼层 |阅读模式

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

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

×
虽然没有Pline绘制中线,但等高线加密也可以用来绘制中线

http://www.xdcad.net/forum/showt ... 2861277#post2861277
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
 楼主| 发表于 2006-6-18 21:17:13 | 显示全部楼层
链接里的东东不太明白,且没有源程序,想要修改成个性化也无从下手

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

使用道具 举报

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

使用道具 举报

 楼主| 发表于 2006-6-20 00:22:17 | 显示全部楼层
就是以最大长边与最大宽边的中心来画中心线

左边的图为我想要的效果图,右边的图为思路,也就是再怎样怪的多义线,都有一个最大长边与最大宽边,然后长/2,宽/2就得出它们的中心位置了.
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2006-6-20 00:56:45 | 显示全部楼层
  1. [FONT=courier new](defun c:test ()
  2.   (CMDLASC0)
  3.   (if (null dist)
  4.     (setq dist 100.0)
  5.   )
  6.   (setq dist (UDIST 7 "" "中心线长<输入或鼠标直接量取>" DIST nil))
  7.   (princ "\n选择实体: ")
  8.   (setq        ss (ssget)
  9.         i  -1
  10.   )
  11.   (while (setq s1 (ssname ss (setq i (1+ i))))
  12.     (xyp-CrossRed (xyp-get-MinMaxPoint s1 5) (* sc DIST) 1)
  13.   )
  14.   (CMDLA1)
  15. )[/FONT]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-6-21 01:00:12 | 显示全部楼层
xyp1964斑竹真厉害,就是你这程序才是俺想要滴

程序支持多选,棒极了,运行时速也快,真好的程序!

另,此程序有点不好的就是,如果不知道最大长边与最大宽边的尺寸,有时某些多义线,宽边的中心线多出许多,而长边还没到? 是否只要写出超出最大边界5即可,中心线不一定要等长的,只要超出用户定义的长度即可!

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

使用道具 举报

已领礼包: 593个

财富等级: 财运亨通

发表于 2006-6-21 12:36:37 | 显示全部楼层

  1. (defun c:tt (/ dis ss ssl i obj bl ur v dx dy pcen p1 p2 p3 p4)
  2.   (if (not (setq dis (getdist "\nExtension dist<0.0>: ")))
  3.     (setq dis 0.)
  4.   )
  5.   (if (setq ss (ssget '((0 . "*polyline"))))
  6.     (progn
  7.       (setq ssl        (sslength ss)
  8.             i        -1
  9.       )
  10.       (repeat ssl
  11.         (setq obj (vlax-ename->vla-object (ssname ss (setq i (1+ i)))))
  12.         (vla-getboundingbox obj 'bl 'ur)
  13.         (setq bl   (trans (safearray-value bl) 0 1)
  14.               ur   (trans (safearray-value ur) 0 1)
  15.               v           (mapcar '- ur bl)
  16.               dx   (/ (car v) 2.)
  17.               dy   (/ (cadr v) 2.)
  18.               pcen (mapcar '(lambda (a b) (/ (+ a b) 2.)) bl ur)
  19.         )
  20.         (setq p1 (polar pcen pi (+ dx dis))
  21.               p2 (polar pcen 0. (+ dx dis))
  22.               p3 (polar pcen (* 1.5 pi) (+ dy dis))
  23.               p4 (polar pcen (* 0.5 pi) (+ dy dis))
  24.         )
  25.         (command ".line" "_non" p1 "_non" p2 "")
  26.         (command ".line" "_non" p3 "_non" p4 "")
  27.       )
  28.     )
  29.   )
  30.   (princ)
  31. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2006-6-21 13:13:40 | 显示全部楼层
最初由 eachy 发布
[B]虽然没有Pline绘制中线,但等高线加密也可以用来绘制中线

http://www.xdcad.net/forum/showt ... 2861277#post2861277 [/B]


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

使用道具 举报

发表于 2006-6-21 13:41:04 | 显示全部楼层
  1. [FONT=courier new](defun c:test389 ()
  2.   (CMDLASC0)
  3.   (if (null dist)
  4.     (setq dist 5.0)
  5.   )
  6.   (if (null ukw)
  7.     (setq ukw "1")
  8.   )
  9.   (setq ukw (UKWORD 1 "1 2" "中心线方式: 1-等长/2-不等长" ukw))
  10.   (cond        ((= ukw "1")
  11.          (setq dist (UDIST 7 "" "中心线定长<输入或鼠标直接量取>" DIST nil))
  12.         )
  13.         ((= ukw "2")
  14.          (setq dist (UDIST
  15.                       7
  16.                       ""
  17.                       "中心线超出边界长度<输入或鼠标直接量取>"
  18.                       DIST
  19.                       nil
  20.                      )
  21.          )
  22.         )
  23.   )
  24.   (princ "\n选择实体: ")
  25.   (setq        ss (ssget)
  26.         i  -1
  27.   )
  28.   (setvar "osmode" 0)
  29.   (while (setq s1 (ssname ss (setq i (1+ i))))
  30.     (setq pt2 (xyp-get-Pt2XYZ
  31.                 (xyp-get-MinMaxPoint s1 2)
  32.                 0
  33.                 (* dist -1.0)
  34.                 0
  35.               )
  36.           pt4 (xyp-get-Pt2XYZ
  37.                 (xyp-get-MinMaxPoint s1 4)
  38.                 (* dist -1.0)
  39.                 0
  40.                 0
  41.               )
  42.           pt5 (xyp-get-MinMaxPoint s1 5)
  43.           pt6 (xyp-get-Pt2XYZ (xyp-get-MinMaxPoint s1 6) dist 0 0)
  44.           pt8 (xyp-get-Pt2XYZ (xyp-get-MinMaxPoint s1 8) 0 dist 0)
  45.     )
  46.     (cond ((= ukw "1")
  47.            (xyp-CrossRed pt5 (* sc DIST) 1)
  48.           )
  49.           ((= ukw "2")
  50.            (xyp-mklaco "中心线" 1)
  51.            (command "line" pt2 pt8 "")
  52.            (command "line" pt4 pt6 "")
  53.           )
  54.     )
  55.   )
  56.   (CMDLA1)
  57. )[/FONT]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1个

财富等级: 恭喜发财

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

使用道具 举报

 楼主| 发表于 2006-6-21 14:51:18 | 显示全部楼层
eachy斑竹的程序测试通过,好用!顶

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

使用道具 举报

已领礼包: 488个

财富等级: 日进斗金

发表于 2006-6-28 00:32:32 | 显示全部楼层
;;;R2006
(defun c:test( / e)
  (setq e(entsel))
  (command "'zoom""o" e "")
  (command "xline""h" (getvar "VIEWCTR") "")
  (command "zoom""P")
)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-18 19:51 , Processed in 0.368301 second(s), 56 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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