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

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > VBA, "повесить блок на курсор"

VBA, "повесить блок на курсор"

Ответ
Поиск в этой теме
Непрочитано 30.07.2008, 12:57 #1
VBA, "повесить блок на курсор"
Vildar
 
AutoCAD
 
Москва
Регистрация: 26.07.2007
Сообщений: 1,064

Задачка такая обресовалась

При вставке блока с кнопки, запросить точку вставки и одновременно "повесить" его на курсор (и чтоб он за курсором перемещался).
Причем, отображаться он должен в заданном масштабе

Какая будет стратегия.

Последний раз редактировалось Vildar, 30.07.2008 в 13:08.
Просмотров: 8160
 
Автор темы   Непрочитано 30.07.2008, 13:01
#2
Vildar

AutoCAD
 
Регистрация: 26.07.2007
Москва
Сообщений: 1,064


Самое главное забыл. После указания точки, нужно еще проследить за мышкой и в раные стороны блок поворачивать. Ну например высотную отметку.
Vildar вне форума  
 
Непрочитано 30.07.2008, 13:12
#3
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,450


http://dwg.ru/f/showthread.php?t=11905 - там есть лисповые решения. Это тот случай, когда от командных методов отказаться невозможно.
Я понимаю, что "задели" невозможности VBA в теме "VBA - зло"
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 30.07.2008, 15:15
#4
Дима_

Продуман
 
Регистрация: 22.02.2007
Питер
Сообщений: 2,839


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
http://dwg.ru/f/showthread.php?t=11905Это тот случай, когда от командных методов отказаться невозможно.)
А здесь?
__________________
Когда в руках молоток все вокруг кажется гвоздями.
Дима_ вне форума  
 
Непрочитано 30.07.2008, 15:20
#5
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,450


Дима_, а если вспомнить BricsCAD и Ко? Там ET нет и не будет
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 30.07.2008, 16:11
#6
Дима_

Продуман
 
Регистрация: 22.02.2007
Питер
Сообщений: 2,839


А жаль! В чем же интересно у самих автодесков это (прорисовка тела у курсора) написанно? Вопрос у кого голый автокад без ET - там при перемещении тела оно у курсора наблюдаеться?
__________________
Когда в руках молоток все вокруг кажется гвоздями.
Дима_ вне форума  
 
Непрочитано 30.07.2008, 16:17
#7
fixo

Lisp/VBA/VB.NET Hobbyist
 
Регистрация: 24.03.2005
Славен Град Петров
Сообщений: 367


Цитата:
Сообщение от Vildar Посмотреть сообщение
Задачка такая обресовалась

При вставке блока с кнопки, запросить точку вставки и одновременно "повесить" его на курсор (и чтоб он за курсором перемещался).
Причем, отображаться он должен в заданном масштабе

Какая будет стратегия.
Объектными методами в VBA это не реализовать
Можно только с использованием лисп выражения
и функции SendCommand:

Код:
[Выделить все]
Option Explicit

'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~'
Function IsBlockExist(bName As String) As Boolean

   Dim oBlock As AcadBlock
   IsBlockExist = False
   For Each oBlock In ThisDrawing.Blocks
   If StrComp(oBlock.Name, bName, vbTextCompare) = 0 Then
   IsBlockExist = True
   End If
   Next

End Function
'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~'
Function IsLayerExist(lName As String) As Boolean

   Dim oLayer As AcadLayer
   IsLayerExist = False
   For Each oLayer In ThisDrawing.Layers
   If StrComp(oLayer.Name, lName, vbTextCompare) = 0 Then
   IsLayerExist = True
   End If
   Next

