找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1632|回复: 27

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

[复制链接]
发表于 2004-10-12 22:18:21 | 显示全部楼层 |阅读模式

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

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

×
画1:150的图时,我有一部分图块要放大1.5倍(1:200时是2.0倍),用INSERT命令很麻烦。要多次输入1.5的比例,我自己看了一些入门的LISP书籍,想编一个程序解决该问题,但是在命令行一行一行调试,可以实现,但一装入运行就不行了,请高手指点。
另外是否能设一个全局参数,第一次要设定比例,如果需要,中途可以改变比例,当在画其他比例的图是,就不需重新修改LSP中的比例了。
希望那位高手能帮忙。这程序对我比较有用。

[PHP]                           

(defun c: bbb()
  (if (= scal "") (setq scal"1.5"))
  (command "_insert" pause "scale" scal pause))

(defun c:bb ()
  (setq blockscale 1.5)
  (command "._insert" pause "scale" blockscale pause))

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

使用道具 举报

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

使用道具 举报

发表于 2004-10-13 22:30:52 | 显示全部楼层
本帖最后由 xyp1964 于 2015-9-17 14:09 编辑

(defun c: bbb() 应该为(defun c:bbb()
多了一个空格!

试试下面这个程序,[B]bbb 插入图块,csbl 重设比例[/B] :

;;;插入比例图块
;;;2004.10.13
(defun c:bbb (/ pt1)
  (if (= no1 nil)
    (setq no1 1)
  )
  (princ "\n\t当前图块比例为")
  (princ no1)
  (setq txt (ustr 1 "\n\t图块名称 : " txt nil))
  (setq pt1 (getpoint "\n\t选择插入点 : "))
  (command "_insert" txt pt1 no1 no1 "0")
)
;;;重设比例
(defun c:csbl ()
  (setq NO1 (ureal 1 "" "\n\t插入图块比例 : " no1))
  (princ "\n\t当前图块比例为")
  (princ no1)
  (princ)
)
;;;;;;
(defun ureal (bit kwd msg def / inp)
  (if def
    (setq msg (strcat "\n" msg "<" (rtos def 2) ">: ")
          bit (* 2 (fix (/ bit 2)))
    )
    (setq msg (strcat "\n" msg ": "))
  )
  (initget bit kwd)
  (setq inp (getreal msg))
  (if inp
    inp
    def
  )
)
(defun ustr (bit msg def spflag / inp nval)
  (if (and def (/= def ""))
    (setq msg (strcat "\n" msg "<" def ">:")
          inp (getstring msg spflag)
          inp (if (= inp "")
                def
                inp
              )
    )
    (progn
      (setq msg (strcat "\n" msg ": "))
      (if (= bit 1)
        (while (= "" (setq inp (getstring msg spflag))))
        (setq inp (getstring msg spflag))
      )
    )
  )
  (if inp
    inp
    def
  )
)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2004-10-14 03:16:40 | 显示全部楼层
非常谢谢楼上这位大哥,你帮我解决了大问题,我一直以为这是一个很简单的问题,原来都要写这样多行程序。好在有你的帮忙,我这个问题提了好多次了,但一直没有人来帮我解决,太谢谢你了。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

 楼主| 发表于 2004-10-14 10:24:57 | 显示全部楼层
最初由 lijiao 发布
[B]这个应该能说明如何锁定比例吧。 [/B]


谢谢版主,但我们是为了提供速度,一般不采用图形方式的。这样会慢很多的,所以你用-insert命令是无法锁定的。

另外, xyp1964 大侠能否帮忙再改一下程序,你的程序取消了角度的选择,这样当角度不为零,甚至要跟物体旋转的情况,就比较麻烦了。毕竟都是0度的是很少的。希望能帮忙调整一下,角度的选择还是可以按-INSERT的方式。谢谢
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-10-14 13:01:53 | 显示全部楼层
依偶看旋转角度的情况毕竟比不旋转的少,所以内定旋转角度为0,可以减少中指的工作量!如果一定要这样可以简单修改程序:(command "_insert" txt pt1 no1 no1 "0")→(command "_insert" txt pt1 no1 no1)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2004-10-14 14:16:48 | 显示全部楼层 |阅读模式

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

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

×
解决了,非常满意。谢谢。
还有一个小的缺点,平时用INSERT命令,在打入块名后,图块就已经在按插入点在图上显示出来,但这个命令我根据是由于取得数据的情况,要输入插入点后才显示,有时候插入图块时,并不记得图块的插入点,如果没有实时显示,有时候会选择错误的插入点,麻烦帮忙看一下是否还能改进一点。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2004-10-14 19:32:03 | 显示全部楼层
不太清楚什么要求!要“实时显示”什么?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-10-14 20:35:14 | 显示全部楼层
;;;xyp1964, 对不起,没经你同意便改了你的程序。。。
;;;注:程序还没有完善,不要问捕捉了。
(defun c:bbb (/ pt1)
  (if (= no1 nil)
    (setq no1 1)
    )
  (princ "\n\t当前图块比例为")
  (princ no1)
  (setq txt (ustr 1 "\n\t图块名称 : " txt nil))
;;;  (setq pt1 (getpoint "\n\t选择插入点 : "))
  (setq pt1 (cadr (grread 1 1)))
  (command "_insert" txt pt1 no1 no1 "0")
  (setq        LAST_PT         pt1
        entblock (entlast)
        )
  (prompt "\n\t选择插入点 :")
  (while LAST_PT
    (setq NEXT_PT (GrRead 1)
          READTYP (car NEXT_PT)
          )
    (cond ((= 5 READTYP)
           (setq NEXT_PT (cadr NEXT_PT))
           (if (> (distance LAST_PT NEXT_PT) 0.0001)
             (entmod (subst (cons 10 NEXT_PT)
                            (assoc 10 (entget entblock))
                            (entget entblock)
                            )
                     )
             ) ;if  
           (setq LAST_PT NEXT_PT)
           )
          ((= 3 READTYP)
           (setq NEXT_PT (cadr NEXT_PT))
           (entmod (subst (cons 10 NEXT_PT)
                          (assoc 10 (entget entblock))
                          (entget entblock)
                          )
                   )
           (setq LAST_PT nil)
           )
          ) ;cond
    ) ;while
  (princ)
  )
;;;重设比例
(defun c:csbl ()
  (setq NO1 (ureal 1 "" "\n\t插入图块比例 : " no1))
  (princ "\n\t当前图块比例为")
  (princ no1)
  (princ)
  )
;;;;;;
(defun ureal (bit kwd msg def / inp)
  (if def
    (setq msg (strcat "\n" msg "<" (rtos def 2) ">: ")
          bit (* 2 (fix (/ bit 2)))
          )
    (setq msg (strcat "\n" msg ": "))
    )
  (initget bit kwd)
  (setq inp (getreal msg))
  (if inp
    inp
    def
    )
  )
(defun ustr (bit msg def spflag / inp nval)
  (if (and def (/= def ""))
    (setq msg (strcat "\n" msg "<" def ">:")
          inp (getstring msg spflag)
          inp (if (= inp "")
                def
                inp
                )
          )
    (progn
      (setq msg (strcat "\n" msg ": "))
      (if (= bit 1)
        (while (= "" (setq inp (getstring msg spflag))))
        (setq inp (getstring msg spflag))
        )
      )
    )
  (if inp
    inp
    def
    )
  )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2004-10-14 21:49:19 | 显示全部楼层
谢谢aidraft ,但是有点问题,我为了保留角度可变,把(command "_insert" txt pt1 no1 no1 "0")→(command "_insert" txt pt1 no1 no1) ,结果如下,能否既保留aidraft 新修改的,又能使用角度呢。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

 楼主| 发表于 2004-10-15 08:50:55 | 显示全部楼层
最初由 aidraft 发布
[B](command "_insert" txt pt1 no1 no1 PAUSE) [/B]


这样修改后,程序自己直接就放进去了,根本没有让我自己定点。等于失去了插入的功能,只能插入图块后再移动。麻烦看如果再调整。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-10-15 09:06:28 | 显示全部楼层
最初由 海豚 发布
[B]

这样修改后,程序自己直接就放进去了,根本没有让我自己定点。等于失去了插入的功能,只能插入图块后再移动。麻... [/B]


But it works for me!

I meant you should replace the line
(command "_insert" txt pt1 no1 no1 "0")
with
(command "_insert" txt pt1 no1 no1 pause)

When you type BBB then Enter, input the block name, the block with right scale will appear and prompt you to input an angle. It moves along with your cursor, now you can pick an insertion point... So, what's the problem?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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