找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1373|回复: 13

[LISP函数]:我在acad2002下用lisp语句定义尺寸样式名称时遇到了麻烦

[复制链接]
发表于 2002-10-9 16:47:46 | 显示全部楼层 |阅读模式

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

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

×
我在acad2002下用lisp语句定义尺寸样式名称时遇到了麻烦。多次调用定义尺寸样式的程序会出错误。因为在acad2002下尺寸样式名称不允许重定义,显示如下:

   该名称已在使用。是否重新定义?<N>: Y
  无效的选项关键字。
该名称已在使用。是否重新定义?<N>: N
无效的选项关键字。
  该名称已在使用。是否重新定义?<N>: 回车键

  则完全退出

因此我请教各位高手,在lisp程序中实现:
1、如何获取所有的尺寸样式名称(用(getvar "dimstyle")只能得到当前的名称);
2、如何删除已经有的尺寸样式名称。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 145个

财富等级: 日进斗金

发表于 2002-10-9 16:56:24 | 显示全部楼层

Re: [LISP函数]:[LISP函数]:我在acad2002下用lisp语句定义尺寸样式名称时遇到了麻烦

最初由 小坛子 发布
[B]我在acad2002下用lisp语句定义尺寸样式名称时遇到了麻烦。多次调用定义尺寸样式的程序会出错误。因为在acad2002下尺寸样式名称不允许重定义,显示如下:

   该名称已在使用。是否重新定义?<N>: Y
  无效的选项?.. [/B]


可以重新定义,你试验输入“是”,看看如何。

其实,编程里面,可以不让提示出来的,默认都是Y。

使用系统变量expert 设置成5


  1. [FONT=courier new]
  2. (setq oldexpert (getvar "expert"))
  3. (setvar "expert" 5)
  4. 然后加你的代码
  5. .........................
  6. (setvar "expert" oldexpert)
  7. [/FONT]



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

使用道具 举报

 楼主| 发表于 2002-10-9 17:49:47 | 显示全部楼层

可是……

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

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

发表于 2002-10-9 18:04:11 | 显示全部楼层

Re: 可是……

最初由 小坛子 发布
[B]谢谢您,可是我试过了,expert不适用于dimstyle的“保存”项! [/B]


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

使用道具 举报

发表于 2002-10-11 08:26:41 | 显示全部楼层
用Vlsp或VBA完全可以获取所有的尺寸样式名称和删除已经有的尺寸样式名称。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2002-10-11 08:51:51 | 显示全部楼层

谢谢!

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

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2002-10-12 13:46:55 | 显示全部楼层

Re: 谢谢!

最初由 小坛子 发布
[B]您能否介绍实现此功能的vlisp的函数 [/B]


ActiveX提供了尺寸样式的方法,有增加、创建等等,可以看看联机帮助,里面有例子代码。


  1. This example creates three new dimension styles and copies the current settings for the document, a given dimension style, and a given dimension to each new dimension style respectively. By following the appropriate setup before running this example, you will find that different dimension styles have been created.

  2. Create a new drawing and make it the active drawing.
  3. Create a linear dimension in the new drawing. This dimension should be the only object in the drawing.
  4. Using the OPM, change the color of the dimension line to yellow.
  5. Change theDIMCLRD system variable to 5 (blue).
  6. Run the following example:
  7. Sub Ch5_CopyDimStyles()
  8.     Dim newStyle1 As AcadDimStyle
  9.     Dim newStyle2 As AcadDimStyle
  10.     Dim newStyle3 As AcadDimStyle
  11.    
  12.     Set newStyle1 = ThisDrawing.DimStyles.Add _
  13.                     ("Style 1 copied from a dim")
  14.     Call newStyle1.CopyFrom(ThisDrawing.ModelSpace(0))
  15.    
  16.     Set newStyle2 = ThisDrawing.DimStyles.Add _
  17.                     ("Style 2 copied from Style 1")
  18.     Call newStyle2.CopyFrom(ThisDrawing.DimStyles.Item _
  19.                     ("Style 1 copied from a dim"))
  20.                     
  21.     Set newStyle2 = ThisDrawing.DimStyles.Add _
  22.                     ("Style 3 copied from the running drawing values")
  23.     Call newStyle2.CopyFrom(ThisDrawing)
  24. End Sub
  25. Open theDIMSTYLE dialog. You should now have 3 dimension styles listed. Style 1 should have a yellow dimension line. Style 2 should be the same as Style 1. Style 3 should have a blue dimension line.


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

使用道具 举报

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

使用道具 举报

发表于 2002-10-14 18:12:52 | 显示全部楼层
用上述函数可以得到所有已经定义的dimstyle。重新定义有什么好处呢?直接修改不可以吗?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

发表于 2002-10-14 18:24:45 | 显示全部楼层
最初由 gchen 发布
[B]用上述函数可以得到所有已经定义的dimstyle。重新定义有什么好处呢?直接修改不可以吗? [/B]


修改后,要保存,保存的时候,就会出现那个提示了。

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

使用道具 举报

 楼主| 发表于 2002-10-15 09:14:55 | 显示全部楼层

谢谢,

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

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

发表于 2002-10-15 11:59:37 | 显示全部楼层

Re: 谢谢,

最初由 小坛子 发布
[B]tblsearch是个方便的函数,我的问题解决了。 [/B]


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

使用道具 举报

 楼主| 发表于 2002-10-16 10:35:48 | 显示全部楼层

我是这样做的:

在AutoCAD R14 下使用EXpert=5 很好,只需:
(command "dimstyle" "s" "style")
即可
但是expert=5在ACAD r2000和R2002下无效,我咨询过Autodesk,回复这是个"bug",后续版本将修改。

我这样做:
(setq ssdim (tblsearch "dimstyle" "style"))   
(if ssdim           ;;;这个判断是确定dimstyle集合中有无"style"
  (command "dimstyle" "s" "style" "y")
  (command "dimstyle" "s" "style")
)

或者使用Subst和entmod
(setq ssdim
  (subst (cons 40 100)
    (assoc 40ssdim )                Changes the 全局比例
    ssdim
  )
)
(entmod ed)
不过这个我没试过
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-9-26 02:25 , Processed in 0.533848 second(s), 58 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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