End Function
'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~'
Sub InsertWithGhostImage()

     Dim blkName As String, layName As String

     Dim strPt As String, comStr As String

     blkName = InputBox(vbCrLf & "Block name to insert:", "Insert Block")

     If blkName = vbNullString Then Exit Sub

     If Not IsBlockExist(blkName) Then
     MsgBox "Block " & Chr(34) & blkName & Chr(34) & " does not exist"
     Exit Sub
     End If

     layName = InputBox(vbCrLf & "Layer name to insert block on:", "Insert Block", "0")

     If Not IsLayerExist(layName) Then
     MsgBox "Layer " & Chr(34) & layName & Chr(34) & " does not exist"
     Exit Sub
     End If

     With ThisDrawing

          On Error GoTo Err_Control
          .Utility.Prompt vbCrLf & "   Specify insertion point of block  >>"
          comStr = "(command " & _
                   Chr(34) & "._-insert" & Chr(34) & _
                   vbCr & Chr(34) & blkName & _
                   Chr(34) & " pause " & vbCr & _
                   Chr(34) & "1" & Chr(34) & _
                   vbCr & Chr(34) & "1" & Chr(34) & _
                   vbCr & Chr(34) & "0" & Chr(34) & ")"
                   .SendCommand comStr & vbCr

          DoEvents

          Dim oSpace As AcadBlock
          Dim oblkRef As AcadBlockReference
          If .ActiveSpace = acModelSpace Then
               Set oSpace = .ModelSpace
          Else
               Set oSpace = .PaperSpace
          End If
          Set oblkRef = oSpace.Item(oSpace.Count - 1)

     End With

Exit_Here:

     Exit Sub

Err_Control:

     MsgBox Err.Description
     Resume Exit_Here

End Sub
~'J'~
fixo вне форума  
 
Автор темы   Непрочитано 30.07.2008, 16:30
#8
Vildar

AutoCAD
 
Регистрация: 26.07.2007
Москва
Сообщений: 1,064


Цитата:
Сообщение от Дима_ Посмотреть сообщение
А жаль! В чем же интересно у самих автодесков это (прорисовка тела у курсора) написанно? Вопрос у кого голый автокад без ET - там при перемещении тела оно у курсора наблюдаеться?
Попробоввал на 2008 LT без експрессов. Вставил блок, причем с атрибутом. До указания точки вставки, при перемещении мышки по экрану, блок перемещается (перерисовывается), с задержкой в отрисовке текста.
Vildar вне форума  
 
Непрочитано 30.07.2008, 16:47
#9
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,450


В LT вообще Express Tools существовать не могут (официально)
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 30.07.2008, 17:05
#10
Дима_

Продуман
 
Регистрация: 22.02.2007
Питер
Сообщений: 2,839


Тогда значит они (Аутодеск) от нас что-то скрывают, надо на них VVA натравить чтобы, он эту недокументированную функцию отрыл.
__________________
Когда в руках молоток все вокруг кажется гвоздями.
Дима_ вне форума  
 
Автор темы   Непрочитано 30.07.2008, 18:59
#11
Vildar

AutoCAD
 
Регистрация: 26.07.2007
Москва
Сообщений: 1,064


fixo, мне кажется Вы недописали, после:
Код:
[Выделить все]
Set oblkRef = oSpace.Item(oSpace.Count - 1)
Что означает? И после ничего нет!?
Насчет DoEvents, поясните. В справке непонятно написано.
Во время паузы в:
Код:
[Выделить все]
"(command "._-insert" "СЛ2" pause "1" "1" "0")"
Выполняется DoEvents? Так?
Вернее не выполняется, а может выполняться еще одна команда.
Хотя нет. Во время "pause", запрвшивается точка вставки. Тогда вообще непонятно. Вы извените за глупые вопросы, ладно.
Ё, я кажется понял. Вставка блока через команду, это оно самое и есть. Т.е. блок (с помощью Автокада) вешается на курсор? Футы, так просто.
А как насчет реализации после указания точки вставки блока. Нужно управлять его размещением, в зависимости от расположения курсора относительно точки вставки.

Последний раз редактировалось Vildar, 30.07.2008 в 19:34.
Vildar вне форума  
 
Непрочитано 30.07.2008, 20:10
#12
fixo

Lisp/VBA/VB.NET Hobbyist
 
Регистрация: 24.03.2005
Славен Град Петров
Сообщений: 367


Опять же на VBA это не сделать
Но можно тупо вставлять блок куда-нибудь
скажем в точку 0,0,0 а затем по аналогии
использовать команду "Move" через SendCommand
Так на языке и вертится: через ж..
Насчет DoEvents в данном контексте она
не выполняет никакой роли можешь убрать
А в принципе эта функция передает управление Windows,
для обработки других событий. И после обработки Windows'ом всех событий из очереди и передачи всех нажатий клавиш из очереди функции SendKeys возвращает управление обратно в VBA
Фактически здесь она работает как Sleep

