HHJJ9898
发表于 2015-8-11 08:33:18
太强悍了!!!!!1
BenjaminXM
发表于 2015-9-9 18:08:31
学习一下
BenjaminXM
发表于 2015-9-9 21:14:37
Gu_xl 发表于 2012-3-31 23:13 static/image/common/back.gif
显示隐藏工具
**** 本内容被作者隐藏 ****
你好,看了你提供的程序代码后,有几个问题想请教一下:
1. (ssget ":L"),这个函数为什么有排除锁定图层的功能?autocad帮助说明书里也没有:L这个选项。
2. 这个程序隐藏部分没有包含锁定图层的代码,所以锁定图层上的实体不能隐藏,而冻结图层看不见,没有办法选择,从而没有办法隐藏。也就是说隐藏的实体图层不可能是冻结或者锁定。这样那后半部分关于图层冻结与锁定部分是用来处理什么工况?将图层操作的这部分代码中有关冻结部分删除,然后复制到隐藏程序里,这样是否合适?
3. obj和hand可以更改成局部变量吗?
4. (vla-item layers (vla-get-layer (setq obj (vlax-ename->vla-object en))))这里不太明白的地方在于,为什么还要最外围的vla-item这个函数,这个函数值与(vla-get-layer (setq obj (vlax-ename->vla-object en)))是否是等值?
谢谢提供的代码。
edata
发表于 2015-9-9 21:57:44
1,帮助中没有也不知道是为什么,我分析是因为autocad公司压根没怎么更新这个帮助,几乎和R14的一样,在2016的help文件中也没有解释。
2、3你自己试试。。
4,vla-item layers 这个layers是图层集合,而后面一个是vla-get-layer是获得该对象的图层名字符串。
vla-item 图层集合 图层字符串 将会在图层集合取出 图层字符串 的这个对象类似于
tblobjname "layer" "layname" 这样的函数操作。
liuyj
发表于 2015-9-10 00:05:38
什么好东西,之前怎么漏掉了?
BenjaminXM
发表于 2015-9-10 08:58:56
edata 发表于 2015-9-9 21:57 static/image/common/back.gif
1,帮助中没有也不知道是为什么,我分析是因为autocad公司压根没怎么更新这个帮助,几乎和R14的一样,在201 ...
谢谢你提供的帮助,因为你没有点回复,所以我没有收到提醒通知,我只好把我发过的贴,回复过的贴再重新过一遍,刚好看到了你回复的内容,谢谢了。
对于你的回复,有以下几点:
1. 2、3你自己试试。。第2点自己已经更改了,更改后对锁定图层也是有效的。我问第2点的意图在于G版这样处理是否有另外的考虑因素。第3点没有尝试,一会尝试一下。
2. vla-item这个函数之前的理解有错,所以在没有说明书情况下只能自己理解了。今天正确理解了这个命令后,再次思考了一下,你说的是正确的。这里引出另外一个问题,在说明书里的属性和方法已经知道怎么应用,那针对“对象”这块,就看“line"这块想看说明书后应用,应该如何应用?
edata
发表于 2015-9-10 10:21:06
BenjaminXM 发表于 2015-9-10 08:58 static/image/common/back.gif
谢谢你提供的帮助,因为你没有点回复,所以我没有收到提醒通知,我只好把我发过的贴,回复过的贴再重新过 ...
line有创建方法,访问方法,方法,属性,事件,这即可项目,
创建方法可以理解为绘制一条直线
ModelSpace.AddLine 在模型空间绘制 (vla-addline mspace StartPoint EndPoint)后面三个都是变量
PaperSpace.AddLine 图纸空间绘制
Block.AddLine 定义块中绘制
mspace通过访问activedocument获得
而activedocument通过vlax-get-acad-object获得。
具体关系你可以看VBA帮助的对象模型层次关系。
访问途径:
ModelSpace.Item 从集合中取出这个对象,这个貌似没怎么用过,因为索引值为整数或字符串,直线貌似只有通过整数来取出来,但是谁知道那直线的索引值呢,(没深入研究,你有兴趣可以研究下),一般都是vlax-for循环取出,再判断,还不如ssget是吧。
PaperSpace.Item
Block.Item
SelectionSet.Item
Group.Item
--------------------------------
下面的方法、属性、事件
分别表示了直线支持的方法有哪些,有哪些属性可以用,有什么事件可以应用到反应器。
比如说copy方法,那么表示直线可以用copy方法进行复制,
比如说layer属性,说明直线有图层属性,可以通过vla-get或则vla-put方式来获取或改变图层。
事件只有一个修改,如果你要使用反应器来实施某些操作,比如,改变直线的起点,那么修改事件会反馈给反应器,让反应器通过设定的函数达到你需要的操作,如改变直线长度,更改一个关联的圆的半径,等等。
综合一下,对象是囊括 方法、属性、事件的汇总介绍。当你要创建或修改某个对象的时候,那么直接查询这个对象所具有的方法和属性即可知道运用这些方法和属性。而不是在属性和方法的详细项目介绍的地方去盲目的找。通过对象,一目了然,要想知道某个属性,点击属性即可直达属性的详细介绍。
czcxxx
发表于 2015-9-10 10:56:59
BenjaminXM
发表于 2015-9-10 12:27:35
edata 发表于 2015-9-10 10:21 static/image/common/back.gif
line有创建方法,访问方法,方法,属性,事件,这即可项目,
创建方法可以理解为绘制一条直线
ModelSpa ...
谢谢回复,有几个地方不太明白:
1. “line有创建方法,访问方法,方法,属性,事件,这即可项目”,这即可项目,这个是什么意思?
2. 开始学习的时候,学习到反应器那片的时候,就有点像看无字天书一样,直接就翻过去了,现在对这块有了更深一层次的正确理解后,要再花些时间重新看一下这部分的知识。想问一下是否有必要去翻有关VBA的教材来系统学习?
通过你的回复,我非常直观的知道对象的用处,谢谢~
edata
发表于 2015-9-10 15:35:59
BenjaminXM 发表于 2015-9-10 12:27 static/image/common/back.gif
谢谢回复,有几个地方不太明白:
1. “line有创建方法,访问方法,方法,属性,事件,这即可项目”,这即 ...
即可=几个,打错字了。
反应器其实也比较简单,定义一个反应器,当触发这个事件的时候回调自定义的回调函数。
反应器可以理解为监视器,监视某个动作或事件,一旦符合要求,那么就可以执行这个任务了。
等你基础再好点的时候,再反过来看,就容易理解了。
VBA其实没必要了,如果你不打算用VBA的话,学了也没什么用。对于学过VB的人来说VBA或许是种不错的选择,前两天看到一个vba的,转过来学习lisp,说是vba的程序给别人用的时候麻烦,不如lisp一个文本文件搞定。是不是这样我就不清楚了。
如果你到了一定层次,需要用到比较高级的编程,可能要考虑ARX之类c++,c#,因为可以自定义实体,直接操作dwg数据库,速度上有优势,但是每个版本都得重新编译arx。
页:
3
4
5
6
7
8
9
10
11
12
[13]
14