在选定对象之间插入块
我有一些代码来自一个曾经为我们工作的人,在那里它插入了一个块,其距离值位于两点之间的中点。我希望能够将其调整到默认情况下做相同的事情,但它将块放在基于定位值的分组选择的每个极块之间,类似于此线程,它根据这些值调整数字。。。http://www.cadtutor.net/forum/showthread.php?58422-属性重新编号&p=395948&viewfull=1#post395948
... 用户不必点击每个极点上的点。
随附的是LISP和DWG块。
EXADO。图纸
EXADO_Main-0001。lsp 有人能帮忙吗? 我试着用这个做一些事情,虽然在某些方面是错误的。
(defun c:STADO(/ adoc i SelSet StrValidate AttVal StaList)
(vl-load-com)
(setq adoc (vla-get-activedocument (vlax-get-acad-object))
i 0)
(if (ssget ":L" '((0 . "INSERT")(2 . "`*U*,POLE-STA")))
(cond (
(vlax-for Sta(setq SelSet (vla-get-activeselectionset adoc))
(if (and (equal (vla-get-effectivename sta) "pole-sta")
(/= (setq StrValidate (vla-get-textstring (car (setq AttVal
(vlax-invoke
Sta
'GetAttributes))))) ""))
(setq StaList
(cons
(list StrValidate (nth 26 AttVal))
StaList))
)
)
(foreach
Blk(vl-sort
StaList
(function (lambda (p1 p2) (< (car p1) (car p2)))))
(setq p1 (vlax-get p1 'insertionpoint))
(setq p2 (vlax-get p2 'insertionpoint))
(setq adodist (distance p1 p2))
(setq adodist (rtos adodist 2 0))
(setq adomid (mapcar '+ p1 (mapcar '/ (mapcar '- p2 p1) '(2.0 2.0 2.0))))
(setq adoang (angle p1 p2))
(command "-insert" "aerial distance -dyn" adomid "" (angtos adoang) adodist "")
(cadr Blk) (itoa (setq i (1+ i))))
)
)
(vla-delete SelSet)
)
(princ)
)
我得到错误“错误的参数类型:VLA-OBJECT nil”。我相信这是在lambda和p1/p2变量编码的底部。
(defun c:STADO(/ AddOffset adoc SelSet StrValidate AttVal StaList p1 p2 dblk)
(vl-load-com)
(defun AddOffset(lst)
(list (+ (car lst) 11.25) (- (cadr lst) 11.0135) 0.0))
(setq adoc (vla-get-activedocument (vlax-get-acad-object)))
(if (ssget ":L" '((0 . "INSERT")(2 . "`*U*,POLE-STA")))
(cond (
(vlax-for
Sta
(setq SelSet (vla-get-activeselectionset adoc))
(if (and (equal (vla-get-effectivename sta) "pole-sta")
(/= (setq StrValidate
(vla-get-textstring
(car (setq AttVal
(vlax-invoke
Sta
'GetAttributes)))))
""))
(setq StaList
(cons
(list StrValidate (nth 26 AttVal))
StaList))
)
)
(setq StaList
(vl-sort
StaList
(function (lambda (p1 p2) (< (car p1) (car p2))))))
(while (and (setq p1 (car StaList))
(setq p2 (cadr Stalist)))
(setq p1 (AddOffset (vlax-get (cadr p1) 'insertionpoint))
p2 (AddOffset (vlax-get (cadr p2) 'insertionpoint))
adodist (distance p1 p2)
adodist (rtos adodist 2 0)
adomid(mapcar (function (lambda (a b) (/ (+ a b) 2.)))
p1
p2)
adoang(angle p1 p2))
(setq dblk (vlax-invoke
(vlax-get (vla-get-ActiveLayout adoc) 'Block)
'insertblock
adomid
"aerial distance -dyn"
1
1
1
adoang)
)
(vla-put-textstring
(car (vlax-invoke dblk 'Getattributes))
adodist)
(setq Stalist (cdr StaList))
)
)
)
(vla-delete Selset)
)
(princ)
)
谢谢pBe!
这是一个发生小错误的图像。
我绕着方块旋转,用一条不直的磁极线进行测试。中间派曾经以错误的角度和价值出现。下面绿色的是正确的。
然后,我在末端重新插入最后一根杆子,它以正确的角度进入,但输入的值为26’,两者之间的距离为25.0000。
代码似乎取自原始插入点,而不是当前插入点。 奶酪和米饭
... 这一定是我的浏览器,甚至看不到你两个帖子中的图片,这件事是从一个月前it人员屏蔽这个网站开始的。现在我找到了一种方法来解决这个问题。
但是这个网页并不像以前那样。真倒霉 它可能阻塞了photobucket。我听说有些地方这样做。 好的,我认为这只是文件有点问题,插入和角度在一个新的图纸上工作,很好,按照计划和要求。但是,当我在页面选项卡的视口中运行程序时,它会在图纸空间而不是模型空间中插入块。
尝试直接在这个网站上发布图片,很多人都有自己的工作区网站,比如photobucket。这减少了其他人可以提供的帮助。只需“Go Advanced”“Manage Attachments”“Browse”“Upload”。
我本来是这样做的,但得到了错误
“出现以下错误:
对齐文本。bmp:无效文件“
可以通过网站上传的图像的大小限制是多少?
页:
[1]
2