~'J'~
fixo вне форума  
 
Автор темы   Непрочитано 31.07.2008, 09:37
#13
Vildar

AutoCAD
 
Регистрация: 26.07.2007
Москва
Сообщений: 1,064


А что значит - "~'J'~"? Где-то (на caduser кажись) уже встречал!

Не совсем понял про "через жо...": Но можно тупо вставлять блок куда-нибудь скажем в точку 0,0,0 а затем по аналогии
использовать команду "Move" через SendCommand

Если есть возможность, посмотрите как вставляется, например, высотная отметка в СПДС. На мой взгляд, только move не обойтись.
Ну ладно, для меня пока это не критично (проблема остро не стоит).
Vildar вне форума  
 
Непрочитано 31.07.2008, 09:42
#14
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,450


я бы использовал не _.move, а либо _.change (для варианта 2Д), либо _.-insert (для варианта 3Д)
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 31.07.2008, 11:09
#15
fixo

Lisp/VBA/VB.NET Hobbyist
 
Регистрация: 24.03.2005
Славен Град Петров
Сообщений: 367


Цитата:
Сообщение от Vildar Посмотреть сообщение
А что значит - "~'J'~"? Где-то (на caduser кажись) уже встречал!
Это означает мою глупую рожу -
глаза, нос и усы

~'J'~
fixo вне форума  
 
Непрочитано 31.07.2008, 11:19
#16
ShaggyDoc

Thượng Tá Quân Đội Nhân Dân Việt Nam
 
Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,372


Код:
[Выделить все]
(command "._-insert" "СЛ2" pause "1" "1" "0")"
Это ведь не VBA. Это LISP, отправленный в командную строку средствами VBA. Но "там же скобки"!

Далее. Эта строка будет отображаться в командной строке AutoCAD. Кому этот мусор нужен?

А почему стоит "1"? Разве блок только в единичном масштабе вставляется? Масштаб должен быть рассчитан в зависимости от назначения блока, а блок перед вставкой должен быть смасштабирован. Что толку, если на курсоре будет болтаться какая-то козявка или наоборот, громадина?

А поворот обязательно 0? А если надо еще и разворачивать (или визуально или с заданием угла любым стандартным методом), что другой проект делать?

А если атрибуты в блоке будут? Че тогда?

А откуда вообще имя блока будет браться? Спрашивать, как показано в #7? Или зашивать в dvb? А если блоков сотни? Что, на каждый блок проект?

А как в меню записать?

А если определения блока нет в DWG? Exit Sub и всё?

и т.д.
ShaggyDoc вне форума  
 
Автор темы   Непрочитано 31.07.2008, 11:50
#17
Vildar

AutoCAD
 
Регистрация: 26.07.2007
Москва
Сообщений: 1,064


Это просто "чайнику" показали, как использовать командные методы при вставке блока.
По замечаниям от ShaggyDoc. Мои предположения. Остальные условия тоже можно туда прописать.
- Имя блока берем с кнопки (через сис.переменную Userr1), проверяем его наличие. Кнопка, потому что блоков оформления не много, я делаю именно их.
- Масштаб, у меня он в сис.переменной CELTSCALE (и формочка в немодальном режиме для изменения масштаба).
- Дальше черт его знает.

Пока у меня на кнопке макрокоманда, из книжки В.Свет, по простому варианту: ^C^C_-insert;Os;\$M=$(Getvar,CELTSCALE);;;
Значение атрибута - ручками .
И повернут/подвинут/отзеркалят если надо тоже ручками )))

Серьезно. Надо решать поставленные задачи. Это я себе говорю, че-то обленился.
Vildar вне форума  
 
Автор темы   Непрочитано 31.07.2008, 13:20
#18
Vildar

AutoCAD
 
Регистрация: 26.07.2007
Москва
Сообщений: 1,064


Подскажите переменную для регулирования масштаба отображаемого на курсоре блока.
Vildar вне форума  
 
Непрочитано 31.07.2008, 13:25
#19
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,450


Такой переменной нет. Прочти ссылку, которую я давал - там ShaggyDoc все по полочкам разложил
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 31.07.2008, 14:06
#20
Vildar

AutoCAD
 
Регистрация: 26.07.2007
Москва
Сообщений: 1,064


