BLOACH85 发表于 2022-7-6 15:13:42

我怎样才能在

嘿,我还在做这个Lisp程序的程序!它现在工作正常,但我需要它插入@正确的dimscale vla setautoscale不工作。我还能做什么?vla会校准吗?
 

(defun C:STUBS2 (/ col count dis pt row strdis tb va vm vo)
(setq pt (vlax-3d-point (getpoint "\nPick Insertion Point: ")))
(setq vo (vlax-get-acad-object))
(setq va (vla-get-activedocument vo))
(setq vm (vla-get-modelspace va))
(setq row 16)
(setq col1)
(setq dis (getdist "\nWhat Is The First Stub Dimension? : "))
(if (not (vl-string-search "" (setq strdis (rtos dis 4 4))))
   (setq strdis (strcat strdis "")))
(setq tb (vla-addtable vm pt row col 1 1))
(vla-put-titlesuppressed tb :vlax-false)
(vla-put-headersuppressed tb :vlax-true)
(vla-put-RegenerateTableSuppressed tb :vlax-true)
(vla-put-vertcellmargin tb 0.1)
(vla-put-horzcellmargin tb 0.25)
(vla-setrowheight tb 0 0.3875)
(vla-setcolumnwidth tb 0 2.4)

(vla-settextstyle tb actitlerow "bold");title text style
(vla-settextstyle tb acdatarow "Standard");data rows text style
(vla-settextheight tb actitlerow 0.27);title text height = 0.27
(vla-settextheight tb acdatarow 0.21);other cells text height = 0.21
(vla-setalignment tb actitlerow acmiddlecenter);title alignment
(vla-setalignment tb acdatarow acmiddlecenter);data cell alignment
(vla-setformat tb acdatarow "arch");data cell format
(vla-settext tb 0 0 "STUBS");title text

(setq count 1)

(while (< count row)
(vla-setcelltextstyle tb count 0 "Standard")
(vla-setcelldatatype tb count 0 acdouble acunitdistance);optional
(vla-setrowheight tb count 0.3875)
(if (=count 1)
(vla-settext tb count 0 strdis)   
(vla-settext tb count 0 (strcat "= A2*" (itoa count))))
(setq count (1+ count)))
(vla-put-RegenerateTableSuppressed tb :vlax-false)

(princ)
);_ end

Lee Mac 发表于 2022-7-6 15:18:12

这与此线程有关吗:
 
http://www.cadtutor.net/forum/showthread.php?t=31766

BLOACH85 发表于 2022-7-6 15:21:24

是的,我只是对我能想到的每一个解决方案感到恼火。我试过(vla setscale tb(getvar“dimscale”))
和其他安排,但所有出来的命令提示符相同的语句太少的实际参数!所以我不知道,就像我说的,这是我第一次使用vla格式,所以我还不知道所有的基础知识。你知道该怎么办吗?
 
(defun C:ST2(/ col count dis pt row strdis tb va vm vo)

(setq pt (vlax-3d-point (getpoint "\nPick Insertion Point: ")))
(setq vo (vlax-get-acad-object))
(setq va (vla-get-activedocument vo))
(setq vm (vla-get-modelspace va))
(setq row (+ 1 (getreal "\How many stubs?")))
(setq col1)
(setq dis (getdist "\What Is The First Stub Dimension? : "))
(if (not (vl-string-search "" (setq strdis (rtos dis 4 4))))
   (setq strdis (strcat strdis "")))
(setq tb (vla-addtable vm pt row col 1 1))
(vla-put-titlesuppressed tb :vlax-false)
(vla-put-headersuppressed tb :vlax-true)
(vla-put-RegenerateTableSuppressed tb :vlax-true)
(vla-put-vertcellmargin tb 0.1)
(vla-put-horzcellmargin tb 0.25)
(vla-setrowheight tb 0 0.3875)
(vla-setcolumnwidth tb 0 2.2)

(vla-settextstyle tb actitlerow "bold");title text style
(vla-settextstyle tb acdatarow "Standard");data rows text style
(vla-settextheight tb actitlerow 0.27);title text height = 0.27
(vla-settextheight tb acdatarow 0.21);other cells text height = 0.21
(vla-setalignment tb actitlerow acmiddlecenter);title alignment
(vla-setalignment tb acdatarow acmiddlecenter);data cell alignment
(vla-setformat tb acdatarow "arch");data cell format
(vla-settext tb 0 0 "STUBS");title text

(setq count 1)

(while (< count row)
(vla-setcelltextstyle tb count 0 "Standard")
(vla-setcelldatatype tb count 0 acdouble acunitdistance);optional
(vla-setrowheight tb count 0.3875)
(if (=count 1)
(vla-settext tb count 0 strdis)   
(vla-settext tb count 0 (strcat "= A2*" (itoa count))))
(setq count (1+ count)))
(vla-put-RegenerateTableSuppressed tb :vlax-false)

(princ)
);_ end

