Murph 发表于 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

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

更糟糕的是,如果除了我调用sub的dvb之外,还加载了其他dvb,那么愚蠢的vbastmt会给我带来语法错误 知道这东西为什么会成为皮塔吗?

Murph 发表于 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");

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

嘿,马特,把论点传给dvb怎么样 这就是让我痛苦的原因

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

好吧,现在我真的卡住了 似乎我无法从LISP或带有CUI的宏中将参数传递给dvb 有什么想法吗 我不想做的是制作大量的三行lisp代码来插入一个愚蠢的DynBlock
页: 1 [2]
查看完整版本: 插入DynamicBlock