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

Вернуться   Форум DWG.RU > Программное обеспечение > AutoCAD > Создание пользовательских кнопок в AutoCAD 2006

Создание пользовательских кнопок в AutoCAD 2006

Ответ
Поиск в этой теме
Непрочитано 16.09.2006, 11:35
Создание кнопки для динамического блока
Shoorup
 
Минск
Регистрация: 16.09.2006
Сообщений: 1,587

Здрасте уважаемые специалисты в области AutoCAD.
:!: Вопрос следующего характера: AutoCAD2006 подарил кучу новых возможностей в том числе и динамические блоки. Проблема состоит в том что-КАК СОЗДАТЬ КНОПКУ ДЛЯ ВСТАВКИ ДИНАМИЧЕСКОГО блока. Конечно желательно чтобы команда писалась на макросе а не на лиспе (в виду не знания последнего). Кнопку удается создать для вставки блока, но блок вставляется в блоке т.е. его приходится еще и взрывать. И можно ли как небудь организовать более прилично папку с файлами блоков и иконок к ним. [/b]
__________________
Поезд который устал от ржавого здравомыслия рельсов...

Последний раз редактировалось Shoorup, 02.04.2008 в 11:04.
Просмотров: 14123
 
Непрочитано 01.02.2014, 07:29
#41
Valery Brelovsky

Инженер дорожник
 
Регистрация: 22.10.2007
Израиль
Сообщений: 1,859


Цитата:
Сообщение от Alan Посмотреть сообщение
^C^C(if (/= (strcase (Substr (getvar "CLAYER") 1 3) T) "dim")(nlayer "DIM" nil nil) nil)(nz_dimst "txt-autocad" nil)(setvar "DIMLFAC" (n_d03-1))(setvar "DIMTXT" (getvar "TEXTSIZE"))(graphscr) _dimlinear
Т.е. мне нужно добавить в макрос аналогичную строку на случай если слой заморожен?
Valery Brelovsky вне форума  
 
Непрочитано 01.02.2014, 11:32
#42
Alan

CAD
 
Регистрация: 28.08.2003
Киев
Сообщений: 1,835
<phrase 1=


Цитата:
Сообщение от Valery Brelovsky Посмотреть сообщение
Т.е. мне нужно добавить в макрос аналогичную строку на случай если слой заморожен?
Тебе не удастся т.к. у тебя нет прожки NLAYER.
Строку приводил в качестве примера. Не использую чистый DISEL сочетаю с ЛИСП-текстами - больше возможности.
В твоём случае надо проанализировать Заморожен слой или нет, т.е. всё равно нужен ЛИСП.

----- добавлено через ~10 мин. -----
Что же касается ЛИСП-конструкции
(if (/= (strcase (Substr (getvar "CLAYER") 1 3) T) "dim")(nlayer "DIM" nil nil) nil)
Я допускаю для размещения размеров слои, начинающиеся с DIM, например, DIM_перегородки, DIM_ростверки, DIM_сваи....
Макрос, опубликованный здесь на форуме, позволял переносить размеры на какой-то слой, например, РАЗМЕР.
Но моим пользователям проектировщикам одного слоя мало, они сами определяют куда поставить размер.
Но если текущий слой не "размерный", при вызове данной строки размер попадёт в DIM
__________________
По теории майский жук летать не может.
Но он этого не знает. И летает...
Alan вне форума  
 
Непрочитано 02.02.2014, 10:20
#43
Valery Brelovsky

Инженер дорожник
 
Регистрация: 22.10.2007
Израиль
Сообщений: 1,859


Цитата:
Сообщение от Alan Посмотреть сообщение
Тебе не удастся т.к. у тебя нет прожки NLAYER.
Понял. Работаю с этими макросами давно. Но впрос заморожен слой или нет меня не доставал. Я в принципе в файлах не использую замороженные слоя. Чертёж на печать я формирую из ссылочных файлов и там я использую иногда замораживания слоёв в ссылках, для формирования разных чертежей. Но там я не черчу. А в файлах в которых черчу слои не замораживаю.
Valery Brelovsky вне форума  
 
Непрочитано 02.02.2014, 13:33
#44
Alan

CAD
 