Читал, читаю. В постах нашел INSUNITS. Но это же не то (жесткая градация единиц чертежа). А в лисповом коде мне не разлбраться.
Пояснение. По INSUNITS, я имею ввиду что она управляет масштабом, но ее значения ограничены.
Vildar вне форума  
 
Непрочитано 31.07.2008, 14:08
#21
ShaggyDoc

Thượng Tá Quân Đội Nhân Dân Việt Nam
 
Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,372


Цитата:
Сообщение от Vildar Посмотреть сообщение
Это просто "чайнику" показали, как использовать командные методы при вставке блока.
По замечаниям от ShaggyDoc. Мои предположения. Остальные условия тоже можно туда прописать.
- Имя блока берем с кнопки (через сис.переменную Userr1), проверяем его наличие. Кнопка, потому что блоков оформления не много, я делаю именно их.
- Масштаб, у меня он в сис.переменной CELTSCALE (и формочка в немодальном режиме для изменения масштаба).
- Дальше черт его знает.

Пока у меня на кнопке макрокоманда, из книжки В.Свет, по простому варианту: ^C^C_-insert;Os;\$M=$(Getvar,CELTSCALE);;;
Значение атрибута - ручками .
И повернут/подвинут/отзеркалят если надо тоже ручками )))

Серьезно. Надо решать поставленные задачи. Это я себе говорю, че-то обленился.
Так мы ж не про макросы из книги, а про VBA. Для решения элементарной задачи. И всё как-то "на соплях". Например CELTSCALE для хранения масштаба, USER... еще для чего-то, атрибуты - "ручками", подвинут "ручками". Блоков "немного" понятие относительное. Ну, зубов у меня, может немного, но это не повод лечить их через разные отверстия в теле ржавыми инструментами.

Где же "нажал и чертеж готов", упоминавшейся в ветке про "зло"?

А вот примерно как делается на LISP.

1. Имеется библиотека функций, которая всегда в памяти. Все функции доступны как друг другу, так и любым программам. Функции имеют аргументы. Вызов любой функции можно и в программе сделать и в другой функции и в макросе меню или кнопки прописать.

2. Применительно к вставке блоков имеем записи макросов наподобие:

Код:
[Выделить все]
(block-multi-insert "common\\ru-lib-common"  "ru_elev_mark_plan" 1  T)
Такой вызов функции выполняет множественную вставку заданного блока, хранящегося в библиотеке блоков в заданном масштабе с поворотом. В данном случае это блок отметки для планов. Причем блок будет автоматически правильно масштабироваться и в пространстве модели, и в пространстве листа, и в модели через дыру ВЭ.

И простой инженер (да просто "тетка"), зная, что это за аргументы, может просто скопировать вызов и вставить в другой пункт меню.

Вот это будет вставка той же отметки, но без запроса поворота:
Код:
[Выделить все]
(block-multi-insert "common\\ru-lib-common"  "ru_elev_mark_plan" 1  nil)
А это - размером в 1.5 раза больше:
Код:
[Выделить все]
(block-multi-insert "common\\ru-lib-common"  "ru_elev_mark_plan" 1.5  nil)
и так далее. А чуть более продвинутый инженер сам легко подобные функции напишет. Безо всякого сопромата, теории упругости и таинственной арифметки, которая вроде как в VBA только и есть.

Заодно уж и диалог выбора покажу (см. рисунок). Там не отметки (что их смотреть). Там что угодно может быть. Это несмотря на то, что считают, что диалоги в VBA хороши, рядом только OA с жалкой троечкой.

Вывод этого диалога делается тоже функцией:

Код:
[Выделить все]
 
(ru-xml-pop-mnu "common/ru_3d_kip" "КИП")
Можете тоже на VBA потренироваться
Миниатюры
Нажмите на изображение для увеличения
Название: xml_3d_kip.png
Просмотров: 106
Размер:	114.5 Кб
ID:	8859  
ShaggyDoc вне форума  
 
Непрочитано 31.07.2008, 14:53
#22
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,450


insunits немного не то
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 31.07.2008, 15:00
#23
Vildar

AutoCAD
 
Регистрация: 26.07.2007
Москва
Сообщений: 1,064


