明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2338|回复: 7

[提问] 自动绘制多段线各点垂线,如何保证垂线都在多线外侧

[复制链接]
发表于 2014-9-25 15:46 | 显示全部楼层 |阅读模式
如何让多段线垂线都在多段线外侧
(defun C:t11 ()
  (vl-load-com)
  (setq cur (car (entsel)))
  (setq
    lb (mapcar
         'cdr
         (vl-remove-if-not '(lambda (x) (= (car x) 10)) (entget cur))
       )
  )
  (setq n 0)
  (while (<= n (length lb))
    (setq p1 (car (nth n lb)))
    (setq p2 (cadr (nth n lb)))
    (setq p (list  p1  p2  0.0))
    (setq obj (vlax-ename->vla-object cur))
    (setq tan (vlax-curve-getFirstDeriv
                obj
                (vlax-Curve-GetParamatDist
                  obj
                  (vlax-curve-getDistAtPoint obj p)
                )
              )
    )
    (setq pe (polar p (+ (/ pi 2) (atan (/ (cadr tan) (car tan)))) 10))
    (vl-cmdf "line" p pe "")
    (setq n (+ n 1))
  )
)

本帖子中包含更多资源

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

x
"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2014-9-25 16:54 | 显示全部楼层
估计这个要先取多段线的三个点,判断非自交多段是否顺时针或逆时针。
 楼主| 发表于 2014-9-25 17:07 | 显示全部楼层
我倒是觉得没那么复杂,我想就判断点在多段线哪一侧,然后加180度就可以

点评

黄大师的指点不用怀疑的  发表于 2014-9-26 11:27
发表于 2014-9-28 18:59 | 显示全部楼层
本帖最后由 llsheng_73 于 2014-9-28 19:03 编辑

个人理解能力有限,个人认为未封闭多线段没有内外的区分,所谓的“内外”完全根据视觉上的感觉,而这点经验无法传递给计算机,所以无法让它进行判断,柱主的U字形的曲线可以有一个大家都可接受的内外的说法,但是S或者Z,N这样形状的如何界定内外?
当然如果按楼主本来的意思想保证短线全都在一边有个比较简单的办法,第一条线绘制出来后,计算出第二条线的外端点(不与原多线段相接的那个点),用它和前一条线的外端点临时绘制一根直线段与原多线段相交,如果交点数量是奇数就说明它们不在同一方向,需要加上180度进行反向
发表于 2014-9-28 20:11 | 显示全部楼层
本帖最后由 lyqiezi 于 2014-9-28 20:15 编辑

我觉得应该在绘制前给一个示意,在线段的起点位置显示绘制的方向(画出第一条垂线),如果不对,就右键改方向(可以循环多次改变方向)。
至于转折以后的角度,实际上也是多线段的角度,取得这个角度,就可以确定了

点评

这样不智能了!  发表于 2014-9-29 12:53
 楼主| 发表于 2014-9-29 11:53 | 显示全部楼层
llsheng_73 发表于 2014-9-28 18:59
个人理解能力有限,个人认为未封闭多线段没有内外的区分,所谓的“内外”完全根据视觉上的感觉,而这点经验 ...

你的说法很对,我也觉得这样
发表于 2014-9-29 14:44 | 显示全部楼层
(setq pe (polar p (+ (/ pi 2) (atan (/ (cadr tan) (car tan)))) 10))
改成如下方式:
(setq pe (polar p (+ (/ pi 2) (angle '(0 0 0) tan)) 10))
 楼主| 发表于 2014-9-29 15:57 | 显示全部楼层
Gu_xl 发表于 2014-9-29 14:44
(setq pe (polar p (+ (/ pi 2) (atan (/ (cadr tan) (car tan)))) 10))
改成如下方式:
(setq pe (polar ...

谢谢版主,这样可以了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-4-27 08:25 , Processed in 0.324311 second(s), 36 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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