找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1552|回复: 16

[1021]請問LISP怎樣編寫抓取前次所繪製產生的圖元資料

[复制链接]
发表于 2005-10-21 10:47:59 | 显示全部楼层 |阅读模式

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

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

×
請教如何,抓取前次所繪製產生的圖元資料
附上我目前所編寫的部份
(setq pp1 (getpoint "tan" "\n外切線A:"))
(setq pp2 (getpoint "tan" "\n外切線B:"))
(setq pp3 (command "circle" "t" pp1 pp2 "850" ""))
(setq pp4 (entget (entlast)))
(command "offset" "350" pp4 "")
需要解答的問題是如何將用圓所繪出的圖元作 offset 的動作.

另外請教如何,點選兩點畫出箭頭 如: "→" 形狀.

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

已领礼包: 593个

财富等级: 财运亨通

发表于 2005-10-21 12:22:24 | 显示全部楼层
1 (entlast)

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

使用道具 举报

 楼主| 发表于 2005-10-21 23:34:14 | 显示全部楼层
谢谢您的解答
但仍有些问题再次请教
01. offset 该怎样判断offset 方向
02. 若在做完这些切线之后该怎样用 trim来切除与这圆相切的线段呢
03. 若要画出的箭头,是两段有角度的线,该怎样处理呢
烦请各位高手帮忙解答一下
感激不尽!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 593个

财富等级: 财运亨通

发表于 2005-10-22 00:59:40 | 显示全部楼层
1 如果你你用 vla-offset 就简单了,距离给一正一负就是两个方向,如果用offset命令就要要两个方向分别求点
2 用图说明
3 线已绘出可以求出角度,用该角度加个偏角即可
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-10-22 07:22:21 | 显示全部楼层
1
  1. [FONT=courier new](defun c:test ()
  2.   (princ "\n选择2个切点 : ")
  3.   (setq pp3 (command "circle" "t" "tan" pause "tan" pause "850"))
  4.   (princ "\n选择偏移方向 : ")
  5.   (command "offset" "350" (entlast) pause "")
  6.   (princ)
  7. )[/FONT]


3
  1. [FONT=courier new](load "xyp_lib")
  2. ;|加载通用函数(可在签名栏直接下载)
  3. 如果已经下载xyp_lib并放到搜索路径下可以不再下载!
  4. 利用以下任何一种方式(首选第一种)即可加载和运行通用函数内的所有子程序:
  5. ★1·在acad.lsp中增加(load"xyp_lib")
  6. ■2·在每个程序内增加(load"xyp_lib")
  7. ■3·在command下,输入(load"xyp_lib")
  8. ■4·在菜单.mnl中增加(load"xyp_lib")
  9. ■5·将xyp_lib.vlx文件直接拽到cad屏幕
  10. [COLOR=red] ★通用函数下载地址:[/COLOR]
  11. [url]http://www.xdcad.net/forum/attachment.php?s=&postid=1606661[/url]
  12. [url]http://www.mjtd.com/bbs/dispbbs.asp?boardID=3&ID=37554&page=1[/url]|;

  13. ;;;箭头
  14. (defun c:test ()
  15.   (cmdla0)
  16.   (mkla "箭头" 3)
  17.   (setq pt (getpoint "\n起点<退出> :"))
  18.   (if pt
  19.     (progn
  20.       (command "pline" pt)
  21.       (while (setq pt (getpoint PT "\n下一点<退出> :"))
  22.         (command pt)
  23.       )
  24.       (command "")
  25.       (setq s1        (entlast)
  26.             pte        (vlax-curve-getendpoint s1)
  27.             ang        (+ (PT-ANG s1 pte) (* pi 0.75))
  28.             pt2        (polar pte ang 300)        ;箭头长300
  29.       )
  30.       (command "pline" pte pt2 "")
  31.       (setq s2 (entlast))
  32.       (command "pedit" "m" s1 s2 "" "j" "" "")
  33.     )
  34.   )
  35.   (cmdla1)
  36. )[/FONT]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-10-22 09:00:11 | 显示全部楼层
感谢xyp1964斑主的精辟解答
另在请问以下问题
01.getpoint 后面可以加上所点吗 "tan"  
如:(getpoint "tan" "\n外切线A:")) 因为是听朋友说可以这样写
但好像都会出错说!

