明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
12
返回列表 发新帖
楼主: matichen

请问:如何用LISP实现将PL环向外偏移一些。关键是不知如何确定方向。

  [复制链接]
发表于 2002-12-10 15:34:00 | 显示全部楼层

向内凹陷的弧比较难办。但既然向外偏可以办到,为何不这样呢?

1、将已知的多义线pl1向外偏一次,得到一个新的多义线pl2
2、在pl1上找到任意一个点p1,以及在pl2上其对应的另一个点p2
3、求出p3 (polar p1
                 (angle p2 p1)
                 (distance p1 p2)
           )
4、p3应该是pl1多义线内的一点,向p3点偏移吧。
发表于 2002-12-10 16:35:00 | 显示全部楼层

看来到最后程序也不会简单到那里了!!!!!

发表于 2002-12-17 15:54:00 | 显示全部楼层

用vlisp中的offset方法做左右偏移最简单

发表于 2002-12-17 21:06:00 | 显示全部楼层

向外偏负值应该就是向内偏吧

发表于 2002-12-18 08:09:00 | 显示全部楼层

对3dsolid 圆柱作偏移面,正数为向外偏移(放大圆柱直径),对3dsolid孔圆柱....

对3dsolid 圆柱作偏移面,正数为向外偏移(放大圆柱直径),对3dsolid孔圆柱作偏移面,负数为向外偏移(放大孔直径)。
平面对象偏移,autocad本身offset指令并没有负值偏移,内与外也不必太认真了。
发表于 2002-12-18 08:35:00 | 显示全部楼层

改用VLISP中OFFSET方法(将PL环向外偏移一些)

;;改用VLISP中OFFSET方法(将PL环向外偏移一些)
(defun C:TEE (/ HOLDOSMODE HOLDCMD WW CURVE DIST)
  (defun LEN (CURVE)
    (setq TLEN (vlax-curve-getdistatparam
                 CURVE
                 (vlax-curve-getendparam CURVE)
               )
    )
  )
  (setq HOLDOSMODE (getvar "OSMODE"))
  (setq HOLDCMD (getvar "CMDECHO"))
  (setvar "CMDECHO" 0)
  (setvar "OSMODE" 0)
  (setq WW (entsel "\n选取偏移对象: "))
  (if (/= WW NIL)
    (progn
      (setq CURVE (vlax-ename->vla-object (car WW)))
      (initget 3)
      (setq
        DIST (getdist "\n指定偏移距离<正__向外偏移 /负__向内偏移>: ")
      )
      (vl-catch-all-apply
        'vla-offset
        (list CURVE (* -1.0 DIST))
      )
      (cond
        ((and (> DIST 0) (> (LEN CURVE) (LEN (entlast))))
         (entdel (entlast))
         (vl-catch-all-apply
           'vla-offset
           (list CURVE DIST)
         )
        )
        ((and (< DIST 0) (< (LEN CURVE) (LEN (entlast))))
         (entdel (entlast))
         (vl-catch-all-apply
           'vla-offset
           (list CURVE DIST)
         )
        )
      )
    )
  )
  (setvar "OSMODE" HOLDOSMODE)
  (setvar "CMDECHO" HOLDCMD)
  (princ)
)
 楼主| 发表于 2002-12-18 12:21:00 | 显示全部楼层

这个好用。

发表于 2002-12-19 02:46:00 | 显示全部楼层

If  negative,  make a "smaller" curve

本帖最后由 作者 于 2002-12-19 2:46:07 编辑

If the offset is negative, this is interpreted as being an offset to make a "smaller" curve (that is, for an arc it would offset to a radius that is "Distance less" than the starting curve's radius). If "smaller" has no meaning, then it would offset in the direction of smaller X, Y, and Z WCS coordinates.

以上摘自cad帮助中 val-offset 方法说明, dist负值已经是做“小”一点的offset了,为什么还要做一个判断呢?
发表于 2002-12-19 08:02:00 | 显示全部楼层

PL环有方向性,顺时针 & 逆时针 你试看看就知道

发表于 2002-12-19 10:34:00 | 显示全部楼层

我常用的方法是offset 一次,再比较offset前和offset后的面积的大小.

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

本版积分规则

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

GMT+8, 2025-1-16 00:59 , Processed in 0.194651 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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