|
Страници по тази тема: 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | (покажи всички)
|
Да попитам и Аз !
Това върши ли подобна работа ?
-----------------------------------------------------------
Увеличаване на DIMSCALE + UPDATE на Dimension :
$M=$(if,$(>=,$(getvar,dimscale),1),^^_dimscale $(+,$(getvar,dimscale),1),^^_dimscale $(*,$(getvar,dimscale),2));_-dimstyle a all;;
Намаляване на DIMSCALE + UPDATE на Dimension :
$M=$(if,$(>=,$(getvar,dimscale),1),^^_dimscale $(-,$(getvar,dimscale),1),^^_dimscale $(/,$(getvar,dimscale),2));_-dimstyle a all;;
Но има проблем като стигне до 0-та ...
-----------------------------------------------------------
Текста се слага директно като макрос на бутона ...
| |
Тема
|
Re: за сравнение
[re: StSt]
|
|
Автор | пporpaмиcт (Нерегистриран) |
Публикувано | 05.06.06 14:43 |
|
Ето я същата функция написана по твоя начин:
Public Sub ChangeDimmensions()
Dim dScale As Double
dScale = ThisDrawing.GetVariable("DIMSCALE")
If direction Then
If dScale < 1 Then
dScale = dScale * 2
Else
dScale = dScale + 1
End If
Else
If dScale > 2 Then
dScale = dScale - 1
Else
dScale = dScale / 2
End If
End If
ThisDrawing.SetVariable "DIMSCALE", dScale
ThisDrawing.SendCommand "-dimstyle" & vbCr & "a" & vbCr & "all" & vbCr & vbCr
End Sub
Ako се използва функцията IIf както е направил колегата по-горе ще стане още по-кратка.
| |
Тема
|
Вместо заключение
[re: StSt]
|
|
Автор | StSt (Нерегистриран) |
Публикувано | 07.06.06 09:48 |
|
Повдигнах темата защото смятам, че е важна.
В написаните мнения почти всички бяха разочаровани от ниското ниво на ползващите чертожни програми (не само на ACAD). И аз мисля така. Стигнал съм до мнение, че има два подхода при ползване на чертожни програми - на "чертожника" и "проектанта" (слагам ги в кавички защото много проектанти работят с програмите като чертожници). При подхода на "чертожника" всичко се смята предварително, разчертава се с моливче и след това се изчертава "на чисто" на компютъра. Такива хора работят с линии, окръжности, дъги и т.н. и ползват генериращите команди (такива като LINE, CIRCLE ....).
"Проектанта" констуира чертежа си в процеса на ползване на програмите, като следва взаимовръзките между реалните физически обекти, ползвайки редактиращите команди на програмите (CHAMFER, FILLET, OFFSET, DIVIDE, MEASURE .....). Обектите с които работят са отражение на реални физически обекти (линията за него е стена, кабел ....). Необходимите размери и параметри се получават в процеса на конструиране на чертежа.
Е, как да автоматизираш работат на "чертожника" - най-много да му организираш малко слоевете и линиите, за да ползва някои по-мощни команди (QSELECT например). Специализирани програми не му трябват.
Беше повдигнат и въпроса за заплащането - такова няма. Смятам, че ще се появи тагявя, когато се появи търсенето. И тайната ми мисъл при пускането на тази тема беше да покажем, че може много по-интелигентно и ефективно да се работи, ползвайки специализирани програми, направени според собствените разбирания и начин на работа. От опит знам, че който пробва веднъж, след това иска още и още. Апетитът идва с яденето.
Друг повод за тази тема беше обмен на идеи и решения - появиха се и такива мнения. Дадени бяха решения на LISP, VBA, DIESEL ..... Така се повишава нивото на програмистите и това е много хубаво.
И накрая - според силите си ще помагам на всеки, който постави проблем в клуба.
| |
Тема
|
Re: Вместо заключение
[re: StSt]
|
|
Автор | (Mинaвaщ) (Нерегистриран) |
Публикувано | 07.06.06 12:32 |
|
В отговор на:
И накрая - според силите си ще помагам на всеки, който постави проблем в клуба.
БЛАГОДАРЯ предварително !
Аз ще продължавам когато ми хрумне да правя "разкази в картинки" за интересни според мен неща !
Мислех , че е време да премина и към Flash анимация , но не съм сигурен как ще се преборя с блокирането на ActiveX контролите от IE и засега ще са само картинки в HTML .
| |
Тема
|
Re: Вместо заключение
[re: StSt]
|
|
Автор | kolumb (Нерегистриран) |
Публикувано | 30.06.06 18:50 |
|
Как така заключение, никаква почивка по въпроса
Имам питане:
Искам с един бутон да се включват и изключват групи слоеве. Засега съм го решил с бутончета в tool pallete, като всяко бутонче изпълнява скрипт от вида:
-layer ON слой1, слой2интервалинтервал
-layer OFF слой1, слой2интервалинтервал
Обаче така са ми нужни два бутона - един за включване и един за изключване.
Има ли начин това да се напише като LISP програмка, която да създава променлива sloeve1 и когато тя е 1(т.е.преди това слоя е бил включен) за го изключи и съответно когато променливата е 0 (т.е. слоевете преди това са били изключени) да ги включи. По този начин всичко ще става с един единствен бутон.
Следващото ми питане е как се закача LISP програма за бутон.
Благодаря предварително.
| |
Тема
|
Re:... потребителски интерфейс
[re: kolumb]
|
|
Автор | Mинaвaщ (Нерегистриран) |
Публикувано | 01.07.06 17:38 |
|
В отговор на:
Следващото ми питане е как се закача LISP програма за бутон.
Eто това е според Мен въпрос в много правилна посока !
Колкото и да се заиграва човек и да събира помощни програмки за АutoCAD , aко неможе да се подредят в лесно достъпна форма са практически трудно използваеми !
Мислех си да пиша Урок по проблема , но се усетих че 50% я знам я незнам и се самовъзпрях . В общи линии нещата гравитират около Меню , Бутон , Тулпалет и ...
Изписването на командата на лиспа е потенциално Macro-то на бутона ... по-горе имаше описано и по-умно (елегантно) изписване ...
Спирам да пиша , че май са глупости ...
| |
Тема
|
Re: Вместо заключение
[re: kolumb]
|
|
Автор | Pin (Нерегистриран) |
Публикувано | 01.07.06 22:04 |
|
Как се закача лисп програма към бутон - Имаш поне два варианта:
Вариант 1:
Десен клик върху който и да е видим тоолбар и избираш Customize, след което имаш възможности да си направиш нов тоолбар и да вкараш в него нов бутон или да вмъкнеш нов бутон във вече съществуващ тоолбар. В свойствата на бутона трябва да има един теьт бокс, където пище " Macro associated with the button.." или нещо подобно и там вмъкваш примерно:
^C^C(func_in_lisp par1 par2)
Вариант 2:
Пишеш един меню фаил, където описваш тоолбара и бутона(ите) и после го зареждаш този менюфаил с командата menuload. Ако не се вижда ще трябва да избереш view/toolbars и да го го отметнеш за да се покаже
Ето ти извадки от един примерен менюфаил, където се вика директно функция написана на лисп:
***MENUGROUP=PIPE
***TOOLBARS
**GEOHATCH
TID_TbGeoH [_Toolbar("GeoHatch", _Floating, _Hide, 85, 378, 1)]
TID__GHEarth [_Button("Earth", "h_eart_16.bmp", "h_eart_32.bmp")]^C^C(ghatch "earth" 20.0)
За слоевете си на прав път
Приблизително текста ще бъде такъв (нямам Аутокад и ако намеря някъде под ръка през следващите дни ще я проверя)
(setq aa (if aa
(command "layer" "off" "1,2" "")
(progn
(command "layer" "on" "1,2" "")
t
)
)
)
с "аа" съм кръстил променливата (когато е Т, слоеве "1" и "2" са включени, когато е nil са изключени)
Абе дира нещо ми изяжда подредбата на кода, но се надявам все пак и така да е достатъчно ясен
| |
Тема
|
Re: Вместо заключение
[re: Pin]
|
|
Автор | StSt (Нерегистриран) |
Публикувано | 03.07.06 11:47 |
|
Искам само да добавя, че вместо променлива може да се ползва състоянието на слоя (включен или изключен). Това става така
(if (>=(cdr(ASSOC 62(tblsearch "layer""1")))0)
(command "layer" "off" "1,2" "")
(command "layer" "on" "1,2" ""))
Групата с ключ 62 е за цвят на слоя. Ако стойността е отрицателена, значи че слоя е изключен и обратно
| |
Тема
|
Re: Вместо заключение
[re: StSt]
|
|
Автор | kolumb (Нерегистриран) |
Публикувано | 03.07.06 16:20 |
|
ОК, до тук добре, сега как ще изглежда като цяла програма, защото само това if-че не работи.
| |
Тема
|
Re: Вместо заключение
[re: kolumb]
|
|
Автор | kolumb (Нерегистриран) |
Публикувано | 03.07.06 16:35 |
|
Освен това е необходимо да се прави проверка дали слоя, който се изключва е текущ, защото тогава трябва да се добави още едно "y" накрая тъй като AutoCAD пита да ли сме сигурни, че искаме да изключим текущия слой.
за исключване на текущия слой:
-layer OFF layer1,layer2 y[][]
за всички останали:
-layer OFF layer1,layer2 [][]
Това е във формат за скрип , [] e знак за интервал.
| |
|
Страници по тази тема: 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | (покажи всички)
|
|
|