找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1431|回复: 17

[求助] [求助]:block命令,其中一个参数我不会用,请教!

[复制链接]
发表于 2003-2-25 20:08:04 | 显示全部楼层 |阅读模式

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

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

×
(command "block")
如何写才能使生成的图块不是被delete而是convert to block ?

默认是delete

请用过的朋友告之,谢谢!!

Command: (command "block")
block
Enter block name or [?]: nil
Enter block name or [?]: 12345
Specify insertion base point:
Select objects: Specify opposite corner: 9 found
Select objects:

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

已领礼包: 181个

财富等级: 日进斗金

发表于 2003-2-25 20:20:15 | 显示全部楼层
AutoCAD提供了在创建块时可选择的三种方式:
保留
创建块以后,将选定对象保留在图形中作为不同对象。

转换为块
创建块以后,将选定对象转换成图形中的一个块引用。

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

使用道具 举报

已领礼包: 6530个

财富等级: 富甲天下

发表于 2003-2-25 20:44:06 | 显示全部楼层

Re: [求助]:block命令,其中一个参数我不会用,请教!

最初由 yinwh 发布
(command "block")
如何写才能使生成的图块不是被delete而是convert to block ?

默认是delete

请用过的朋友告之,谢谢!!

Command: (command "block")
block
Enter block name or [?]: nil
Enter blo...


是准备写程序吗?可以看看R14的ddinsert.lsp,其中有相关的管理,我现在上网的机器是隆迪汉化的,无法看到原代码。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2003-2-25 20:53:19 | 显示全部楼层
最初由 efan2000 发布
[B]AutoCAD提供了在创建块时可选择的三种方式:
保留
创建块以后,将选定对象保留在图形中作为不同对象。

转换为块
创建块以后,将选定对象转换成图形中的一个块引用。

删除
创建块以后从图形中删除选定的对?.. [/B]


斑竹大人,我是想在lisp程序中使用block,能实现convert to block 吗?

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

使用道具 举报

已领礼包: 181个

财富等级: 日进斗金

发表于 2003-2-25 21:00:15 | 显示全部楼层
首先自己定义基点的获取,然后制成块,将生成的块在该位置插入,这样也不就实现了转化成块的功能吗?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2003-2-25 21:13:15 | 显示全部楼层
那么如何给块命名呢?比如象这样做个一个程序a()

一个图中有很多次要调用a(),每调用一次就要生成一个块,有时是间隔着用的(就是调用一次后,去画别的地方,然后过一会又要调用他),如果生成的图块重名的话会出问题吧?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 6530个

财富等级: 富甲天下

