CadFrank 发表于 2022-7-5 22:35:30

什么';s不见了?

好的,我想做的是修改动态块“CARTOUCHE LU”中查找的值,它位于所有布局中。
 

(setq nomBloc "Cartouche LU")
(setq obj
(vla-get-effectivename
    Nombloc
    (vla-get-layouts
      (vla-get-activedocument (vlax-get-acad-object))
    )
)
)
 
 
现在它回来了
 
; error: bad argument type: VLA-OBJECT ("CARTOUCHE LU")
 
我不知道为什么我想要一些解释。
 
不胜感激。
 
谢谢

Tharwat 发表于 2022-7-5 22:50:09

您必须将代码从例程复制并粘贴到另一个例程,而不了解代码的去向和作用。
 
这篇文章不是做了与你在这篇文章中尝试做的相同的事情吗?

CadFrank 发表于 2022-7-5 22:55:14

嗯,这不完全是一回事。
 
在我想更改属性文本之前,现在它是动态块中的查找。
 
问题是我想理解。但我需要人们有时给我的代码解释,这有助于我理解
 
有些人确实帮了我的忙,比如你,还有一些人只是发帖子,这确实管用,但我不知道为什么呵呵!
 
这并不是说我还没有准备好,我有很多关于它的Autodesk PDF,我发现它们很难理解。这可能只是无法用我理解的方式来解释。
 
就是这样

Tharwat 发表于 2022-7-5 22:58:59

你想做什么?

CadFrank 发表于 2022-7-5 23:06:06

好的,从我在另一个帖子上得到的图纸中的同一块。
 
我想根据版本更改查找1。
 
现在,当我在旧版本中传递它时,它工作了:
 
(vlax-for lt (vla-get-layouts adoc)
   ;(vla-put-activelayout adoc lt) ; optionnel
   (vlax-for obj (vla-get-block lt)
   (if (and (= "AcDbBlockReference" (vla-get-objectname obj))
             (member (vla-get-effectivename obj) Nombloc)
             (= :vlax-true (vla-get-hasattributes obj) ))
       (progn
         (setq atts (vlax-invoke obj 'getattributes))
         (foreach x atts
   
    (if (= Tag#Pg (vla-get-tagstring x))
               (vla-put-textstring x Tnumtabs)
    )
      (setqN-E-dbp (nth 2 (vlax-invoke obj 'GetDynamicBlockProperties)))
      (vla-put-valueN-E-dbp TRev)
         )
       )
   )
   )
)
 
但现在它无法从其他代码中获取VLA对象。
 
所以当我通过这个密码时:
 

现在我的代码是这个,它不工作了
(defun _Revision (/ TRev TDesc Tdate TPar TApp
          TagRev TagNRev TagDesc TagDat TagPar TagApp
          lt obj atts x DynBP)

;| Élénment de text |;
(if (= choix "N")
   (setq TRev "0"))
(if (= choix "R")
   (setq TRev (itoa (fix (getreal "\n Numéro de révision : ")))))          
(setq TDesc (strcase (getstring T "\n Donner la raison de la révision. : "))
       Tdate (_Today)
)
       
(initget 1 "C F J S")
(setq        TPar (getkword "\n Qui a fait les changements sur le plan? : "))
       (if (= TPar "C")(setq TPar "C.L"))
(if (= TPar "F")(Setq TPar "F.L"))       
(if (= TPar "J")(setq TPar "J.L"))
(if (= TPar "S")(setq TPar "S.D"))

(initget 1 "J S")
(setq        TApp (getkword "\n Qui a approuvé les changement : "))
       (if (= TApp "J")(setq TApp "J.L"))
       (if (= TApp "S")(setq TApp "S.D"))

;| Élénment des TAG |;       
(setq TagRev "REV"
       TagNRev (strcat "N°REV" TRev)
       TagDesc (strcat "DESCRITION" TRev)
       TagDat (strcat "DATE" TRev)
       TagPar (strcat "PAR" TRev)
       TagApp (strcat "APP" TRev)
)

;Inscrit le texte dans chacun des attributs

(mapcar '_Text->Attribute->Layout
(list TagRev TagNRev TagDesc TagDat TagPar TagApp)
(list TRev TRev TDesc Tdate TPar TApp)
)


   



)

hanhphuc 发表于 2022-7-5 23:14:52

 
丢失的
(vl load com)
(setq adoc(vla get activedocument(vlax get acad object)))

CadFrank 发表于 2022-7-5 23:22:32

 
谢谢你的帮助,但在第一条评论中,我想知道遗漏了什么,并解释一下如何到达那里。

hanhphuc 发表于 2022-7-5 23:30:56

我不是导师,只是分享我的理解(所以如果我错了,我希望前辈能给我建议)
vb activex就像“浏览器扩展树”序列。。。
假设应用程序是“我的电脑”,所以我们必须扩展有效路径“目录”和“子文件夹”,以达到我们正在寻找的其他内容,例如:布局等。。
(vla get布局adoc)
?? --> ?? --> 布局,缺少路径为adoc=文档和应用程序(对象)
(setq adoc(vla get activedocument(vlax get acad object));
 
http://dl.dropboxusercontent.com/u/25241751/Shared%20SM/GIF%20Demo/activex1.PNG

CadFrank 发表于 2022-7-5 23:38:24

 
好吧,我很理解。
 
当我需要改变一个值时,我就被搞糊涂了。我如何知道要使用什么功能。即使我使用“vla get block”,它也不会得到所需的块。
页: [1]
查看完整版本: 什么';s不见了?