找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

楼主: 海豚

[求助] [求助]:修改插入图块的命令。(完成)

[复制链接]
发表于 2004-10-15 11:54:23 | 显示全部楼层
给你来个加强版的

  1. ;| c:sbi = 用设置的比例插入块-----------------------------ok!---梦断江南.2004.10
  2. ;功能:     1.可设置全局比例(按"*"号).
  3.            2.显示当前全局比例.
  4.            3.按全局比例插入图块,保持动态.只需定义插入点和转角.
  5.            4.当输入文件名有误,可调用对话框选取要插入的dwg图形.
  6. |;
  7. (defun c:sbi (/ *x *y *z k)
  8.   (if (not *blksc)(setq *blksc '(1 1 1)))
  9.   (prnblksc *blksc)
  10.   (setq k (getstring "\n输入块名/ * 设置 /<退出> :"))
  11.   (cond
  12.     ((= "*" k) ;;设置参数.
  13.        (setq *blksc (mapcar
  14.                       '(lambda(a b c)
  15.                          (if (progn (mapcar 'princ (list"\n输入块插入比例"  c "<" (eval b)))
  16.                                     (set a (getdist ">:"))
  17.                              )
  18.                              (eval a)
  19.                              (eval b)
  20.                          )
  21.                        )
  22.                       (list 'x 'y 'z)
  23.                       (list '*x '*y '*z)
  24.                       (list "X=" "Y=" "Z=")
  25.                     )
  26.         )
  27.        (c:sbi);;自身调用.
  28.     )
  29.     ((/= "" K)
  30.        (if (findfile (strcat k ".dwg"))
  31.            (vl-cmdf ".insert" k "x" *x "y" *y "z" *z)
  32.            (progn (princ (strcat "\n !没有找到块文件 " k))
  33.              (initget "X  ")
  34.              (setq k (getkword "\nX-退出/<从列表选择文件>:"))
  35.              (cond
  36.                ((not k)(setq k (getfiled "" "" "dwg;dxf" 4))
  37.                 (vl-cmdf ".insert" k "x" *x "y" *y "z" *z))
  38.                (T nil)
  39.              )
  40.            )
  41.         )
  42.     )
  43.     (T nil)
  44.   )(princ)
  45. )
  46. ;;
  47. (defun prnblksc (*blksc)
  48.   (setq *x (car *blksc) *y (cadr *blksc) *z (caddr *blksc))
  49.   (mapcar 'princ (list "\n当前块插入比例设置:" " X=" *x "  Y=" *y "  Z=" *z))
  50.   (princ)
  51. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2004-10-15 15:03:49 | 显示全部楼层
我们已经正是用这个命令替换INSERT命令了,谢谢楼上各位。
版主,还有一个小问题看能否优化,一般改变比例,在输入X比例后,Y和Z比例都是按X多的,是否可以缺省回车就按X的比例,如果不同才要输入。当然,有了这个命令后,要改变得情况并不多,所以并不影响大局。
再次谢谢各位的热心帮助。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-10-15 18:20:56 | 显示全部楼层
可以,我上面的程序是用上一次的默认值.
可以改,但是现在手上有点事情,晚上吧.

算了,也快.

  1. ;| c:sbi = 用设置的比例插入块(xyz等比版本)-----------------------------ok!---梦断江南.2004.10
  2. 本程序专为插入xyz等比块制作.
  3. |;
  4. (defun c:sbi (/ a k)
  5.   (if (not *blksc)(setq *blksc 1))
  6.   (mapcar 'princ (list "\n当前插入块比例 X = " *blksc))
  7.   (setq k (getstring "\n输入块名/ * 设置 /<退出> :"))
  8.   (cond
  9.     ((= "*" k) ;;设置参数.
  10.        (setq *blksc  (if (progn (mapcar 'princ (list"\n输入块插入比例 X= <" *blksc))
  11.                                 (setq a (getdist ">:"))
  12.                          )
  13.                          a
  14.                          *blksc
  15.                      )
  16.         )
  17.        (c:sbi);;自身调用.
  18.     )
  19.     ((/= "" K)
  20.        (if (findfile (strcat k ".dwg"))
  21.            (vl-cmdf ".insert" k "x" *blksc "y" *blksc "z" *blksc)
  22.            (progn (princ (strcat "\n !没有找到块文件 " k))
  23.              (initget "X  ")
  24.              (setq k (getkword "\nX-退出/<从列表选择文件>:"))
  25.              (cond
  26.                ((not k)(setq k (getfiled "" "" "dwg;dxf" 4))
  27.                 (vl-cmdf ".insert" k "x" *blksc "y" *blksc "z" *blksc))
  28.                (T nil)
  29.              )
  30.            )
  31.         )
  32.     )
  33.     (T nil)
  34.   )(princ)
  35. )
  36. ;;
  37. (princ "c:sbi 用设置的比例插入块(xyz等比版本)-by-梦断江南.2004.10")
  38. (princ "欢迎到xdcad论坛: [url]http://www.xdcad.net/forum/[/url]")(princ)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-10-15 22:56:50 | 显示全部楼层
最初由 aidraft 发布
[B];;;xyp1964, 对不起,没经你同意便改了你的程序。。。
;;;注:程序还没有完善,不要问捕捉了。
(defun c:bbb (/ pt1)
  (if (= no1 nil)
    (setq no1 1)
    )
  (princ "\n\t当前图块比例为")
  (princ no... [/B]


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

使用道具 举报

 楼主| 发表于 2004-10-16 12:07:45 | 显示全部楼层
版主,还忘了一个问题,这个程序不象INSERT,图块名每次都要重新输入,不太方便,因为连续插入同一个名字的图快机会是很多的,如果都要输入,还是不方便。
希望如果第一次使用该命令,则必须输入块名,如果接下来再插入图块,回车则按上一次,输入则按新图块名。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

 楼主| 发表于 2004-10-17 12:05:39 | 显示全部楼层
最初由 梦断江南 发布
[B]试试 [/B]

不行啊
另外,我一般把命令设到左手,所以希望能预留用PGP文件,把命令设为SR。谢谢
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 6530个

财富等级: 富甲天下

发表于 2004-10-17 13:59:22 | 显示全部楼层
最初由 海豚 发布
[B]
不行啊
另外,我一般把命令设到左手,所以希望能预留用PGP文件,把命令设为SR。谢谢 [/B]


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

使用道具 举报

 楼主| 发表于 2004-10-17 15:22:55 | 显示全部楼层
对,是大马虎,对不起,刚好也有SDI的命令,太巧了。
但是还是不行,开图运行第一次,你输入任何图块名,他都会自己退出。运行第二次时,它还是插入上一次的图块,也就是说,必须再运行一次,才能正确插入想要的程序。
另外版主能否不编译程序,因为我想把命令由SBI改为SR,所以在ACAD.PGP里加了一行SR,  *SBI,结果在命令行输入SR,就会出现
Initializing...
Initializing...
Initializing...Function cancelled
直到按CANCEL键。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-10-17 17:13:39 | 显示全部楼层
调了一下,应该可以了.
你要自己定义命令可以这样:
(defun c:sr () (c:sbi))
这个和sbi.fas同时加载就可以了

[swf w=750 h=600]http://www.xdcad.net/article/upload/file/291_20041017173923_sbi=插入设置默认比例的块.swf [/swf]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-10-18 11:16:26 | 显示全部楼层

  1. ;;增强插入图块
  2. (defun c:Fins (/ myerr olderr myinsert p tf)
  3.   (defun myerr (msg)
  4.     (if        (= (type msg) 'STR)
  5.       (princ "\n*取消*")
  6.     )
  7.     (command ".undo" "e")
  8.     (princ)
  9.   )
  10.   (defun myinsert (lastent / e el)
  11.     (initdia)
  12.     (vl-cmdf ".ddinsert")
  13.     (while (/= (getvar "cmdnames") "") (command pause))
  14.     (if        (and (setq e (entlast))
  15.              (not (equal e lastent))
  16.         )
  17.       (setq el (entget e)
  18.             *myinsert*
  19.              (cdr (assoc 2 el))
  20.             *xscalefactor*
  21.              (cdr (assoc 41 el))
  22.             *yscalefactor*
  23.              (cdr (assoc 42 el))
  24.             *zscalefactor*
  25.              (cdr (assoc 43 el))
  26.       )
  27.     )
  28.   )
  29.   (setvar "cmdecho" 0)
  30.   (setq        olderr        *error*
  31.         *error*        myerr
  32.   )
  33.   (command ".undo" "be")
  34.   (setq tf t)
  35.   (while tf
  36.     (if        (or (= (getvar "insname") "")
  37.             (not *myinsert*)
  38.             (not *xscalefactor*)
  39.             (not *yscalefactor*)
  40.             (not *zscalefactor*)
  41.         )
  42.       (myinsert (entlast))
  43.       (progn
  44.         (princ (strcat "\n当前块["
  45.                        *myinsert*
  46.                        "], X比例: "
  47.                        (vl-princ-to-string *xscalefactor*)
  48.                        ", Y比例: "
  49.                        (vl-princ-to-string *yscalefactor*)
  50.                        ", Z比例: "
  51.                        (vl-princ-to-string *zscalefactor*)
  52.                )
  53.         )
  54.         (initget 6 "S")
  55.         (setq p (getpoint "\n插入点[S - 设置]<回车退出>: "))
  56.         (cond
  57.           ((= (type p) 'LIST)
  58.            (vl-cmdf ".insert"            *myinsert*            p
  59.                     "XYZ"            *xscalefactor*  *yscalefactor*
  60.                     *zscalefactor*  pause
  61.                    )
  62.           )
  63.           ((= p "S")
  64.            (myinsert (entlast))
  65.           )
  66.           (t (setq tf nil))
  67.         )
  68.       )
  69.     )
  70.   )
  71.   (command ".undo" "e")
  72.   (setq        *error*        olderr
  73.         myerr        nil
  74.   )
  75.   (princ)
  76. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-11-19 16:51:52 | 显示全部楼层
建议可以设定角度默认值,并且有26楼的连续插入功能
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-9-27 15:21 , Processed in 0.210142 second(s), 50 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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