02.像斑主这样开发出这么多的程序,
在使用上都是怎样使用呢?是用下拉功能表?还是工具列图示呢?
因为曾经使用过一个 BLUE CAD 的软体发现到说工具使用及管理都很方便,
但不知道是怎样制作,希望有知道怎样编写的人可以解答一下.
连结文章位置: http://p4.xdcad.net/forum/showthread.php?s=&threadid=414844
BLUE CAD试用下载位置: http://www.bktec.net/bluecad.htm

03.若将程序修改成这样,不知道可以在精简吗?
(defun c:tslisp ()
  (setq rs1 (getstring "\n请输入外切半径<850>:"))
  (if (= rs1 nil)(setq rs1 "850"))

  (setq rs2 (getstring "\n请输入外切半径<350>:"))
  (if (= rs2 nil)(setq rs2 "350"))
  
  (princ "\n选择2个切点 : ")  
  (setq pp (command "circle" "t" "tan" pause "tan" pause rs1))
  (princ "\n选择偏移方向 : ")
  (command "offset" rs2 (entlast) pause "")
(prin1)
)

04.假如希望load一个MyPass.Arx
那该如何将这个 LOAD 的动作编写进入 LISP 中
小弟只知道编写load的使用
(arxload "MyPass")
但如果内部已经载入了此 MyPass.Arx
那该怎样做判断检查说有没有载入呢?

请问该怎样处理呢

BLUE CAD 的软体画面


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

使用道具 举报

发表于 2005-10-22 09:22:37 | 显示全部楼层
最初由 xyz518mm 发布
[B]感谢xyp1964斑主的精辟解答
另在请问以下问题
01.getpoint 后面可以加上所点吗 "tan"  
如:(getpoint "tan" "\n外切线A:")) 因为是听朋友说可以这样写
但好像都会出错说!

02.像斑主这样开发出这么多的程序,
... [/B]

1、用法非法,可以参考帮助文件
2、利用下拉菜单、屏幕菜单及图像菜单,可以参考签名栏下的“实用程序汇总(test系列程序)”。
3、改进程序:
  1. [FONT=courier new](defun c:test ()
  2.   (cmdla0)
  3.   (if (null rad)
  4.     (setq rad 850)
  5.   )
  6.   (if (null ofs)
  7.     (setq ofs 350)
  8.   )
  9.   (setq        rad (UREAL 7 "" "\n外切半径" rad)
  10.         ofs (UREAL 7 "" "\n偏移距离" ofs)
  11.   )
  12.   (princ "\n选择2个切点 : ")
  13.   (setq pp3 (command "circle" "t" "tan" pause "tan" pause rad))
  14.   (princ "\n选择偏移方向 : ")
  15.   (command "offset" ofs (entlast) pause "")
  16.   (cmdla1)
  17. )[/FONT]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-10-22 09:36:26 | 显示全部楼层
4、arx程序加载
  1. [FONT=courier new](defun check-arxload (arxfilename)        ;MyPass.Arx
  2.   (if (findfile arxfilename)
  3.     (progn
  4.       (setq lst        (arx)
  5.             nn        (length (arx))
  6.             n        0
  7.       )
  8.       (while (and (< n nn) (/= arxlst arxfilename))
  9.         (setq arxlst (nth (setq n (1+ n)) lst))
  10.       )
  11.       (if (or (null arxlst)
  12.               (/= arxlst arxfilename)
  13.           )
  14.         (arxload arxfilename)
  15.         t
  16.       )
  17.     )
  18.   )
  19. )[/FONT]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 8157个

财富等级: 富甲天下

发表于 2005-10-22 09:41:17 | 显示全部楼层
4. 那该怎样做判断检查说有没有载入呢?

Try
Command: (arx)

(member "MyPass.Arx" (arx))

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

使用道具 举报

发表于 2005-10-22 09:49:29 | 显示全部楼层
最初由 Underway 发布
[B]4. 那该怎样做判断检查说有没有载入呢?

Try
Command: (arx)

(member "MyPass.Arx" (arx)) [/B]

[php](defun check-arxload (arxfilename)        ;MyPass.Arx
  (if (findfile arxfilename)
    (progn
      (setq lst        (arx)
            nn        (length (arx))
            n        0
      )
      (while (and (< n nn) (/= arxlst arxfilename))
        (setq arxlst (nth (setq n (1+ n)) lst))
      )
      (if (or (null arxlst)
              (/= arxlst arxfilename)
          )
        (arxload arxfilename)
        t
      )
    )
    nil
  )
)[/php]

