> 1 <

Автор Сообщение

namej fargos

Members


Статус

1 сообщений

Где: Russia
Род занятий:
Возраст:

#7261   2014-02-03 15:03 GMT+3 часа(ов)      
Пока что буду помогать один! Возможно ктото тоже изъявит желание!

Kurgan

Members


Статус

3 сообщений

Где: Russia
Род занятий:
Возраст:

#7313   2014-03-12 14:03 GMT+3 часа(ов)      
Добрый день. А что я могу предложить вам взамен на помощь в написании(а если быть искренним - в написании полностью )) ) программы сопоставления библиотек для автокада.
Суть в том, чтобы получать csv с количеством блоков из чертежа.

AK47

Members


Статус

2 сообщений

Где: Russia
Род занятий:
Возраст:

#7356   2014-04-27 22:07 GMT+3 часа(ов)      
Здравствуйте. Есть следующая задача В автокаде создан динамический блок с атрибутами, каждый атрибут может иметь оговоренное значение (имя) прописанное в программе (буква или цифра). Как сделать так, чтобы автокад с помощью лиспа присваивал блоку с одинаковыми значениями свой индивидуальный номер учитывая комбинацию букв или цифр. Пример: блок:- имя-А1, имя первого атрибута:- ФУ, имя второго атрибута:- УФ программа присваивает этому блоку номер 1, если блок:- имя-А1, имя первого атрибута:- Уф, имя второго атрибута:- ФУ программа присваивает этому блоку номер 2. Имя атрибутов УФ или ФУ пользователь проставляет (указывает) сам,ручками. Буду благодарен за любую помощь или консультацию. Спасибо

AK47

Members


Статус

2 сообщений

Где: Russia
Род занятий:
Возраст:

#7357   2014-04-27 22:22 GMT+3 часа(ов)      
Суть в том, чтобы получать csv с количеством блоков из чертежа а команда "_eattext" не подойдет?

drberd

Members


Статус

1 сообщений

Где: Kazakhstan
Род занятий: drberd
Возраст:

#7382   2014-05-29 16:32 GMT+3 часа(ов)      
Доброго времени суток, форумчане!

В программировании я уже не силен (только в школьные годы неплохо занимался паскалем), а задачи приходится решать производственные, строительные. Все знают про проблему автонумерации текста в AutoCAD. Частично я для себя ее решил, нашел отличный скрипт (привожу ниже в спойлере):


;;-----------------=={ AutoLabel Attributes }==---------------;;
;; ;;
;; Automatically labels a specific attribute in a set of ;;
;; blocks, renumbering if blocks are added, copied or ;;
;; erased. ;;
;;------------------------------------------------------------;;
;; Author: Lee Mac, Copyright © 2011 - www.lee-mac.com ;;
;;------------------------------------------------------------;;
;; Version 1.0 - 14-09-2011 ;;
;;------------------------------------------------------------;;

;;------------------------------------------------------------;;
;; Settings ;;
;;------------------------------------------------------------;;

;; [Note: Block names and Attribute Tags are *not* case-sensitive]

(setq *blockname* "ПП-" ;; Name of Block to be Updated
*blocktag* "num_pp" ;; Attribute Tag to be Updated
)

;;------------------------------------------------------------;;
;; Main Program ;;
;;------------------------------------------------------------;;

