| Правила | Регистрация | Пользователи | Сообщения за день |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Куча объектов в одной координате, но в разных слоях, как сместить?

Куча объектов в одной координате, но в разных слоях, как сместить?

Ответ
Поиск в этой теме
Непрочитано 09.12.2015, 20:52 #1
Куча объектов в одной координате, но в разных слоях, как сместить?
Jnas
 
Проектировшик АСУТП слаботочных систем
 
Набережные Челны, Нижнекамск
Регистрация: 25.06.2008
Сообщений: 20

Здравствуйте ув.-мые форумчанины.
К сожалению с LISP не знаком (изучал другие языки) . Сложилась следующая ситуация, мне постоянно присылают для работы чертежи, в которых куча A3 - A4 форматов на одной оси координат, но в разных слоях.
Вопрос, можно ли сместить объекты к примеру на 420 мм.

Я понимаю как это будет выглядеть на других языках программирование. но к сожалению с автокадовским ничем не знаком....

переменная1 = 0
получить все слои, запустить перебор{
выбрать все объекты слоя и сместить на переменная1
далее переменная1 = переменная1 + 420
}
и это всё в цикле


Прошу помощи, заранее спасибо!
Просмотров: 2871
 
Непрочитано 10.12.2015, 08:37
#2
Boxa

КЖ; C#
 
Регистрация: 03.11.2005
Санкт-Петербург
Сообщений: 2,589


Ничего не понял из объяснений о том что должна делать программа, однако должен заметить, что автокад поддерживает технологии СОМ и ActiveX, а соответственно язык не так уж и принципиален, VB, Delphi, С, весь набор .net платформы и прочие.
Так что,
Цитата:
Сообщение от Jnas Посмотреть сообщение
К сожалению с LISP не знаком (изучал другие языки)
, совсем не повод для того, чтобы ничего не писать.
Boxa вне форума  
 
Автор темы   Непрочитано 10.12.2015, 09:14
#3
Jnas

Проектировшик АСУТП слаботочных систем
 
Регистрация: 25.06.2008
Набережные Челны, Нижнекамск
Сообщений: 20


Цитата:
Сообщение от Boxa Посмотреть сообщение
совсем не повод для того, чтобы ничего не писать
Да я не говорю , что это повод и не говорю, что ничего не пытаюсь, но не одним из этих языков я не знаком, xHDL, ассемблер некоторых микропроцессоров и т.д. вот моё
пытался что то сделать на VB, кроме как вытащить все слои чертежа больше ничего не получилось и то из интерета нашел решение больше усё....

Смысл программы прост, берем все слои и циклов проходим
в первом слое все объекты смещаем на 420мм относительносто того, где они сейчас стоят
во втором слое все объекты смещаем на 840мм относительносто того, где они сейчас стоят
в третьем слое все объекты смещаем на 1680мм относительносто того, где они сейчас стоят и т.д.
Jnas вне форума  
 
Непрочитано 10.12.2015, 09:29
1 | #4
Boxa

КЖ; C#
 
Регистрация: 03.11.2005
Санкт-Петербург
Сообщений: 2,589


Цитата:
Сообщение от Jnas Посмотреть сообщение
пытался что то сделать на VB, кроме как вытащить все слои чертежа больше ничего не получилось
Так после этого совсем немного осталось, пара циклов и Вы в "дамках"

Нижеприведенный код я даже не запускал, но думаю идея понятна
Код:
[Выделить все]
Sub srfgjsr()
    Dim layerName(2) As String
    layerName(0) = "0"
    layerName(1) = "Wall"
    layerName(2) = "Opening"
    
    Dim c As Collection
    Set c = New Collection
    For i = LBound(layerName) To UBound(layerName)
        c.Add 420 * i, layerName(i)
    Next
    
    
    Dim ssetObj As AcadSelectionSet
    Set ssetObj = ThisDrawing.SelectionSets.Add("SSET")

    Mode = acSelectionSetAll
    ssetObj.Select Mode

    On Error Resume Next
    
    For Each i In ssetObj
        Dim point1(0 To 2) As Double
        Dim point2(0 To 2) As Double
        point1(0) = 0: point1(1) = 0: point1(2) = 0
        point2(0) = c.Item(i.Layer): point2(1) = 0: point2(2) = 0
        i.Move point1, point2
    Next

End Sub

Последний раз редактировалось Boxa, 10.12.2015 в 09:59.
Boxa вне форума  
 
Автор темы   Непрочитано 10.12.2015, 12:24
#5
Jnas

Проектировшик АСУТП слаботочных систем
 
Регистрация: 25.06.2008
Набережные Челны, Нижнекамск
Сообщений: 20


Спасибо за подсказку все работает
сделал так
Код:
[Выделить все]
Sub srfgj()
    Dim c As Collection
    Set c = New Collection
    Dim inc As Integer
    inc = 1

    For Each entry In ThisDrawing.Layers
        c.Add 420 * inc, entry.Name
        inc = inc + 1
    Next

    Dim sssetObj As AcadSelectionSet
    Set sssetObj = ThisDrawing.SelectionSets.Add("SET")

    Mode = acSelectionSetAll
    sssetObj.Select Mode

    On Error Resume Next

    For Each i In sssetObj
        Dim point1(0 To 2) As Double
        Dim point2(0 To 2) As Double
        point1(0) = 0: point1(1) = 0: point1(2) = 0
        point2(0) = c.Item(i.Layer): point2(1) = 0: point2(2) = 0
        i.Move point1, point2
    Next
End Sub
Jnas вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Куча объектов в одной координате, но в разных слоях, как сместить?

Размещение рекламы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Разработка ПОС, искусство проектирования Tyhig Технология и организация строительства 117 25.11.2021 17:38
Какой язык перспективен для инженера-конструктора с условием The_Mercy_Seat Программирование 705 17.03.2021 14:19
Аттестация в Минрегионе по негосударственной экспертизе Людмила Охр Прочее. Архитектура и строительство 350 14.02.2015 17:50
Масштабирование объектов при печати в разных форматах Yuri AutoCAD 4 13.05.2004 19:27