Lee Mac 发表于 2022-7-6 15:23:42

我对VL非常陌生,但是:
 

(vla-put-ScaleFactor tb (getvar "dimscale"))

BLOACH85 发表于 2022-7-6 15:27:51

这就是它所提出的,实际上我感觉好了一点,因为即使它不起作用,也有一些不同的看法。我还没有看到这个错误。哈,但它在这里。
 
拾取插入点:有多少存根?14
第一个存根维度是什么15.6295
; 错误:ActiveX服务器返回错误:未知名称:ScaleFactor

Lee Mac 发表于 2022-7-6 15:29:59

我想这只是意味着它不是受支持的属性之一。。。(认为这是正确的-当你需要他时,阿斯米在哪里)
 
好的,我刚刚试着在一个插件上执行此操作:
 
(defun c:dump (/ ent obj)
(while (setq ent (entsel "\nSelect entity to get object data: "))
   (print)
   (setq obj (vlax-ename->vla-object (car ent)))
   (vlax-dump-object obj t)
   (vlax-release-object obj)
   (princ "\n")
)
(princ)
)
 
它列出了这些属性:
 

; IAcadBlockReference: AutoCAD Block Reference Interface
; Property values:
;   Application (RO) = #<VLA-OBJECT IAcadApplication 00b5e51c>
;   Document (RO) = #<VLA-OBJECT IAcadDocument 01f1b850>
;   Handle (RO) = "2DCC"
;   HasAttributes (RO) = 0
;   HasExtensionDictionary (RO) = 0
;   Hyperlinks (RO) = #<VLA-OBJECT IAcadHyperlinks 04aaca64>
;   InsertionPoint = (434.228 282.275 0.0)
;   Layer = "0"
;   Linetype = "BYLAYER"
;   LinetypeScale = 1.0
;   Lineweight = -1
;   Name = "TEST BLOCK"
;   Normal = (0.0 0.0 1.0)
;   ObjectID (RO) = 2130145312
;   ObjectName (RO) = "AcDbBlockReference"
;   OwnerID (RO) = 2130001088
;   PlotStyleName = "ByLayer"
;   Rotation = 0.0
;   TrueColor = #<VLA-OBJECT IAcadAcCmColor 04aac360>
;   Visible = -1
;   XScaleFactor = 1.0
;   YScaleFactor = 1.0
;   ZScaleFactor = 1.0
; Methods supported:
;   ArrayPolar (3)
;   ArrayRectangular (6)
;   Copy ()
;   Delete ()
;   Explode ()
;   GetAttributes ()
;   GetBoundingBox (2)
;   GetConstantAttributes ()
;   GetExtensionDictionary ()
;   GetXData (3)
;   Highlight (1)
;   IntersectWith (2)
;   Mirror (2)
;   Mirror3D (3)
;   Move (2)
;   Rotate (2)
;   Rotate3D (3)
;   ScaleEntity (2)
;   SetXData (2)
;   TransformBy (1)
;   Update ()

 
这会让我产生这样的想法:
 

(setq dimsc (getvar "dimscale"))
(vla-put-XScaleFactor tb dimsc)
(vla-put-YScaleFactor tb dimsc)
(vla-put-ZScaleFactor tb dimsc)

 
但我不知道

BLOACH85 发表于 2022-7-6 15:33:46

嗯,我仍然没有工作,它说错误错误参数类型vla object nil,所以我不确定我想我将不得不考虑使用4个以上的括号,我试图避免。在盒子里思考更容易!

Lee Mac 发表于 2022-7-6 15:36:27

在提供我的建议时,我实际上并没有查看您发布的LISP,只是使用了我在VL领域所知的一点。
 
但现在我知道了,我看到你使用了命令vla addtable,这似乎在我的ACAD中没有被识别-你如何让这个函数工作?

BLOACH85 发表于 2022-7-6 15:39:39

你想在命令行中使用它吗?我知道acad 2009中有新命令,我知道表是一个vla对象,我所做的几乎都是操纵它。vla addtable只执行表的插入。

Lee Mac 发表于 2022-7-6 15:42:55

好的,这可能是问题所在-我的visual lisp编辑器无法识别这些命令-因此我认为它们是2009年的新命令。
 
但是,如果“vla addtable”执行表插入,那么(这可能是一个愚蠢的问题),您是否会将变量“tb”设置为沿(“entlast”)行的某个值,然后将其转换为vla object或其他值虽然我不确定命令vla addtable的返回值是多少可能返回的是VLA对象名。
 
无论如何,值得一试。
页: [1] 2
查看完整版本: 我怎样才能在