找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 2970|回复: 5

[求助] 希望高手能帮我把程序里的偏移数值整数该成带小数点的也可以

[复制链接]

已领礼包: 844个

财富等级: 财运亨通

发表于 2014-9-21 19:41:07 | 显示全部楼层 |阅读模式

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

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

×
;;;多段线单边偏移
(defun l_offset (/ ce os ENT ENT1 ENT2 DIST PNT)

  (defun SEGMENTPTS (ENT / PNT VOBJ PARAM1 PARAM2 P1 P2 SEGPTS)
    (and
      (setq VOBJ (vlax-ename->vla-object (car ENT)))
      (setq PNT (trans (cadr ENT) 1 0))
      (setq PNT (vlax-curve-getclosestpointto VOBJ PNT))
      (setq PARAM1 (vlax-curve-getparamatpoint VOBJ PNT))
      (setq PARAM1 (fix PARAM1))
      (setq PARAM2 (1+ PARAM1))
      (if (equal PARAM1 (vlax-curve-getstartparam VOBJ) 1e-10)
        (setq P1 (vlax-curve-getstartpoint VOBJ))
        (setq P1 (vlax-curve-getpointatparam VOBJ PARAM1))
      )
      (if (equal PARAM2 (vlax-curve-getendparam VOBJ) 1e-10)
        (setq P2 (vlax-curve-getendpoint VOBJ))
        (setq P2 (vlax-curve-getpointatparam VOBJ PARAM2))
      )
      P1
      P2
      (setq BULGE (vla-getbulge VOBJ PARAM1))
      (setq SEGPTS (list P1 P2 BULGE))
    )
    SEGPTS
  )

  (defun CALCBULGE (ENT / ARCRAD CENDIR HLFANG)
    (setq VX1 (nth 0 ENT)
          VX2 (nth 1 ENT)
          BLG (nth 2 ENT)
    )
    (setq HLFANG (* 2 (atan BLG))
          CENDIR ((if (< BLG 0)
                    -
                    +
                  )
                   (- (angle VX1 VX2) HLFANG)
                   (/ pi 2)
                 )
          ARCRAD (abs (/ (/ (distance VX1 VX2) 2.0) (sin HLFANG)))
    )
    (list
      (polar VX1 CENDIR ARCRAD)
      ARCRAD
      (* (abs HLFANG) 2.0)
    )
  )

  (setq ce (getvar "cmdecho"))
  (setvar "cmdecho" 0)
  (command "_.undo" "_group")
  (setq os (getvar "osmode"))
  (setvar "osmode" 0)
  (setq DIST (getint "\n输入偏移距离<3>:"))
  (initget 1)
  (if (= dist nil)
    (setq dist 3)
    )
  (setq b 1)
  (while (<= b 100)
     (prompt "\n拾取POLYLINE要偏移的段: ")
    (setq ENT (ssget ":S" '((0 . "*POLYLINE"))))
     (if (not (null ENT))(progn
  (setq   ENT (list (ssname ENT 0)
                  (osnap (cadr (nth 3 (car (ssnamex ENT 0)))) "nea")
            )
  )
  (setq PNT (getpoint "\n拾取方向:"))
  (setq ENT1 (SEGMENTPTS ENT))
  (if (/= (nth 2 ENT1) 0)
    (setq ENT (CALCBULGE ENT1))
  )
  (if (/= (nth 2 ENT1) 0)
    (if        (> (nth 2 ENT1) 0)
      (command "_.arc" "c" (nth 0 ENT) (nth 0 ENT1) (nth 1 ENT1))
      (command "_.arc" "c" (nth 0 ENT) (nth 1 ENT1) (nth 0 ENT1))
    )
    (command "_.line" (nth 0 ENT1) (nth 1 ENT1) "")
  )
  (setq ENT2 (entlast))
  (command "_.Offset" DIST ENT2 PNT "")
  (entdel ENT2)
  (setq b (1+ b)))
  (setq b 101)))
  (setvar "osmode" os)
  (command "_.undo" "_end")
  (setvar "cmdecho" ce)
  (princ)
)
(defun c:of ()
(l_offset))

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

已领礼包: 344个

财富等级: 日进斗金

发表于 2014-9-21 20:18:56 | 显示全部楼层
(setq DIST (getint "\n输入偏移距离<3>:"))
==>
(setq DIST (getreal "\n输入偏移距离<3>:"))
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 1 反对 0

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

发表于 2014-9-21 21:25:54 | 显示全部楼层
可以看看利用 Ge 几何库函数作的这个偏移

http://bbs.xdcad.net/forum.php?mod=viewthread&tid=676094

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

使用道具 举报

已领礼包: 10395个

财富等级: 富甲天下

发表于 2014-9-22 08:02:55 | 显示全部楼层
(setq DIST (getint "\n输入偏移距离<3>:"))
==>
(setq DIST (getdist "\n输入偏移距离<3>:"))
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 394个

财富等级: 日进斗金

发表于 2014-9-23 15:31:47 | 显示全部楼层

(setq DIST (getdist "\n输入偏移距离<3>:"));这个可以量取也可以输入.
:lol
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 844个

财富等级: 财运亨通

 楼主| 发表于 2014-9-24 08:18:26 | 显示全部楼层
程序已经按G版的方式改好了,谢谢 各位高手的指教:):)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-14 21:57 , Processed in 0.259505 second(s), 43 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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