Регистрация: 28.08.2003
Киев
Сообщений: 1,835
<phrase 1=


Цитата:
Сообщение от Valery Brelovsky Посмотреть сообщение
Но впрос заморожен слой или нет меня не доставал.
Ну и ладушки... Я рассматриваю более общий случай, когда макрос или программка должны работать при ЛЮБЫХ условиях.
__________________
По теории майский жук летать не может.
Но он этого не знает. И летает...
Alan вне форума  
 
Непрочитано 02.02.2014, 14:17
#45
Valery Brelovsky

Инженер дорожник
 
Регистрация: 22.10.2007
Израиль
Сообщений: 1,859


В принципе без проверки можно добавить функцию включить слой и разморозить если будет доставать при вставке болка. Часто что бы не заморачиваться пользуюсь функцией включить все слоя, и на всякий случай разморозить. Есть тут программы которые создают и выключают слоя. На пример как создание рамки с сеткой координит. Если сетку делаешь в модели то всё нормально, но если в листае, то сетка создаётся в листе и в моделе, только в моделе выключена, или заморожена, сейчас когда задумался, даже не вспомню. Просто включаю и размораживаю все слоя и сетку в моделе удаляю.
Valery Brelovsky вне форума  
 
Непрочитано 02.02.2014, 17:28
#46
dip

проектировщик
 
Регистрация: 25.05.2007
г. Чебоксары
Сообщений: 206
<phrase 1=


Здравствуйте, уважаемые форумчане! У меня следующая проблема. Есть макрос: ^C^Ckonstr_armDP;esc;-очистить;все;;нет; Но он работает не правильно. Алгоритм следующий: 1)Работает программа (привязана к lisp); 2)прекращаю работу программы кнопкой esc; 3)очистка чертежа. Где ошибка, не знаю
dip вне форума  
 
Непрочитано 02.02.2014, 17:35
#47
AlphaGeo


 
Сообщений: n/a


dip, так может esc стоит заменить на ^C?

----- добавлено через ~8 мин. -----
И вообще, хотелось бы видеть, что AutoCAD пишет в командной строке при выполнении макроса. Тогда и ошибку локализовать будет проще.
 
 
Непрочитано 02.02.2014, 17:59
#48
dip

проектировщик
 
Регистрация: 25.05.2007
г. Чебоксары
Сообщений: 206
<phrase 1=


пишет "; ошибка: Функция отменена". Макрос ^C^Ckonstr_armDP;^C;-очистить;все;;нет; Не помогает к сожалению
dip вне форума  
 
Непрочитано 02.02.2014, 19:46
#49
AlphaGeo


 
Сообщений: n/a


dip, так может её (функцию konstr_armDP) и не нужно отменять? Как функция работает, какие действия требуются от пользователя при её работе?

----- добавлено через ~1 мин. -----
И лучше весь «выхлоп» командной строки с момента запуска макроса предоставлять...
 
 
Непрочитано 02.02.2014, 19:53
#50
dip

проектировщик
 
Регистрация: 25.05.2007
г. Чебоксары
Сообщений: 206
<phrase 1=


Команда: konstr_armDP

Подождите...Первая точка: *Прервано*
; ошибка: Функция отменена

Команда:
KONSTR_ARMDP
Первая точка: -очистить

Неверная точка.
Первая точка: Вторая:
Найдено полей: 12.
Обновлено полей: 12. Первая точка: Вторая:
Найдено полей: 12.
Обновлено полей: 12. Первая точка: *Прервано*
; ошибка: Функция отменена
dip вне форума  
 
Непрочитано 02.02.2014, 20:12
#51
Кулик Алексей aka kpblc
Moderator

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


Ошибка в коде функции, я так полагаю.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 02.02.2014, 20:23
#52
dip

проектировщик
 
Регистрация: 25.05.2007
г. Чебоксары
Сообщений: 206
<phrase 1=


Код:
[Выделить все]
^C^Ckonstr_armDP;^C;-очистить;все;;нет;
Не подскажете, где здесь ошибка?
dip вне форума  
 
Непрочитано 02.02.2014, 20:27
#53
Кулик Алексей aka kpblc
Moderator

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


