找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1763|回复: 7

[LISP程序]:怎么在CAD R14实现多义线倒直角呀!

[复制链接]
发表于 2003-10-8 00:41:09 | 显示全部楼层 |阅读模式

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

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

×
*-*9
请求大家帮助:
    由于我是干建筑房产工作,经常用多义线(pline)画线,可以总是不能直接倒直角,使我的工作速度减慢,我想请大家帮助我,用LISP编程,让我解决这个问题。如果哪位大哥、大姐可以帮助我的话,请你发FLFUTHPSS@SOHU.COM或FLFUTHPSS@YAHOO.COM.CN
                                                          谢谢大家
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 593个

财富等级: 财运亨通

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

使用道具 举报

发表于 2003-10-15 17:55:12 | 显示全部楼层
不是搞建筑的, 请问多义线倒直角是什么意思呀!?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2003-10-16 09:50:04 | 显示全部楼层
我有类似的程序,但不成熟,就是pline线有转折就不行,好像xdapi可以很方便的搞定,希望高手编个lisp吧。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2003-10-16 12:40:34 | 显示全部楼层
最初由 coolzhb 发布
[B]我有类似的程序... [/B]


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

使用道具 举报

发表于 2003-10-16 14:50:48 | 显示全部楼层
我就贴出来!




  1.   [FONT=courier new]
  2. (defun c:tpl (/ p1 p2 l1 l2 w1 w2 a1 a2 pt1 pt2 pt11 pt12 pt21 pt22 ps1 ps2
  3.                                                                 p0 mp1 mp2
  4.                                                  )
  5.         (setq p1 (entsel)
  6.                                 p2 (entsel)
  7.         )
  8.         (setq l1 (entget (car p1))
  9.                                 l2 (entget (car p2))
  10.         )
  11.         (setq w1 (cdr (assoc 40 l1))
  12.                                 w2 (cdr (assoc 40 l2))
  13.         )
  14.         (command "explode" p1)
  15.         (setq a1 (entlast))
  16.         (command "explode" p2)
  17.         (setq a2 (entlast))
  18.         (setq pt1 (entget a1)
  19.                                 pt2 (entget a2)
  20.                                 pt11 (cdr (assoc 10 pt1))
  21.                                 pt12 (cdr (assoc 11 pt1))
  22.                                 pt21 (cdr (assoc 10 pt2))
  23.                                 pt22 (cdr (assoc 11 pt2))
  24.                                 ps1 (car (cdr p1))
  25.                                 ps2 (car (cdr p2))
  26.         )
  27.         (setq p0 (inters
  28.                                                  pt11
  29.                                                  pt12
  30.                                                  pt21
  31.                                                  pt22
  32.                                                  nil
  33.                                          )
  34.         )
  35.         (setq mp1 (list 10 (car p0) (cadr p0))
  36.                                 mp2 (list 11 (car p0) (cadr p0))
  37.         )
  38.         (if (or
  39.                                 (< (* (- (car pt11) (car ps1)) (- (car p0) (car ps1))) 0)
  40.                                 (< (* (- (cadr pt11) (cadr ps1)) (- (cadr p0) (cadr ps1))) 0)
  41.                         )
  42.                 (setq pt1 (subst
  43.                                                                 mp2
  44.                                                                 (assoc 11 pt1)
  45.                                                                 pt1
  46.                                                         )
  47.                 )
  48.                 (setq pt1 (subst
  49.                                                                 mp1
  50.                                                                 (assoc 10 pt1)
  51.                                                                 pt1
  52.                                                         )
  53.                 )
  54.         )
  55.         (entmod pt1)
  56.         (if (or
  57.                                 (< (* (- (car pt21) (car ps2)) (- (car p0) (car ps2))) 0)
  58.                                 (< (* (- (cadr pt21) (cadr ps2)) (- (cadr p0) (cadr ps2))) 0)
  59.                         )
  60.                 (setq pt2 (subst
  61.                                                                 mp2
  62.                                                                 (assoc 11 pt2)
  63.                                                                 pt2
  64.                                                         )
  65.                 )
  66.                 (setq pt2 (subst
  67.                                                                 mp1
  68.                                                                 (assoc 10 pt2)
  69.                                                                 pt2
  70.                                                         )
  71.                 )
  72.         )
  73.         (entmod pt2)
  74.         (command "pedit" a1 "y" "w" (rtos w1 2 2) "")
  75.         (command "pedit" a2 "y" "w" (rtos w2 2 2) "")
  76.         (princ)
  77. )

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

