明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
12
返回列表 发新帖
楼主: 缘份呐

求高手指点批量偏移的问题?

  [复制链接]
发表于 2012-6-6 15:14:08 | 显示全部楼层
缘份呐 发表于 2012-6-6 15:03
此图形反向偏移时,就有BUG。

也试了,没问题!等你的gif吧!
 楼主| 发表于 2012-6-6 21:44:07 | 显示全部楼层
动画上传了,不知清楚吗?

本帖子中包含更多资源

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

x
 楼主| 发表于 2012-6-6 21:45:17 | 显示全部楼层
zyhandw 发表于 2012-6-6 14:45
不如把你测试有问题的dwg附上看看,也好有针对性的找出问题所在,从而解决问题!

动画上传了,有空参考下。
发表于 2012-6-7 07:51:19 | 显示全部楼层
经测试,反向便宜在选择基地点时候如果点在某个图形内部会出问题,点在所有图形外部则可用
 楼主| 发表于 2012-6-7 08:28:28 | 显示全部楼层
好象和图形的顺序有关
发表于 2012-6-7 08:54:15 | 显示全部楼层
如果对封闭的圈就选内外,不要点方向,对线来说就支持点选方向,这样相对好些,
因为对封闭的圈来说用点选方向不好叛断线的起点和方向,所以就会出来有些偏内有些偏外了.
 楼主| 发表于 2012-6-7 09:06:05 | 显示全部楼层
kwok 发表于 2012-6-7 08:54
如果对封闭的圈就选内外,不要点方向,对线来说就支持点选方向,这样相对好些,
因为对封闭的圈来说用点选方向 ...

恩路很好,这个用纯LISP好实现吗?因为要支持R 14
发表于 2013-1-22 23:53:24 | 显示全部楼层
(defun C:ww ( / curve ent holdcmd holdosmode jang n pt pt1 pt2 ss tmp x)
  (defun LEN (CURVE / TLEN)
    (setq TLEN (vlax-curve-getdistatparam
   CURVE
   (vlax-curve-getendparam CURVE)
        )
    )
  )
  (command "_.UNDO" "BE")
  (if (null tee_dist)
    (setq tee_dist 1000.0)
  ) ;_设置全局变量
  (setq HOLDOSMODE (getvar "OSMODE"))
  (setq HOLDCMD (getvar "CMDECHO"))
  (setvar "CMDECHO" 0)
  (setvar "OSMODE" 0)
  (if (setq ss (ssget '((0 . "*LINE,CIRCLE,ARC"))))
    (progn
      (setq n 0)
      (initget 2)
      (if (setq tmp
   (getdist
     (strcat "\n指定偏移距离(正(+)向外偏移 /负(-)向内偏移): <"
      (rtos tee_dist 2)
      ">"
     )
   )
   )
(setq tee_dist tmp)
      ) ;_不输入时自动使用上一次输入数值
      (command "_.OFFSET" "L" "C" "" "")
(repeat (sslength ss)
(setq ent (ssname ss n)
       n   (1+ n)
)
(setq CURVE (vlax-ename->vla-object ENT)
       x     (vlax-curve-getParamAtDist curve (/ (len curve) 3.33))
       pt    (vlax-curve-getPointAtParam curve x)
);_获得线上指定距离值的点及参数
(setq JANG (angle '(0 0 0) (vlax-curve-getfirstderiv CURVE X)))
(setq PT1 (polar PT (+ JANG (* 0.5 pi)) 0.00000001))
(setq PT2 (polar PT (- JANG (* 0.5 pi)) 0.00000001))
(command "_.OFFSET" (abs tee_dist) ENT PT1 "")
(if (or (and (> tee_dist 0) (> (LEN CURVE) (LEN (entlast))))
  (and (< tee_dist 0) (< (LEN CURVE) (LEN (entlast))))
     )
   (progn
     (entdel (entlast))
     (command "_.OFFSET" (abs tee_dist) ENT PT2 "")
   )
)
      )
    )
  )
  (setvar "OSMODE" HOLDOSMODE)
  (setvar "CMDECHO" HOLDCMD)
  (command "_.UNDO" "E")
  (princ)
)


这个是偏移到当前层。。。如果不要当前,把       (command "_.OFFSET" "L" "C" "" "")   去掉
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-6-1 20:15 , Processed in 0.170045 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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