ShaggyDoc, может хватит тыкать "в грязь лицом". Я не претендую на звание "программиста", "продвинутого инженера". Могу публично во всем раскаяться (хотя я никогда и не претендовал). Я инженер 3 категории, сегодня только под этим подписался в ОК, можете поздравлять .

По сути. Передо мной стоит задача "соскочить" с СПДС (подробнее см. "Замена ходовых инструментов СПДС на свои собственные"). Ограничений по используемым инструментам нет (Lisp, VBA, макрокоманды, короче все). Результат может быть от 0 до 100%. Я близок к 0% (относительно СПДС, но работать можно и ручками на худой конец). Конечная цель видна, СПДС, а шаги к реализации нет. За что хвататься не пойму, вот поэтому я здесь и ищу помощи.

ruCAD заменяет СПДС?
Vildar вне форума  
 
Автор темы   Непрочитано 31.07.2008, 15:02
#24
Vildar

AutoCAD
 
Регистрация: 26.07.2007
Москва
Сообщений: 1,064


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
insunits немного не то
Ухмылка. Значит продолжать поиск в тойже теме! Ладно продолжаю (хоть будет чем заняться).
Vildar вне форума  
 
Непрочитано 31.07.2008, 15:29
#25
ShaggyDoc

Thượng Tá Quân Đội Nhân Dân Việt Nam
 
Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,372


Цитата:
Сообщение от Vildar Посмотреть сообщение
По сути. Передо мной стоит задача "соскочить" с СПДС (подробнее см. "Замена ходовых инструментов СПДС на свои собственные"). Ограничений по используемым инструментам нет (Lisp, VBA, макрокоманды, короче все). Результат может быть от 0 до 100%. Я близок к 0% (относительно СПДС, но работать можно и ручками на худой конец). Конечная цель видна, СПДС, а шаги к реализации нет. За что хвататься не пойму, вот поэтому я здесь и ищу помощи.
"Соскочить" с СПДС вполне реально. Для этого надо понять, что эта система делает, как делает, и что в ней плохо.
Делать подобная система должна собственно всё, что предусмотрено стандартами СПДС. А это все оформление - форматки, таблицы, различные условные обозначения, тексты, размеры и прочее. Не столь всё и сложно.

Что плохо в программе СПДС? Только на мой личный субъективный взгляд - достаточно простые задачи реализованы сложным путем - созданием собственных объектов с использованием ObjectARX. Вот отсюда все и проблемы, которые неоднократно поднимались на этом форуме.

По отдельности все задачи неоднократно решены. Если есть цель сделать "в комплексе", то читайте книгу "САПР на базе AutoCAD - как это делается". Там как раз описано "пошагово". В том числе с разбором инструментов, да и процентов 90 кода, необходимого, чтобы заменить (пусть без каких-то "фишек") СПДС-График, приведено.

Вот написанием этой книги мы и оказали конкретную помощь.

Самый лучший инструмент для решения подобных задач как раз LISP.

Цитата:
ruCAD заменяет СПДС?
Такой цели вообще нет, кого-то и что-то заменять.

ruCAD - комплексная система для строительной, сантехнических (всех) систем, топографии, генплана, любого оборудования. Оформительская (СПДС-ная) часть там, конечно есть. Но основное - разработка разных разделов проекта по единой методологии.

"Большой Красной Кнопки" там тоже нет. Обещания, что за полчаса можно выполнить работу целого отдела (как у других) - тоже нет.

Имеется нормальная "механизация" выполнения множества рутинных операций. Картинка в моем предыдущем посте - иллюстрация, того как примерно выглядит интерфейс для пользователя. Это только махонькая менюшечка по 3d-моделированию КИП.
ShaggyDoc вне форума  
 
Непрочитано 31.07.2008, 15:45
#26
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,450


Я к тому написал свой пост, что знание про insunits небесполезно. Но оно не решит текущей задачи (а вот незнание - запросто погубит)
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 31.07.2008, 15:58
#27
Vildar

AutoCAD
 
Регистрация: 26.07.2007
Москва
Сообщений: 1,064


Кажись нашел
Код:
[Выделить все]
(vl-cmdf "_.INSERT"  block_name "_PXScale" x_scale "_PYScale" y_scale pause)
Теперь как бы суметь это использовать.

