|
||
| Правила | Регистрация | Пользователи | Сообщения за день | | Поиск | | Справка по форуму | Файлообменник | |
|
Поиск в этой теме |
11.12.2008, 16:15 | #1 | |
Программное создание мультивыноски
Инженер-строитель
Киров
Регистрация: 15.08.2007
Сообщений: 2,204
|
||
Просмотров: 34786
|
|
||||
Thượng Tá Quân Đội Nhân Dân Việt Nam Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,381
|
Мультивыноска через LISP создается функцией
Код:
Код:
Можно мультивыноску и добавить командой, например так (для двух точек): Код:
После того, как объект мультивыноски создан, для него надо установить всё то множество свойств, чтобы он выглядел правильно. И, конечно, установить главное свойство - textstring. Все эти действия спрятать в низкоуровневые функции, а на самом верху сделать 1-2 "конечных" функции, в которые передавать простые аргументы, например строку над выноской и под выноской. |
|||
|
||||
Thượng Tá Quân Đội Nhân Dân Việt Nam Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,381
|
Надо научиться справкой по объектам. Делать надо так:
1. В Vlide вызвать справку 2. Выбрать ActiveX and VBA Reference 3. Выбрать в дереве Objects 4. Выбрать нужный объект, например Mleader object 5. Щелкнуть по нему и посмотреть. Причитать общее описание. Там есть ссылка Цитата:
Посмотреть Methods и Properties. Но сначала перейти на AddMleader. Там есть описание в стиле VBA Код:
1. Должна быть функция с именем vla-AddMleader. 2. Первым аргументом этой функции должно быть рабочее пространство, куда добавлять объект. В сигнатуре VBA нет такого аргумента, но есть object.AddMleader и перечень, чем может быть этот object. 3. Второй аргумент pointsArray (не LISP-список). Как его сделать я показал. 4. Третий загадочный аргумент - leaderLineIndex. Вспоминаем, что у мультивыноски может быть несколько выносных линий. Мы, для начала, делаем одну, а её индекс (номер) как раз и будет 0. 5. И возвратить эта функция должна созданный объект. Его надо запомнить в переменной, чтобы потом применять к нему методы или устанавливать свойства. Например, чтобы занести текст, надо Код:
Код:
Код:
|
|||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,844
|
ShaggyDoc, позволю себе немного уточнить: достаточно набрать в консоли запущенной VLIDE vla-addmleader и тут же нажать Ctrl+F1. В подавляющем большинстве случаев (кроме особо тяжелых) открывается справка с уже открытым указанным методом.
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
Thượng Tá Quân Đội Nhân Dân Việt Nam Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,381
|
Да, конечно. Можно и так. Но для этого надо написать, то есть знать, что существует метод AddLeader, и к нему надо добавить vla-. Ctrl+F1 очень удобно, когда надо уточнить что-то по известной функции.
Я специально описал самый длительный путь. А до более коротких вариантов уже можно додуматься. |
|||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,844
|
Я его нашел случайно
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
Регистрация: 20.03.2008
Сообщений: 2,653
|
Подскажите, пожалуйста как при создании лиспом мультивыноски, задать в ее содержимом ЗНАЧЕНИЕ переменной, обозначенной в этом же лиспе
Код:
Последний раз редактировалось skkkk, 05.12.2010 в 03:35. |
|||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,844
|
(command "_mleader" a pause "_e" "0" (strcat "Уголок " b))
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
Регистрация: 20.03.2008
Сообщений: 2,653
|
Алексей, ком строка ругается
Цитата:
Добавлено: разобрался... (setq b (getstring... Последний раз редактировалось skkkk, 05.12.2010 в 01:26. |
|||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,844
|
Конвертируй в строку. Либо через rtos, либо через itoa, либо через vl-princ-to-string, либо в местной библиотеке бери соответствующую функцию
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
AutoCAD Регистрация: 26.07.2007
Москва
Сообщений: 1,064
|
skkkk, стили мультивыносок хранятся в словаре ACAD_MLEADERSTYLE.
Там храняться объекты AcadMleaderStyle Sub MLS() Dim oDict As AcadDictionary Set oDict = ThisDrawing.Dictionaries.Item("ACAD_MLEADERSTYLE") Dim i As Long For i = 0 To oDict.Count - 1 Dim oObj As AcadObject Set oObj = oDict.Item(i) If oObj.ObjectName = "AcDbMLeaderStyle" Then Dim oMLS As AcadMLeaderStyle Set oMLS = oObj MsgBox "Name = " & oMLS.Name & vbCrLf & _ "Annotative = " & oMLS.Annotative & vbCrLf & _ "ContentType = " & oMLS.ContentType & vbCrLf & _ "LeaderLineType = " & oMLS.LeaderLineType, vbInformation, "MLeader Styles" End If Next i Dim oNewMLS As AcadMLeaderStyle Set oNewMLS = oDict.AddObject("TEST", "AcDbMLeaderStyle") oNewMLS.LeaderLineType = acSplineLeader Dim oCol As New AcadAcCmColor oCol.ColorIndex = acBlue oNewMLS.LeaderLineColor = oCol Call ThisDrawing.SetVariable("CMLEADERSTYLE", "TEST") Dim points(0 To 5) As Double points(0) = 1: points(1) = 1: points(2) = 0 points(3) = 2: points(4) = 2: points(5) = 0 Dim oML As AcadMLeader Set oML = ThisDrawing.ModelSpace.AddMLeader(points, i) oML.TextString = "mleader created with " & vbCrLf & "style ""TEST""" End Sub |
|||
|
||||
Цитата:
Код:
Пояснения про DImblk Еще один вариант mip-mleader-style-create
__________________
Как использовать код на Лиспе читаем здесь Последний раз редактировалось VVA, 17.06.2015 в 14:15. Причина: Ссылка на пост #44 |
||||
|
||||
Инженер по теплоснабжению Регистрация: 10.04.2010
РБ, г. Могилев
Сообщений: 25
|
может кто подсказать... такое дело... создаю достаточно простую мультивыноску с одной выноской по 2м точкам... она создается все вроде как хочу, только текст всегда оказывается слева от второй точки... а при минимальном движении акад уже меняет выноску с другой стороны... как должно быть... чета я не нашел метода, чтобы этот момент контролировать...
Код:
|
|||
|
||||
специалист по околачиванию грушевых деревьев Регистрация: 14.09.2004
Pietari, Venäjä
Сообщений: 813
|
Цитата:
Код:
|
|||
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Программное создание размерных стилей | Кулик Алексей aka kpblc | Программирование | 89 | 08.04.2013 12:59 |
Программное создание PlotConfiguration | Sleekka | Программирование | 2 | 17.09.2008 20:48 |
NanoСПДС | gest | Другие CAD системы | 401 | 15.07.2008 14:50 |
Программное создание vport`ов | Ax3 | Программирование | 10 | 29.08.2007 16:02 |