发表于 2003-2-25 21:20:46 | 显示全部楼层
刚才有误,应该是bmake.lsp,下载了一个Unlsp反编译了一下,发给你。研究了一下,其实就是一个命令:OOPS,生成块后再恢复删除。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2003-2-25 21:40:22 | 显示全部楼层
可是,当我生成一个图块(默认被删除了),使用oops恢复时,图形是恢复了,不过好象恢复过头了,回到了未合成为块以前的状况了
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2003-2-26 00:39:32 | 显示全部楼层
很久没用这个命令了都是CTRL+C复制,然后CTRL+V粘贴,缺点就是块名称随机
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2003-2-26 10:24:55 | 显示全部楼层

  1. ;;;宏
  2. ^C^CSELECT;\(SETQ A(RTOS(*(GETVAR "CDATE")1E8)));BLOCK;!A;0,0;P;;INSERT;!A;@;;;;

  3. (defun C:QBLOCK        (/ HOLDECHO HOLDBLIP A AA)
  4.   (command "_.undo" "_group")
  5.   (setq HOLDECHO (getvar "cmdecho"))
  6.   (setq HOLDBLIP (getvar "blipmode"))
  7.   (setvar "cmdecho" 0)
  8.   (setvar "blipmode" 0)
  9.   (setq AA (ssget))
  10.   (setq A (rtos (* (getvar "CDATE") 1E8)))
  11.   (if (/= AA NIL)
  12.     (progn
  13.       (command "_.BLOCK" A "0,0" AA "")
  14.       (command "_.INSERT" A "@" "" "" "")
  15.     )
  16.   )
  17.   (setvar "blipmode" HOLDBLIP)
  18.   (setvar "cmdecho" HOLDECHO)
  19.   (command "_.undo" "_end")
  20.   (princ)
  21. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2003-2-26 15:37:31 | 显示全部楼层
谢谢!!我搞定了!

我在做一套lisp程序以简化绘图,现在又碰到了一个新问题:

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

使用道具 举报

已领礼包: 6530个

财富等级: 富甲天下

发表于 2003-2-26 17:19:36 | 显示全部楼层
1.画箭头方法可以有两种,其一是算出点然后用solid绘制;其二是利用标注的leader绘制,需要使用R12命令dim1,以下是我画箭头的程序,供参考:

  1. (defun C:DS(/ :pt1 :pt2)                     ;箭头
  2.   (setq :pt1 (getpoint "\n箭头标记顶点: ")
  3.         :pt2 (getpoint :pt1 "\n箭尾方向: ")
  4.   )
  5.   (if (= (getvar "acadver") "14.0")
  6.     (progn
  7.      (command "dim1" "l" :pt1 :pt2 "u")        ;R14
  8.      (command)
  9.     )
  10.     (progn
  11.      (command "dim1" "l" :pt1 :pt2)            ;R2000+
  12.      (command)
  13.      (entdel (entlast))
  14.     )
  15.   )
  16.   (princ)
  17. )

程序使用标注定义的箭头类型,同时,当两点间距太小时,可能不能画出箭头。
2.求直线与圆的角度可以通过图解法(思路):
a)求直线角度:angle;
b)求垂线角度:+pi/2;
c)求过圆心的垂线交点:polar、inters;
d)计算交点:判别、勾股定理。
e)得出交点:polar。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2003-2-26 19:14:04 | 显示全部楼层
谢谢楼上兄弟的解答,我根据你的方法做好了!

新问题:
怎样才能实现:
.........(前面有数条命令)
(command "line")
(setq .........)

这样连着的两条命令?第一条不加参数的,这样可以让使用者自由地画一条线,再用后面跟着的程序抓到这条线的参数
我试验的结果是画完line以后程序就终止了。。这个有办法解决吗?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2003-2-26 21:10:59 | 显示全部楼层
在lisp中直接不带参数运行命令相当于直接从命令行中输入命令,完成后将直接退出。
在关于command函数的说明中有这样话:
command 函数的参数可以是字符串、实数、整数或点,但必须与要执行的命令所需的参数一致。空字符串 ("") 表示从键盘键入 ENTER 键。不带参数调用 command 相当于键入 ESC 键,这样可取消大多数 AutoCAD 命令。

command 函数将每一个参数顺序传给 AutoCAD 以响应提示。它以字符串形式提交命令名和选项;以两个实数组成的表的形式提交二维点;以三个实数组成的表的形式提交三维点。只有在命令提示下 AutoCAD 才能识别命令名。
要注意的是,如果从 Visual LISP 中使用 command 函数,控制并不会转移到 AutoCAD 中。如果命令要求用户输入,则可以在控制台窗口中看到返回结果 (nil),但 AutoCAD 将等待输入,必须手动激活 AutoCAD 并响应提示。在这样做以前,任何后续命令都会失败。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2003-2-26 21:38:54 | 显示全部楼层
原来是这样。。谢谢了。


我做的是标零件序号的程序,每标一个就生成一个块,我这样定义块的名字:名字n(为全局变量)初值为1,每定义一次,自动加1。
这样的话,名字就不会重复
但是:当关闭文件再重新打开时,n的值就被重置为1,这样如果要继续给零件标序号的话,就会重名,然后出现一个提示:
Block "2" already exists. Redefine it? [Yes/No] <N>:

程序就卡在这个地方了,这个问题能解决吗?如何使块名不重复呢?

我现在已经想到了:就是将 序号线的长度再加上序号 合成为一个字符串,来作为块名,序号线长度(小数点后三位)和序号同时相等的可能性很小。
现在线段长度是小数点后三位,这个位数能不能修改??如修改到小数点后5位,这样更保险一些。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-7 07:52 , Processed in 0.266532 second(s), 60 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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