(defun ObjectReactorCallback:RenumberBlocks ( object reactor params )
(setq *reactor* reactor)
(vlr-command-reactor "temp" '((:vlr-commandended . CommandReactorCallback:RenumberBlocks)))
(vlr-remove reactor)
(princ)
)

;;------------------------------------------------------------;;

(defun CommandReactorCallback:RenumberBlocks ( reactor params / e f i l n s )
(if reactor (vlr-remove reactor))
(if
(and
(not *undoflag*)
(setq s (ssget "_X" *filter*))
)
(progn
(setq n 0)
(repeat (setq i (sslength s))
(if (eq *blockname*
(AutoLabel:EffectiveName
(setq o (vlax-ename->vla-object (setq e (ssname s (setq i (1- i))))))
)
)
(progn
(setq e (entnext e)
l (entget e)
f nil
)
(while (and (not f) (eq "ATTRIB" (cdr (assoc 0 l))))
(if (eq *blocktag* (strcase (cdr (assoc 2 l))))
(setq f (entmod (subst (cons 1 (itoa (setq n (1+ n)))) (assoc 1 l) l)))
)
(setq e (entnext e)
l (entget e)
)
)
(if (and *reactor* (not (member o (vlr-owners *reactor*))))
(vlr-owner-add *reactor* o)
)
)
)
)
)
)
(if *reactor*
(progn (vlr-add *reactor*) (setq *reactor* nil))
)
(princ)
)

;;------------------------------------------------------------;;

(defun CommandReactorCallback:UndoCheck ( reactor params )
(setq *undoflag* (wcmatch (strcase (car params)) "*U,*UNDO"))
(princ)
)

;;------------------------------------------------------------;;

(defun CommandReactorCallback:BlockInserted ( reactor params / e l )
(if
(and
(not *undoflag*)
(wcmatch (strcase (car params)) "*I,*INSERT,*EXECUTETOOL")
(setq e (entlast))
(setq l (entget e))
(eq "INSERT" (cdr (assoc 0 l)))
(= 1 (cdr (assoc 66 l)))
(eq *blockname* (AutoLabel:EffectiveName (vlax-ename->vla-object e)))
)
(AutoLabel:GetNewNumber e)
)
(princ)
)

;;------------------------------------------------------------;;

(defun AutoLabel:GetNewNumber ( ent / e f i l n r s )
(if (setq s (ssget "_X" *filter*))
(progn
(setq n 0)
(repeat (setq i (sslength s))
(if (eq *blockname*
(AutoLabel:Effectivename
(vlax-ename->vla-object (ssname s (setq i (1- i))))
)
)
(setq n (1+ n))
)
)
(setq e (entnext ent)
l (entget e)
)
(while (and (not f) (eq "ATTRIB" (cdr (assoc 0 l))))
(if (eq *blocktag* (strcase (cdr (assoc 2 l))))
(setq f (entmod (subst (cons 1 (itoa n)) (assoc 1 l) l)))
)
(setq e (entnext e)
l (entget e)
)
)
(if
(setq r
(vl-some
(function
(lambda ( r ) (if (eq *reacdata* (vlr-data r)) r))
)
(cdar (vlr-reactors :vlr-object-reactor))
)
)
(vlr-owner-add r (vlax-ename->vla-object ent))
)
)
)
(princ)
)

;;------------------------------------------------------------;;

(defun AutoLabel:EffectiveName ( obj )
(strcase
(if (vlax-property-available-p obj 'effectivename)
(vla-get-effectivename obj)
(vla-get-name obj)
)
)
)

;;------------------------------------------------------------;;
;; Loading Expressions ;;
;;------------------------------------------------------------;;

(vl-load-com)

(
(lambda ( / i s l o )
(setq
*blocktag* (strcase *blocktag*)
*blockname* (strcase *blockname*)
*reacdata* "AutoBlockLabel"
*reactor* nil
*undoflag* nil
)
(foreach r1 (vlr-reactors)
(foreach r2 (cdr r1)
(if (eq *reacdata* (vlr-data r2)) (vlr-remove r2))
)
)
(if
(setq s
(ssget "_X"
(setq *filter*
(list
'(0 . "INSERT")
'(66 . 1)
(cons 2 (strcat "`*U*," *blockname*))
(cons 410 (getvar 'CTAB))
)
)
)
)
(progn
(repeat (setq i (sslength s))
(if (eq *blockname*
(AutoLabel:EffectiveName
(setq o (vlax-ename->vla-object (ssname s (setq i (1- i)))))
)
)
(setq l (cons o l))
)
)
(CommandReactorCallback:RenumberBlocks nil nil)
(vlr-object-reactor l *reacdata*
(list
(cons :vlr-erased 'ObjectReactorCallback:RenumberBlocks)
(cons :vlr-copied 'ObjectReactorCallback:RenumberBlocks)
(cons :vlr-unerased 'ObjectReactorCallback:RenumberBlocks)
)
)
(vlr-command-reactor *reacdata*
(list
(cons :vlr-commandwillstart 'CommandReactorCallback:UndoCheck)
(cons :vlr-commandended 'CommandReactorCallback:BlockInserted)
)
)
)
)
)
)

(princ)

;;------------------------------------------------------------;;
;; End of File ;;
;;------------------------------------------------------------;;


Таким образом, имеем отличный автонумератор на лиспе, который в случае удаления какого-то одного блока автоматически перенумерует все последующие. В названии блока "ПП-" имеется в виду плита плоская. Num_pp - есть имя блоктега, меняющегося - это и есть последовательная нумерация плит.

Теперь, собственно, вопрос - можно ли этот скрипт довести до ума, и научить его автонумеровать не только блок "ПП-" с его меняющимся хвостом "num_pp", но и несколько блоков другого типа ("ПР-" - плита ребристая, "МУ-" - монолитный участок, ну и т.д.) впридачу? При этом чтобы он продолжал контролировать нумерацию, но уже сразу нескольких типов блоков? Пробовал менять в нем переменные (для начала решил создать два одинаковых лиспа с разной маркировкой плит - в итоге каждый лисп может работать только поочередно, одновременная работа не выходит), не вышло - заменив все переменные на *2, где звездочка - это исходная переменная (почему решил переименовать - справедливо думал, что должны отсутствовать повторяющиеся имена переменных).

Если топикстартера сие заинтересовало - буду рад принять участие в написании скрипта, если смогу что-то дельное предложить. Думается мне, что такой скрипт может быть очень полезным для электриков, пожарных при разработке ПСД на системы, да и нашему брату-строителю, ибо маркировка элементов на схемах - дело долгое.

DID

Members


Статус

2 сообщений

Где: Russia
Род занятий:
Возраст:

#7610   2015-04-21 00:02 GMT+3 часа(ов)      
Доброго всем времени суток. Я решил попробывать освоить азы lispа. прописал команды с помощью которых нарисовал 2 цилиндра, один внутри другого. задал команду вычесть один из другого, но он запрашивает из чего и что вычесть. А можно ли как то прописать, что бы он без запросов это делал? Заранее благодарю. Если что пишите на denbass2004@mail.ru

2face

Members


Статус

4 сообщений

Где: Russia
Род занятий:
Возраст:

#7638   2015-05-28 05:42 GMT+3 часа(ов)      
Здравствуйте!
Очень нужна помощь в написании программки для автокада на языке лисп. Если кто может чем-то помочь, напишите в этой теме или в личку. Я введу в курс дела.

Mercilaud

Members


Статус

1 сообщений
http://www.magiclab.biz
Где: Russia
Род занятий:
Возраст:

#7755   2016-10-21 17:57 GMT+3 часа(ов)      
Здравствуйте. В Express menu есть команда tcircle, которая строит вокруг текста круг, слот или прямоугольник.
(Насколько я понял, эта команда связана с лиспом acettxt.lsp) Можно ли добавить опции в эту команду, добавив возможность вставки скруглённого прямоугольника с заданием радиуса скругления и заданием offset раздельно по x и y?
Спасибо.

skelets

Members


Статус

1 сообщений

Где: Latvia
Род занятий:
Возраст:

#7768   2017-02-04 23:10 GMT+3 часа(ов)      
Добрый день.

Можно ли сделать программу Lisp для автокада, точнее у меня ZWCAD но lisp работает.

Задача.
Есть кривая полилиния через все здание. На полилинии (шлейф) расставлены блоки с атрибутами разные (например пожарный детектор, ручная кнопка модуль итд) с номерами 1.2 1.3 или 1.5 1.20 1.6

Необходимо создать прямую линию, с такой же последовательностью блоков, которая имеется на полилинии, через равные промежутки, блоки и тексты выравнены (структура).

Перед начало черчения структуры необходимо выбрать полилинию с которой хочешь собрать информацию.

Что то похожее есть в программе anshl 2.2.3.fas Вставка и автоматическая нумерация блоков v.2.2.3

Команда для построения блоков с полилинии в ряд: blin
Динамическая отрисовка блоков с полилинии: schemdiag

Но к сожалению это на ZWcad 2015 не работает, а в ZWcad 2017 просто уже не поддерживается расширение fas.

Если возможно такое сделать, то какое может быть вознаграждение.

мои маил igorcheg@inbox.lv
> 1 <


Онлайн :

0 пользователь(ей), 28 гость(ей) :




Реклама на сайте: