明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 3244|回复: 13

如何在Autolisp中调用延伸命令

  [复制链接]
发表于 2004-8-23 20:17:00 | 显示全部楼层 |阅读模式
各位大侠,请问如何在Autolisp中调用延伸命令!比如要延伸的线为ee,所要连接到的对象是dd请问,如何延伸?
我用(command "extend" dd "" ee "")不行,提示说没有延伸方向,如何确定延伸方向呢?望各位高手指教!
发表于 2004-8-23 20:59:00 | 显示全部楼层
(command "extend" dd "" ee "")可以
发表于 2004-8-24 09:34:00 | 显示全部楼层
Must Use (COMMAND "EXTEND" DD "" PT "")
发表于 2004-8-24 10:43:00 | 显示全部楼层
(command "_.extend" dd "" (cons ee pt) "")
发表于 2004-8-24 11:23:00 | 显示全部楼层
meflying发表于2004-8-24 10:43:00(command \"_.extend\" dd \"\" (cons ee pt) \"\")
老大,我的经验是extend不可行,fillet可行参考程序:设定距离内,线段延伸或截断
  1. (defun exztempl2 ()    (setq i 0)
  2.    (repeat (sslength ss)
  3.        (setq ename (ssname ss i))
  4.        (setq endata (entget ename))
  5.        (setq enlay (cdr (assoc 8 endata)))
  6.        (setq p1 (cdr (assoc 10 endata)))
  7.        (setq p2 (cdr (assoc 11 endata)))
  8.        (setq j 0)
  9.        (setq dtmin nil)
  10.        (repeat (- (sslength ss) 0)
  11.            (setq eename (ssname ss j))
  12.            (setq eedata (entget eename))
  13.            (setq eenlay (cdr (assoc 8 eedata)))
  14.            (setq p3 (cdr (assoc 10 eedata)))
  15.            (setq p4 (cdr (assoc 11 eedata)))
  16.            (if (and (/= i j) (= enlay eenlay))
  17.   (progn
  18.      (setq px (inters p1 p2 p3 p4))
  19.      (setq px2 (inters p1 p2 p3 p4 nil))     (if (/= px nil)
  20.          (progn
  21.              (setq dt1 (distance p3 px))
  22.              (setq dt2 (distance p4 px))
  23.              (setq dtmin (min dt1 dt2))
  24.              (if (and (< dtmin dtset) (/= dtmin 0))
  25.     (progn
  26.        (if (> dt1 dt2)
  27.            (command "trim" ename "" p4 "")
  28.            (command "trim" ename "" p3 "")
  29.        )
  30.     )
  31.              )
  32.          )
  33.      )     (if (and (= px nil) (/= px2 nil)) ;不平行,有延伸交点
  34.          (progn
  35.              (setq px (inters p1 p2 p3 p4 nil))
  36.              (setq pxx (inters p3 px p1 p2))
  37.              (if (/= pxx nil)    ;有延伸交点在P12线上
  38.     (progn
  39.        (setq dt1 (distance p3 pxx))
  40.        (setq dt2 (distance p4 pxx))
  41.        (setq dtmin (min dt1 dt2))
  42.        (if (< dtmin dtset)
  43.            (progn
  44.                (if (< dt1 dt2)
  45.       (command "extend" ename "" p3 "")
  46.       (command "extend" ename "" p4 "")
  47.                )
  48.            )
  49.        )
  50.     )
  51.     (progn
  52.        (setq dt1 (distance p3 px))
  53.        (setq dt2 (distance p4 px))
  54.        (setq dtmin (min dt1 dt2))
  55.        (if (< dtmin dtset)
  56.            (progn
  57.                (if (< dt1 dt2)
  58.       (command "fillet" ename (cons eename p3))
  59.       (command "fillet" ename (cons eename p4))
  60.                )
  61.            )
  62.        )
  63.     )
  64.              )
  65.          )
  66.      )
  67.   )
  68.            )           (setq j (+ j 1))
  69.        )
  70.        (setq i (+ i 1))   )   (prin1)
  71. )
  72. (defun c:xxx ()   (setvar "cmdecho" 0)
  73.    (setvar "blipmode" 0)
  74.    (setq sel (getvar "osmode"))
  75.    (setq dfc (getvar "dimlfac"))
  76.    (setvar "osmode" 0)
  77.    (setvar "filletrad" 0)
  78.    (setq cly (getvar "clayer"))
  79.    (setq dtset (getreal "\nSetup join distance?"))   (setq ss (ssget))
  80.    (setq ss (ssget "p" '((0 . "LINE"))))   (setq pkx (getvar "pickbox"))
  81.    (setvar "pickbox" 0)   (if (/= ss nil)
  82.        (exztempl2)
  83.    )   (setvar "osmode" sel)
  84.    (setvar "pickbox" pkx)
  85.    (command "layer" "s" cly "")   (prin1)
  86. )
发表于 2004-8-24 13:31:00 | 显示全部楼层
老老大,你的问题是如何延伸,如何确定延伸方向,而我的代码正是解决这个问题的...


其中PT就是需要延伸的一边的端点即可
发表于 2004-8-24 15:28:00 | 显示全部楼层
各位请消消火
发表于 2004-8-24 17:17:00 | 显示全部楼层
奇怪!我在2004下用(command "extend" dd "" ee "")真的可以,没有提示说没有延伸方向,自动按正确的方向延伸。是不是还有什么变量设置。
发表于 2004-8-24 23:50:00 | 显示全部楼层
myflying的说法是对的,必须给出点,要不就有二意性
发表于 2004-8-26 08:58:00 | 显示全部楼层
本帖最后由 作者 于 2004-8-26 9:55:31 编辑

无痕发表于2004-8-24 23:50:00myflying的说法是对的,必须给出点,要不就有二意性

如图,如果不给出方向,这样,哪边算正确?

本帖子中包含更多资源

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

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

本版积分规则

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

GMT+8, 2024-9-30 18:28 , Processed in 0.205481 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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