找回密码 注册 QQ登录
开思网工业级高精度在线3D打印服务

iCAx开思网

CAD/CAM/CAE/设计/模具 高清视频【积分说明】如何快速获得积分?快速3D打印 手板模型CNC加工服务在线3D打印服务,上传模型,自动报价
查看: 16201|回复: 9
打印 上一主题 下一主题

[原创] 一个ACAD的高级应用问题,高手请进!!

[复制链接]
跳转到指定楼层
1
发表于 2006-6-2 09:44:39 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多同行朋友,交流,分享,学习。

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

x
在autolisp中,要实现加长一根线段,如何让线段在希望加长一的端加长?
如(command "line" (list 0 0) (list 50 40))
     (command "lengthen" "de" 20 (entlast) "")
我希望在终点加长,结果先在线段起点加长几次,然后分别在起点与终点各加长一次,要实现把增量一直加在起点端或终点端,该如何控制?请高手指点!!
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 赞一下!赞一下!
2
发表于 2006-6-2 17:58:49 | 只看该作者
请高手出招!
3
发表于 2006-6-2 23:37:33 | 只看该作者

回答

1:可以先用(entsel)获得要加长的对象和输入点的坐标,
可以用(car(entsel))获得对象句柄,可以用(cadr(entsel))获得输入点的坐标。
2:用(entget(car(entsel)))获得对象的信息列表,可以(cdr(assoc 10 entlist))获得起点坐标,用(cdr(assoc 11 entlist))获得终点坐标。
3:比较起点和终点分别和输入点的距离(distance p0 p1),那个点的距离近就表示要从那个点延长。
4
发表于 2006-6-2 23:42:20 | 只看该作者

看法

看样子还是新手,有时间一起交流。
5
发表于 2006-6-3 08:33:26 | 只看该作者
谢谢高手的指点!可是我要加长的是几千条线段,不能用entsel来一个个地选取,如果直接用(command "lengthen" "de" 200  (cdr( 11 (ssname ss n))"")获得终点来延长,结果每次延长的都不是需要延长的全部,百分之九十左右是正确的,其它百分之十左右的却在起点端延长,我试了好几次都一样,请高手继续指点!
6
发表于 2006-6-5 08:20:42 | 只看该作者
我试了很多次,每次都不一样,请高手指点,以下程序哪里出了问题?

(defun c:xxc (/ o ob1 ob)
  (setvar "cmdecho" 0)
  (setq o (getvar "osmode"))
  (setvar "osmode" 0)
  (command "line" (list 0 0) (list 500 0) "")
  (setq ob1 (entlast))
  (command "array" ob1 "" "p" (list 0 0) 500 "" "" "")
  (setq ob (entnext))
  (while ob
    (command "lengthen"
             "de"
             200
             (cdr (assoc 11 (entget ob)))
             ""
    )
    (setq ob (entnext ob))
  )
  (command "zoom" "e")
  (setvar "osmode" o)
  (princ)
)
7
发表于 2006-6-6 17:41:19 | 只看该作者
高手在哪里?快救命哪!!
8
发表于 2006-6-7 12:48:15 | 只看该作者
不行,这里等得太辛苦了,得换个地方!
9
发表于 2006-6-7 18:18:46 | 只看该作者
真是怪,今天用每次都很正常,前几天没一次正常,且每次都不一样?倒底是软件不稳定还是系统的问题,哪位高手请指点一下在下的迷津!!!

今天试的代码如下:
(defun c:xxx( / ss ssl n ent end)
  (setq ss(ssget "x" '((0 . "line")))
        ssl(sslength ss))
  (setq n 0)
  (while (<= n ssl)
    (setq ent(entget(ssname ss n))
          end(cdr(assoc 11 ent)))
    (command "lengthen" "de" -200 end "")
    (setq n(1+ n))
    )
  (princ)
  )

和前几天的一模一样,真是怪!!!!!!
10
发表于 2006-7-7 08:40:17 | 只看该作者
难道这几行东东真的成了段誉的六脉神剑,要靠天吃饭?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3D打印手板模型快速制作服务,在线报价下单!

QQ 咨询|手机版|联系我们|iCAx开思网  

GMT+8, 2025-1-27 11:26 , Processed in 0.038316 second(s), 11 queries , Gzip On, Redis On.

Powered by Discuz! X3.3

© 2002-2025 www.iCAx.org

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