我想做一个转换为块后还能定义属性的块!
就是说做定义块的属性的功能!然后转换为块后都能够再定义并可以更改!·提取属性后转换为EXCEL表格!再获取其中包含这个块的最小矩形大小后!
就可以在线统计各个块的大小体积。以及各个块的用途!就是材料表了!最后是图形化的! "转换为块后都能够再定义" 再定义什么,不明白 再定义一些块的属性啊.如名称.编号,加工方法. <P>下面是我用来参考的别人的程序,具体出处忘记了,,,,,,</P>
<P>功能:对块追加属性;<BR>说明: e 块引用实体;<BR> pt 属性插入点;<BR> high 属性字高;<BR> tag 属性标签;<BR> pro 提示;<BR> val 默认值;<BR> mode 属性模式;<BR> 1 不可见,系统变量 attdisp 将覆盖不可见属性;<BR> 2 预置属性;<BR> 3 校验;<BR> 4 默认;<BR>|;<BR>(defun block-addattribute (e pt high tag pro<BR> val mode / obj insertpt<BR> blkdef attdef blkref attref tf<BR> blk_attref !last xscale yscale<BR> zscale rotation pinblk<BR> )<BR> (defun !last (lst)<BR> (reverse (cdr (reverse lst)))<BR> )<BR> (setq obj (vlax-ename->vla-object e)<BR> insertpt (vlax-safearray->list<BR> (vlax-variant-value (vla-get-insertionpoint obj));插入点<BR> )<BR> xscale (vla-get-xscalefactor obj);x比例<BR> yscale (vla-get-yscalefactor obj);y比例<BR> zscale (vla-get-zscalefactor obj);z比例<BR> rotation (vla-get-rotation obj);旋转角<BR> )<BR> ;;处理有旋转的块<BR> (if (/= rotation 0.0)<BR> (setq pinblk (polar '(0. 0. 0.)<BR> (- (angle insertpt pt)<BR> rotation<BR> )<BR> (distance insertpt pt)<BR> )<BR> )<BR> (setq pinblk (mapcar '- pt insertpt))<BR> )<BR> (setq blkdef (vla-item<BR> (vla-get-blocks<BR> (vla-get-activedocument (vlax-get-acad-object))<BR> )<BR> (vla-get-name obj)<BR> )<BR> )<BR> (setq blk_attref (vla-get-hasattributes obj))<BR> (cond<BR> ((= blk_attref :vlax-false) (setq tf t)) ;不含属性<BR> ;;含属性但没有与追加属性相同的<BR> (T<BR> (if (not (setq tf<BR> (not<BR> (member t<BR> (mapcar<BR> '(lambda (x)<BR> (= (vla-get-tagstring x) tag)<BR> )<BR> (vlax-safearray->list<BR> (vlax-variant-value (vla-getattributes obj))<BR> )<BR> )<BR> )<BR> )<BR> )<BR> )<BR> (setq tf nil) ;有与追加属性相同的<BR> )<BR> )<BR> )<BR> (if tf<BR> (progn<BR> (setq attdef (vla-addattribute<BR> blkdef<BR> high<BR> (cond<BR> ((= mode 1) acAttributeModeInvisible)<BR> ((= mode 2) acAttributeModeConstant)<BR> ((= mode 3) acAttributeModeVerify)<BR> (t acAttributeModePreset)<BR> )<BR> tag<BR> (vlax-3d-point pinblk)<BR> pro<BR> val<BR> )<BR> )<BR> (setq blkref (vla-insertblock<BR> (vla-get-modelspace<BR> (vla-get-activedocument (vlax-get-acad-object))<BR> )<BR> (vlax-3d-point insertpt)<BR> (vla-get-name BLKDEF)<BR> xscale<BR> yscale<BR> zscale<BR> rotation<BR> )<BR> )<BR> (setq attref (vlax-safearray->list<BR> (vlax-variant-value (vla-getattributes blkref))<BR> )<BR> )<BR> (if (> (length attref) 1)<BR> (mapcar<BR> '(lambda (x)<BR> (vla-put-tagstring x (vla-get-tagstring x))<BR> (vla-put-textstring x (vla-get-textstring x))<BR> (vla-put-insertionpoint x (vla-get-insertionpoint x))<BR> )<BR> (!last attref)<BR> )<BR> )<BR> (vla-put-tagstring (last attref) tag)<BR> (vla-put-textstring (last attref) pro)<BR> (vla-put-insertionpoint (last attref) (vlax-3d-point pt))<BR> (vla-delete obj)<BR> )<BR> ;;tf 为空时修改块内属性;<BR> (princ "\n块内含有相同标签的属性!")<BR> ) <BR> (princ)<BR>)</P> http://www.xdcad.net/forum/showthread.php?s=&postid=332482#post332482
页:
[1]