简化版:
[php](defun check-arxload (arxfilename)        ;MyPass.Arx
  (if (findfile arxfilename)
    (if        (member arxfilenam (arx))
      t
      (arxload arxfilename)
    )
    nil
  )
)
[/php]
(check-arxload "MyPass.Arx")

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

使用道具 举报

 楼主| 发表于 2005-10-22 09:55:46 | 显示全部楼层
感谢各位的解答
快来去用看看
不知道各位都是用 MSN 还是 QQ 在联络呢?
小弟的 MSN :chan_jth0528@hotmail.com

另在请问以下问题
1.最近发现到一个档案里面的图块面积会随着拉动而改变
不知道这样的图块是怎样制作出来的
真是方便

上传附件给各位看看


2.就是 xyp1964斑主
您所编写的这段程序中使用的 UREAL 7 这函数是CAD 内定吗?
还是另外加载的呢?
  (setq        rad (UREAL 7 "" "\n外切半径" rad)
        ofs (UREAL 7 "" "\n偏移距离" ofs)
  )


3.有可以将 LINE 的性质转换成 XLINE 的性质的程序方法吗
我查过图元群码
但两个是一样的号码
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-10-22 13:11:07 | 显示全部楼层
最初由 xyp1964 发布
[B]
[php](defun check-arxload (arxfilename)        ;MyPass.Arx
  ... [/B]


次序有点乱,这样:

  1.   [FONT=courier new]
  2. ;; (xarxload "acarray.arx")
  3. (defun xarxload (arxfname)
  4.   (if (member arxfname (arx))
  5.     (princ "\n已经加载过!")
  6.     (if (findfile arxfname)
  7.         (arxload arxfname (princ "\n加载失败!\n"))
  8.         (princ "\n找不到文件!")
  9.     )
  10.   )(princ)
  11. )
  12.   [/FONT]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-11-3 22:13:22 | 显示全部楼层
最初由 xyp1964 发布
[B]1
[CODE](defun c:test ()
  (princ "\n选择2个切点 : ")
  (setq pp3 (command "circle" "t" "tan" pause "tan" pause "850"))
  (princ "\n选择偏移方向 : ")
  (command "offset" "350" (... [/B]


请教如果要在这个画箭头的程序起点
画上一个小圆
该怎样加上程序呢?
另外试用过箭头程序
为何是单边箭头不是双边呢?


另外請教一下為何設定圖層變數出現以下訊息
已拒絕 AutoCAD 變數設定值: "OffsetDist" ""

原程序
(defun c:ts ()
(if (null rs1)
(setq rs1 "850"))
(if (null ofb)
(setq ofb "350"))
(setq rs1 (getstring "\n請輸入切圓半徑,<預設.850>:"))
(setq ofb (getstring "\n請輸入偏移距離,<預設.350>:"))
(setvar "OffsetDist" ofb)
(princ "\n選擇2個切圓:")
(setq pp (command "circle" "t" "tan" pause "tan" pause rs1))
(princ "\n選擇偏移方向:")
(command "offset" ofs (entlast) pause "")
(prin1)
)


另外若是設定圖層變數也會發生此情況
該怎樣處理呢
煩請您能幫忙回答一下

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

使用道具 举报

发表于 2005-11-3 23:36:27 | 显示全部楼层
呵呵,看来你真是个“问题”青年。
程序写反了。
(defun c:ts ()
(setq rs1 (getstring "\n請輸入切圓半徑,<預設.850>:"))
(setq ofb (getstring "\n請輸入偏移距離,<預設.350>:"))
(if (not rs1)
(setq rs1 "850"))
(if (not ofb)
(setq ofb "350"))

(setvar "OffsetDist" ofb)
(princ "\n選擇2個切圓:")
(setq pp (command "circle" "t" "tan" pause "tan" pause rs1))
(princ "\n選擇偏移方向:")
(command "offset" ofs (entlast) pause "")
(prin1)
)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-11-3 23:41:35 | 显示全部楼层
(setvar "OffsetDist" ofb)
错误!ofb不能为字符!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-9-28 19:06 , Processed in 0.281864 second(s), 60 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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