PS: Нагрянул гл.специалист, он в отпуске сейчас, сказал что не видит смысла пытаться заменить СПДС, и что он от него не откажется. Вроде и полегчало, но теперь не будет стимула к дальнейшему изучению (смешно) чего-либо, а жаль. Что делать?
Vildar вне форума  
 
Непрочитано 31.07.2008, 16:05
#28
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,450


Изучать СПДС. Хочешь задачку?
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 31.07.2008, 16:17
#29
Vildar

AutoCAD
 
Регистрация: 26.07.2007
Москва
Сообщений: 1,064


Цитата:
Сообщение от ShaggyDoc Посмотреть сообщение
"Соскочить" с СПДС вполне реально.
Для "простого инженера", оказалось, нереально.
Цитата:
читайте книгу "САПР на базе AutoCAD - как это делается"
Есть такая книжка. Начинал читать, бросил. Продолжу!
Цитата:
Вот написанием этой книги мы и оказали конкретную помощь.
Спасибо!
Цитата:
Самый лучший инструмент для решения подобных задач как раз LISP.
]
IMHO. А самая лучшая книжка "AutoLisp и VisualLisp в среде AUtoCAD". Есть, и ни что (сомневаюсь, может ничто ) не мешает опять взяться за неё!

Про ruCAD слышал, но не "пробовал". Зазырить бы

Offtop: Но VBA не брошу,
Потому что он хороший.
Vildar вне форума  
 
Автор темы   Непрочитано 31.07.2008, 16:19
#30
Vildar

AutoCAD
 
Регистрация: 26.07.2007
Москва
Сообщений: 1,064


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Изучать СПДС. Хочешь задачку?
Конечно хочу. Гав-гав. Жду с нетерпением!
А на каком языке?
Надо пристраиваться в очередь на "Научите лиспу на примере (или как kpblc, VVA и компания пытаются обучить чайника лиспу)", а то поздно будет.
Vildar вне форума  
 
Непрочитано 31.07.2008, 16:33
#31
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,450


поздно не будет
Попробуй проставить 3-4 десятка выносок и собрать количество узловых по типу "Обознач1" - 10 шт, "Обознач2 - 20 шт" и т.п. По ходу дела (усложнения сразу, потом забуду или лениво будет ): файл с выносками "захлами" еще чем-нибудь; вставь его как внешнюю ссылку в другой файл (раза 3) и опять-таки "собери спецификацию". Данные свести в объект ACAD_TABLE собственного стиля и собственного оформления.
---
Задача 2: запросить у пользователя точку "начала" выноски; радиус круга (крайне желательно с отрисовкой его - если будешь делать на VBA, то используй временные примитивы); потом точка перелома. Проанализировать введенные координаты. Нарисовать выноску, назначить ей соответствующую "стрелку", установить габариты. Должно работать в любом пространстве (что модели, что листа); в любой системе координат.
---
Добавлено: задача 2 для гимнастики. Тяжелой гимнастики.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 31.07.2008, 17:00
#32
Vildar

AutoCAD
 
Регистрация: 26.07.2007
Москва
Сообщений: 1,064


Послал меня, на неделю минимум
Узловой выноски я еще не делал пока. Это будет доп. задача (bonus ).
Сразу загвоздка возникает с ней. Это же не готовый блок вставляется (ведь кружок, а в СПДС он еще и в овальчик превращается, может быть разного диаметра), а рисуется по параметрам, так, с атрибутом. Буду пробовать.
Со спецификацией проблем, в оригинале, пока не вижу. Про ссылки, еще и 3-х кратные, посмотрю, не сталкивался.

Задача 2. О, а это и есть "bonus", только с "фишками". Наполовину облегчил задачу, разжевал пошагово, спс . Правда про любое пространство и в любой системе коор. это круто для меня.

Начну пожалуй.

Спасибо за заботу и внимание

Блин, выноска - _qleader, с пользовательской стрелко (кружком).

Последний раз редактировалось Vildar, 31.07.2008 в 17:56.
Vildar вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > VBA, "повесить блок на курсор"



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Хитрый блок Vova Динамические блоки 166 20.03.2017 15:13
Пароль к VBA karp_b Программирование 24 29.08.2013 12:43
Как удалить существующий блок? dextron3 Динамические блоки 21 24.12.2012 10:19
Помогите доделать программу добавления объектов в блок МишаVBA Программирование 1 20.05.2006 01:04