liyunlong 发表于 2004-3-24 22:56:00

我想做一个转换为块后还能定义属性的块!

就是说做定义块的属性的功能!然后转换为块后都能够再定义并可以更改!·


提取属性后转换为EXCEL表格!再获取其中包含这个块的最小矩形大小后!


就可以在线统计各个块的大小体积。以及各个块的用途!就是材料表了!最后是图形化的!

cqnj023 发表于 2004-3-24 23:10:00

"转换为块后都能够再定义" 再定义什么,不明白

liyunlong 发表于 2006-4-28 21:36:00

再定义一些块的属性啊.如名称.编号,加工方法.

xxsheng 发表于 2006-4-30 10:11:00

<P>下面是我用来参考的别人的程序,具体出处忘记了,,,,,,</P>
<P>功能:对块追加属性;<BR>说明: e&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 块引用实体;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pt&nbsp;&nbsp;&nbsp;&nbsp; 属性插入点;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; high&nbsp;&nbsp; 属性字高;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; tag&nbsp;&nbsp;&nbsp; 属性标签;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pro&nbsp;&nbsp;&nbsp; 提示;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; val&nbsp;&nbsp;&nbsp; 默认值;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mode&nbsp;&nbsp; 属性模式;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1&nbsp;&nbsp; 不可见,系统变量 attdisp 将覆盖不可见属性;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2&nbsp;&nbsp; 预置属性;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3&nbsp;&nbsp; 校验;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 4&nbsp;&nbsp; 默认;<BR>|;<BR>(defun block-addattribute (e&nbsp;&nbsp;&nbsp;&nbsp; pt&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; high&nbsp;&nbsp;&nbsp;&nbsp; tag&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pro<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; val&nbsp;&nbsp;&nbsp;&nbsp; mode&nbsp;&nbsp;&nbsp;&nbsp; /&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; obj&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; insertpt<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; blkdef&nbsp;&nbsp; attdef&nbsp;&nbsp; blkref&nbsp;&nbsp; attref&nbsp;&nbsp; tf<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; blk_attref&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; !last&nbsp;&nbsp;&nbsp; xscale&nbsp;&nbsp; yscale<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; zscale&nbsp;&nbsp; rotation pinblk<BR>&nbsp;&nbsp;&nbsp;&nbsp; )<BR>&nbsp; (defun !last (lst)<BR>&nbsp;&nbsp;&nbsp; (reverse (cdr (reverse lst)))<BR>&nbsp; )<BR>&nbsp; (setq&nbsp;obj&nbsp; (vlax-ename-&gt;vla-object e)<BR>&nbsp;insertpt (vlax-safearray-&gt;list<BR>&nbsp;&nbsp;&nbsp;&nbsp; (vlax-variant-value (vla-get-insertionpoint obj));插入点<BR>&nbsp;&nbsp; )<BR>&nbsp;xscale&nbsp; (vla-get-xscalefactor obj);x比例<BR>&nbsp;yscale&nbsp; (vla-get-yscalefactor obj);y比例<BR>&nbsp;zscale&nbsp; (vla-get-zscalefactor obj);z比例<BR>&nbsp;rotation (vla-get-rotation obj);旋转角<BR>&nbsp; )<BR>&nbsp; ;;处理有旋转的块<BR>&nbsp; (if (/= rotation 0.0)<BR>&nbsp;&nbsp;&nbsp; (setq pinblk (polar&nbsp;'(0. 0. 0.)<BR>&nbsp;&nbsp;&nbsp;(- (angle insertpt pt)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rotation<BR>&nbsp;&nbsp;&nbsp;)<BR>&nbsp;&nbsp;&nbsp;(distance insertpt pt)<BR>&nbsp;&nbsp; )<BR>&nbsp;&nbsp;&nbsp; )<BR>&nbsp;&nbsp;&nbsp; (setq pinblk (mapcar '- pt insertpt))<BR>&nbsp; )<BR>&nbsp; (setq&nbsp;blkdef (vla-item<BR>&nbsp;&nbsp; (vla-get-blocks<BR>&nbsp;&nbsp;&nbsp;&nbsp; (vla-get-activedocument (vlax-get-acad-object))<BR>&nbsp;&nbsp; )<BR>&nbsp;&nbsp; (vla-get-name obj)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<BR>&nbsp; )<BR>&nbsp; (setq blk_attref (vla-get-hasattributes obj))<BR>&nbsp; (cond<BR>&nbsp;&nbsp;&nbsp; ((= blk_attref :vlax-false) (setq tf t)) ;不含属性<BR>&nbsp;&nbsp;&nbsp; ;;含属性但没有与追加属性相同的<BR>&nbsp;&nbsp;&nbsp; (T<BR>&nbsp;&nbsp;&nbsp;&nbsp; (if (not (setq tf<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (not<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (member t<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (mapcar<BR>&nbsp;&nbsp;&nbsp;&nbsp; '(lambda (x)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (= (vla-get-tagstring x) tag)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<BR>&nbsp;&nbsp;&nbsp;&nbsp; (vlax-safearray-&gt;list<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (vlax-variant-value (vla-getattributes obj))<BR>&nbsp;&nbsp;&nbsp;&nbsp; )<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<BR>&nbsp; )<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq tf nil)&nbsp;&nbsp;&nbsp;;有与追加属性相同的<BR>&nbsp;&nbsp;&nbsp;&nbsp; )<BR>&nbsp;&nbsp;&nbsp; )<BR>&nbsp; )<BR>&nbsp; (if tf<BR>&nbsp;&nbsp;&nbsp; (progn<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq attdef (vla-addattribute<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; blkdef<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; high<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (cond<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ((= mode 1) acAttributeModeInvisible)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ((= mode 2) acAttributeModeConstant)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ((= mode 3) acAttributeModeVerify)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (t acAttributeModePreset)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; tag<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (vlax-3d-point pinblk)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pro<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; val<BR>&nbsp;&nbsp;&nbsp;&nbsp; )<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq blkref (vla-insertblock<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (vla-get-modelspace<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (vla-get-activedocument (vlax-get-acad-object))<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (vlax-3d-point insertpt)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (vla-get-name BLKDEF)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; xscale<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; yscale<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; zscale<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rotation<BR>&nbsp;&nbsp;&nbsp;&nbsp; )<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq attref (vlax-safearray-&gt;list<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (vlax-variant-value (vla-getattributes blkref))<BR>&nbsp;&nbsp;&nbsp;&nbsp; )<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (if (&gt; (length attref) 1)<BR>&nbsp;(mapcar<BR>&nbsp;&nbsp; '(lambda (x)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (vla-put-tagstring x (vla-get-tagstring x))<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (vla-put-textstring x (vla-get-textstring x))<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (vla-put-insertionpoint x (vla-get-insertionpoint x))<BR>&nbsp;&nbsp;&nbsp; )<BR>&nbsp;&nbsp; (!last attref)<BR>&nbsp;)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (vla-put-tagstring (last attref) tag)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (vla-put-textstring (last attref) pro)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (vla-put-insertionpoint (last attref) (vlax-3d-point pt))<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (vla-delete obj)<BR>&nbsp;&nbsp;&nbsp; )<BR>&nbsp;&nbsp;&nbsp; ;;tf 为空时修改块内属性;<BR>&nbsp;&nbsp;&nbsp; (princ "\n块内含有相同标签的属性!")<BR>&nbsp; )&nbsp; <BR>&nbsp; (princ)<BR>)</P>

Ea 发表于 2006-4-30 19:05:00

http://www.xdcad.net/forum/showthread.php?s=&amp;postid=332482#post332482
页: [1]
查看完整版本: 我想做一个转换为块后还能定义属性的块!