使用道具 举报

发表于 2003-10-16 14:55:59 | 显示全部楼层
还有一个,也贴出来!

  1.   [FONT=courier new]
  2. (defun c:fi (/ pt1 pt2 e1 e2 s1 s2 r w1 w2 ne1 ne2 ls1 ls2 il)
  3.   (princ "剪切多义线\n")
  4.   (defun fi--err (msg)
  5.     (if (/= msg "*function cancelled*")
  6.       (princ (strcat "\nerror:" msg))
  7.     )
  8.     (princ)
  9.   )
  10.   (defun chkpline (is s w0 / il ne)
  11.     (setq il 0)
  12.     (while (< il is)
  13.       (progn
  14.         (setq ne (ssname s il))
  15.         (if (= (car (assoc 0 (entget ne))) "LINE")
  16.           (command "pedit" ne "" "w" w0 "")
  17.         )
  18.         (setq il (+ il 1))
  19.       )
  20.     )
  21.   )
  22.   (setq cmd (getvar "cmdecho"))
  23.   (setq os (getvar "osmode"))
  24.   (setq *error* fi--err)
  25.   (setvar "cmdecho" 0)
  26.   (setvar "osmode" 512)
  27.   (setq pt1 (getpoint "\n选择第一条线: "))
  28.   (setq pt2 (getpoint "\n选择第二条线: "))
  29.   (setq r0 (getvar "filletrad"))       ; (prompt (strcat "\n输入圆角半径<"
  30.                                        ; (rtos r0) ">:"))
  31.                                        ; (initget 4)
  32.                                        ; (setq r (getreal))
  33.                                        ; (if (null r) (setq r r0))
  34.   (setq r 0)
  35.   (setvar "filletrad" r)
  36.   (setq e1 (ssget pt1))
  37.   (setq e2 (ssget pt2))
  38.   (setq ne1 (ssname e1 0))
  39.   (setq ne2 (ssname e2 0))
  40.   (setq w1 (cdr (assoc 40 (entget ne1))))
  41.   (setq w2 (cdr (assoc 40 (entget ne2))))
  42.   (if (equal (entget ne1) (entget ne2))
  43.     (progn
  44.       (command "explode" pt1)
  45.       (setq s1 (ssget "p"))
  46.       (setq ne1 (ssname e1 0))
  47.       (setq ls1 (sslength s1))
  48.       (setq e2 (ssget pt2))
  49.       (command "fillet" pt1 pt2)
  50.       (if (/= r 0)
  51.         (command "pedit" "l" "y" "w" w1 "")
  52.       )
  53.       (chkpline ls1 s1 w1)
  54.     )
  55.     (progn
  56.       (if (/= w1 nil)
  57.         (progn
  58.           (command "explode" pt1)
  59.           (setq s1 (ssget "p"))
  60.           (setq e1 (ssget pt1))
  61.           (setq ne1 (ssname e1 0))
  62.           (setq ls1 (sslength s1))
  63.         )
  64.         (setq ls1 0)
  65.       )
  66.       (if (/= w2 nil)
  67.         (progn
  68.           (command "explode" pt2)
  69.           (setq s2 (ssget "P"))
  70.           (setq e2 (ssget pt2))
  71.           (setq ne2 (ssname e2 0))
  72.           (setq ls2 (sslength s2))
  73.         )
  74.         (setq ls2 0)
  75.       )
  76.       (command "fillet" pt1 pt2)
  77.       (if (and
  78.             (/= r 0)
  79.             (/= w1 0)
  80.           )
  81.         (command "pedit" "L" "y" "w" w1 "")
  82.       )
  83.       (if (/= w1 nil)
  84.         (command "pedit" ne1 "y" "j" s1 "" "w" w1 "")
  85.       )
  86.       (if (/= w2 nil)
  87.         (command "pedit" ne2 "y" "j" s2 "" "w" w2 "")
  88.       )
  89.       (chkpline ls1 s1 w1)
  90.       (chkpline ls2 s2 w2)
  91.     )
  92.   )
  93.   (setvar "cmdecho" cmd)
  94.   (setvar "osmode" os)
  95.   (princ)
  96. )

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

使用道具 举报

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-9-20 09:54 , Processed in 0.370459 second(s), 45 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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