Kerry 发表于 2008-4-10 11:19:52

这是随附的代码
Public Sub insblk(blkname As String, strLayer As String, Optional strVisibilityState As String)
      Dim blkr As AcadBlockReference
      Dim inspt As Variant
      Dim strCurrentLayer As AcadLayer, newLayer As AcadLayer
      Dim dybprop As Variant, i As Integer
      inspt = ThisDrawing.Utility.GetPoint(, "Enter a point: ")
      Set strCurrentLayer = ThisDrawing.ActiveLayer
      Set newLayer = ThisDrawing.Layers.Add(strLayer)
      ThisDrawing.ActiveLayer = newLayer
      Set blkr = ThisDrawing.ModelSpace.InsertBlock(inspt, blkname, 1, 1, 1, 0)
      If blkr.IsDynamicBlock Then
            dybprop = blkr.GetDynamicBlockProperties
            For i = LBound(dybprop) To UBound(dybprop)
                  If dybprop(i).PropertyName = "Visibility" Then
                        dybprop(i).Value = strVisibilityState
                  End If
            Next i
      End If
      ThisDrawing.ActiveLayer = strCurrentLayer
End Sub

Humbertogo 发表于 2008-4-10 12:57:09

更糟糕的是,如果除了我调用子的dvb之外,如果加载了任何dvb,那么愚蠢的vbastmt会给我一个语法错误。 任何想法为什么这个东西是PITA?

Humbertogo 发表于 2008-4-10 13:45:25

我使用以下命令从不同的DVB加载/运行模块。
(defun DVBLoader (strDVBName strDVBModule / )
   (command "-vbarun" (strcat strDVBName "!" strDVBModule))
   (princ)
)
^C^C^P(load" VBA-Apps");(DVBLoader "PrintManager.dvb" "modMain.Main");

Kerry 发表于 2008-4-10 13:58:22

嘿,马特,把论点传递给dvb怎么样? 这就是杀死我的原因

Murph 发表于 2008-4-28 12:41:27

好吧,现在我真的卡住了。看起来我不能从LISP或带有CUI的宏向dvb传递参数。有什么想法吗?我不想做的是仅仅为了插入一个愚蠢的动态块而编写大量的3行lisp代码
页: 1 [2]
查看完整版本: 插入动态块