Функция konstr-armdp из архивов КГБ? Или все же на ее код можно посмотреть?
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 02.02.2014, 20:34
#54
dip

проектировщик
 
Регистрация: 25.05.2007
г. Чебоксары
Сообщений: 206
<phrase 1=


Код:
[Выделить все]
 
(defun c:konstr_armDP (/ p1 p2 LastEnt LastObj LenKonstrArm LenKonstrArm9 LenKonstrArm3
		       	IdxDiam scaleDP Diam Name)
  (GetBlk_or_Load "konstr arm" "Констр арм")

  ( if (not DPavlov_CadComSrvKonstrArm)
    ( setq DPavlov_CadComSrvKonstrArm ( vlax-create-object "DPavlov_CadComSrv.KonstrArmClass" ) )
  )
  ( if (not DPavlov_CadComSrvKonstrArm)
    (exit)
  )

  ( vlax-invoke-method DPavlov_CadComSrvKonstrArm 'ShowDlg )
  (if( = ( vlax-get-property  DPavlov_CadComSrvKonstrArm 'IsOk ) 0 )
    (exit)
    ( setq Diam ( vlax-get-property  DPavlov_CadComSrvKonstrArm 'Diam )
	   Name ( vlax-get-property  DPavlov_CadComSrvKonstrArm 'Name )
    )
  )
  
  (setq IdxDiam(vl-position Diam (list 12 14 16 18 20 22 25 28 32 36)))
  (if (not IdxDiam)(setq IdxDiam 0))
  
  
  (setq scaleDP (GetScaleDP 1)
        p1 (getpoint "Первая точка: "))

  (if (not p1)
    (exit)
  )
  (setq p2 (getpoint p1 " Вторая: ")
	tmpos (getvar "osmode"))

  (ads_layer "Верх пролет" 4)
  (while (and p1 p2)
    (setvar "osmode" 0)
    (insertBlokDP p1 "konstr arm"  scaleDP (angle p1 p2))
    (setvar "osmode" tmpos)
    (setq LastEnt (entlast)
	  LenKonstrArm (distance p1 p2)
	  LenKonstrArm (if (< LenKonstrArm (* 18 scaleDP)) (* 18 scaleDP) LenKonstrArm)
	  LenKonstrArm9 (round05(* 2.0(/ LenKonstrArm 9.0)))
	  LenKonstrArm3 (round05(/ LenKonstrArm 3.0))
          LenKonstrArm3 (if (< LenKonstrArm3 (* 6.0 scaleDP)) (* 6.0 scaleDP) LenKonstrArm3)
    )

    ;справа
    (_kpblc-block-dyn-change-values LastEnt (list (cons "Расст м/у кол" LenKonstrArm )
						  (cons "сл 2*L/9" LenKonstrArm9 )
						  (cons "сп 2*L/9" LenKonstrArm9 )
						  (cons "сл L/3" LenKonstrArm3 )
						  (cons "сп L/3" LenKonstrArm3 )
						  (cons "диам арм" IdxDiam )
                                            ))
    (change_Attrib LastEnt (list ;(cons "ПОЗИЦИЯ" "К")
				 (cons "НОМЕР" Name)
				 ))
    (change_Layer LastEnt "Верх пролет")
    (command "_.updatefield" LastEnt "")
    (setq	p1 (getpoint "Первая точка: "))

    (if (not p1)
      (exit)
    )
    (setq p2 (getpoint p1 " Вторая: ")
  	  tmpos (getvar "osmode"))
  )
)
;------------------------------------------------------------------------------------------

dip вне форума  
 
Непрочитано 02.02.2014, 21:50
#55
Кулик Алексей aka kpblc
Moderator

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


Мест, где могут быть ошибки - полно.

getblk_or_load - раз
DPavlov_CadComSrv.KonstrArmClass может быть не зарегистрирован корректно - два (а также три, четыре и пять)
getscaledp - шесть
ads_layer - семь
insertblokdp - восемь
Наличие глобальных переменных - девять
_kpblc-block-dyn-change-values - десять (код мог быть изменен)
change_attrib, change_layer - одиннадцать и двенадцать
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > AutoCAD > Создание пользовательских кнопок в AutoCAD 2006

Размещение рекламы
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск