Re: Блокировка AutoCAD

Свой вопрос снимаю.
По закону подлости не находил решения, спросил на форуме и сразу нашел как сделать.

Re: Блокировка AutoCAD

Boxa Shu пишет:

По закону подлости не находил решения, спросил на форуме и сразу нашел как сделать.

Ну так напиши.

Re: Блокировка AutoCAD

Состряпал на скорую руку...

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

   Dim text_2 As String="Что то там"
   Dim text_1 As String = "Где то там"
   Call adskCommands.crLayers(text_2, text_1)
End Sub


Public Shared Sub crLayers(ByRef str As String, ByRef str_prop As String)

        ' Получениеn текущего документа и базы данных
        Dim acDoc As Document = Application.DocumentManager.MdiActiveDocument
        Dim acCurDb As Database = acDoc.Database
        Dim acEd As Editor = acDoc.Editor

        Using db As Database = HostApplicationServices.WorkingDatabase()

            'Начало транзакции
            Using acTrans As Transaction = acCurDb.TransactionManager.StartTransaction()

                Dim myDwg As Document
                myDwg = Application.DocumentManager.MdiActiveDocument
                Using docloc As DocumentLock = myDwg.LockDocument ' lock current document

                    Try
                        'Открываю таблицу слоев для чтения
                        Dim acLyrTbl As LayerTable
                        acLyrTbl = CType(acTrans.GetObject(acCurDb.LayerTableId, _
                                                     OpenMode.ForRead), LayerTable)

                        Dim lay As liralayer = layer_dict.Item(str)

                        'В этой переменной наименование слоя
                        Dim sLayerName As String = lay.name.ToString & str_prop
                        'Если этого слоя нет, то создаем его
                        If acLyrTbl.Has(sLayerName) = False Then

                            Dim acLyrTblRec As LayerTableRecord = New LayerTableRecord()
                            'Создаем новый слой с заданными параметрами
                            acLyrTblRec.Name = sLayerName
                            acLyrTblRec.Color = Color.FromColorIndex(ColorMethod.ByAci, CType(lay.color, Short))
                            acLyrTblRec.Description = lay.Description + " создан программой"
                            acLyrTblRec.LineWeight = DirectCast([Enum].Parse(GetType(LineWeight), lay.LineWeight), LineWeight)
                            acLyrTblRec.IsPlottable = lay.IsPlottable
                            acLyrTblRec.IsOff = lay.IsOff
                            acLyrTblRec.IsFrozen = lay.IsFrozen
                            acLyrTblRec.IsLocked = lay.IsLocked

                            ''Обновляем таблицу слоев для записи
                            acLyrTbl.UpgradeOpen()

                            ''Добавляем новый слой в таблицу слоев
                            acLyrTbl.Add(acLyrTblRec)
                            acTrans.AddNewlyCreatedDBObject(acLyrTblRec, True)

                        End If
                        acTrans.Commit()
                    Catch ex As Autodesk.AutoCAD.Runtime.Exception
                        MsgBox(vbLf & "Error: " & ex.ToString)
                    Finally
                        acTrans.Dispose()
                    End Try
                    'Сохранение изменений и завершение транзакции
                End Using

            End Using

        End Using

    End Sub