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

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Нужен лисп (пронизыватель лайаутов)

Нужен лисп (пронизыватель лайаутов)

Ответ
Поиск в этой теме
Непрочитано 17.07.2007, 17:26 #1
Нужен лисп (пронизыватель лайаутов)
dextron3
 
проектировшик
 
СССР
Регистрация: 01.01.2007
Сообщений: 5,149

Описание:

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

т.е. открыл любой лайаут выделил область нажал ДЕЛ,
лисп удаляет эту область со всех лайаутов

или открыл любой лайаут вставил текст и текст автоматически вставился на всех лайаутах сколько бы их небыло в файле

Пример:

Выделите область для удаления <>
Нажмите Delete чтобы удалить данную область со всех лайаутов



Пример2:

Выделите объект<>
Нажмите Enter чтобы объект скопировался сквозь все лайауты



Для чего нужно:

Представьте что у вас 40 лайаутов и в каждом разбитый штамп,
а вам надо поменять фамилию, или название объекта



лисп сделает это за считанные доли секунды пример внизу

[ATTACH]1184678574.JPG[/ATTACH]

:roll: :roll: :roll: :roll: :roll:


Про блокирование надписей советы не принимаются :twisted:

:idea:

Если есть идея и алгоритм на 50% с задачей уже справились
__________________
инженер проектировшик с опттом программа авто гад образование высшие
Просмотров: 25749
 
Непрочитано 17.07.2007, 17:36
#2
Дима_

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


А как насчет полей и подшивок?
__________________
Когда в руках молоток все вокруг кажется гвоздями.
Дима_ вне форума  
 
Непрочитано 17.07.2007, 18:37
#3
Profan


 
Регистрация: 25.12.2005
Москва
Сообщений: 13,627


Цитата:
Данный лисп позволяет
Данный, гм-м. А где он?
Profan вне форума  
 
Автор темы   Непрочитано 17.07.2007, 18:43
#4
dextron3

проектировшик
 
Регистрация: 01.01.2007
СССР
Сообщений: 5,149


Цитата:
Сообщение от Profan
Цитата:
Данный лисп позволяет
Данный, гм-м. А где он?
сами в нетерпении ждемс
__________________
инженер проектировшик с опттом программа авто гад образование высшие
dextron3 вне форума  
 
Непрочитано 17.07.2007, 19:18
#5
Кулик Алексей aka kpblc
Moderator

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


Цитата:
Сообщение от dextron3
сами в нетерпении ждемс
Мы, Божией милостью...
Шансов дождаться минимум.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 17.07.2007, 20:11
#6
Олег К.

Инженер-теплотехник
 
Регистрация: 17.08.2006
Смоленск
Сообщений: 308


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

А идея хорошая, если кто не напишет раньше, может возьмусь.
Олег К. вне форума  
 
Автор темы   Непрочитано 17.07.2007, 21:28
#7
dextron3

проектировшик
 
Регистрация: 01.01.2007
СССР
Сообщений: 5,149


А это с помощью лиспа возмодно осуществить или к разработчикам автокада писать надо?
__________________
инженер проектировшик с опттом программа авто гад образование высшие
dextron3 вне форума  
 
Непрочитано 17.07.2007, 21:57
#8
Alaspher


 
Регистрация: 11.10.2004
e•burg
Сообщений: 755


Жуть-то кака! Этож будет глючить совершенно непереставая! Не проще переопределять блок? Либо менять в нём текст, либо сделать постоянные атрибуты - они сразу меняются во всех вставках, при переопределении.
Alaspher вне форума  
 
Непрочитано 17.07.2007, 22:01
#9
Sleekka

-
 
Регистрация: 24.07.2005
Москва
Сообщений: 1,335


Цитата:
приметивы
Может ты не знаешь, но они ПРИМИТИВЫ
и это во всех темах
ЗЫ: может начать использовать собственные мозговые возможности, ты не думал что такая задача встает у всех разработчиков РД и не все ее решают с помощью лиспа,
ИМХО лучше использовать то что ты знаешь и умеешь
Sleekka вне форума  
 
Непрочитано 17.07.2007, 22:14
#10
Pilot

Проектировщик свиноводство
 
Регистрация: 21.08.2003
Сообщений: 2,291


Цитата:
Сообщение от Sleekka
Цитата:
приметивы
Может ты не знаешь, но они ПРИМИТИВЫ
и это во всех темах
Да его уже тыкали носом - безрезультатно.
Pilot вне форума  
 
Автор темы   Непрочитано 17.07.2007, 22:15
#11
dextron3

проектировшик
 
Регистрация: 01.01.2007
СССР
Сообщений: 5,149


Приметивы от слова метка, заметить, приметить (авторский контекст)
__________________
инженер проектировшик с опттом программа авто гад образование высшие
dextron3 вне форума  
 
Непрочитано 17.07.2007, 22:24
#12
Profan


 
Регистрация: 25.12.2005
Москва
Сообщений: 13,627


Ну, знаешь...
Цитата:
Приметивы от слова метка
Этак я буду писать "примАтивы", ссылаясь на слово "матка".
Однако, IMHO, в AutoCAD'е примитивов нет. Есть объекты, обладающие свойствами. А примитив - это нечто, не имеющее свойств.
Profan вне форума  
 
Непрочитано 17.07.2007, 22:29
#13
Pilot

Проектировщик свиноводство
 
Регистрация: 21.08.2003
Сообщений: 2,291


Цитата:
Сообщение от www.multitran.ru
entity - графический примИтив
http://www.multitran.ru/c/m.exe?t=1036471_1_2
Pilot вне форума  
 
Непрочитано 17.07.2007, 22:38
#14
Alaspher


 
Регистрация: 11.10.2004
e•burg
Сообщений: 755


Цитата:
Сообщение от Profan
Однако, IMHO, в AutoCAD'е примитивов нет. Есть объекты, обладающие свойствами. А примитив - это нечто, не имеющее свойств.
Это просто сложности перевода - на русский язык достаточно сложно корректно перевести современный технический текст, ввиду отсутствия собственной терминологии - вся терминология у нас заимствованая. А некоторые слова из этой терминологии уже используются в языке не как технические термины, а на бытовом уровне, где приобретают эмоциональную окраску. Примитив - один из примеров. В английском языке entity - всего лишь логически целостный элемент. Наличие у него свойств совсем не противоречит его сущности, а скорее даже наоборот - предполагается. Никакого уничижительного смысла в этом техническом термине нет. То, что не нашлось другого термина при переводе... ну так вышло, собственно, далеко не худший вариант.
Alaspher вне форума  
 
Непрочитано 17.07.2007, 22:51
#15
Profan


 
Регистрация: 25.12.2005
Москва
Сообщений: 13,627


Это в ПЛ-ГРАФ был графический примитив - светящийся вектор на экране. А в AutoCAD'е даже точка (point) далеко не примитив. Перевод слова entity как "примитив" применительно к AutoCAD'у не годится, уж лучше оперировать понятием "элемент". Да ведь ортодоксов не перешибешь. И дело здесь не в уничижительности, а в нелепости. Если точку или отрезок еще можно назвать, скрепя сердце, примитивом, то блок или текст уж никак примитивом не назовешь. Объект - самое подходящее слово, независимо от того, как это пишется на английском языке.
....................................
Опять кому-нибудь покажется, что я зануда. :twisted:
Profan вне форума  
 
Непрочитано 17.07.2007, 23:13
#16
Кулик Алексей aka kpblc
Moderator

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


> dextron3 : Из всего вышесказанного: блок не разбивать, учить матчасть и показывать предпринятые действия.
> Alaspher, Profan : Хорошо, у меня вопрос (поскольку на заголовок лично я отвечать не собираюсь): в ADT есть такая "штукенция", как AEC_WALL (к примеру). Подвергается массе операций, изменений, дополнений и т.п., но не в этом суть. После применения к ней однократного _explode она превращается в анонимный блок. Еще раз - набор 3DFACE. Еще раз - набор отрезков и дуг. А тем не менее с ней можно работать именно как с обычным entity - менять слой, цвет, начальную и конечную точки, применять vlax-curve-* функции и т.п.
Вопрос: как ее обозвать, чтоб и понравилось всем, и логически она не сильно отличалась от того же LINE? Примитив? Объект? Сущность?
Или более близкое - любой размер. Применив к нему 2 раза _.explode, тоже получим набор уже неразбиваемых entity. Размер кем обзывать будем?
> Profan : Я тоже зануда
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 18.07.2007, 02:39
#17
Dym


 
Регистрация: 27.09.2005
Двинскъ
Сообщений: 586
Отправить сообщение для Dym с помощью Skype™


2 dextron3> я для этого спокойно пользую find-replace, это касаеться не только имён и дат в штампах. и пожалуй быстрее способа для таких целей я не знаю, не знаю.
Dym вне форума  
 
Непрочитано 18.07.2007, 03:59
#18
Vova

Engineer
 
Регистрация: 05.09.2003
New-York
Сообщений: 10,288


Меня удивляет такое большое количество лейаутов на основе одной модели. Чертежи ведь наверняка разные, на каждый из них приходится собственный кусок модели. Разделить эту модель-монстр на несколько файлов никакой сложности нет. А удобств прибавится. Лейауты хороши, когда они создаются из одной неделимой модели, например, дорога, трасса какая-нибудь, большое здание...
Vova вне форума  
 
Непрочитано 18.07.2007, 05:31
#19
Profan


 
Регистрация: 25.12.2005
Москва
Сообщений: 13,627


Для Кулик Алексей aka kpblc.
Вот эта возможность последовательного расчленения объектов ADT меня всегда смущала и сейчас смущает. Конечно, по сравнению с объектом более высокого порядка (типа "Wall" - "Стена") объекты типа "Line" ("Отрезок") и "Arc" ("Дуга") можно считать примитивами. Однако я почему-то не могу смириться с таким положением вещей и странным образом не могу считать стену в ADT самостоятельным объектом со своими физическими свойствами. Я уже писал когда-то, что стену в ArchiCAD'е я воспринимаю именно как физический объект, а стену в ADT - как объект геометрический, слепленный с помощью разных ухищрений из отрезков и дуг. Из-за этого я и ADT не могу воспринимать серьезно, заскок какой-то в мозгах... Именно поэтому я всегда твердил, что ADT - не отдельный самостоятельный продукт, это всего навсего AutoCAD. Версия AA2008 как раз подтвердила это мое представление.
Profan вне форума  
 
Непрочитано 18.07.2007, 08:19
#20
Кулик Алексей aka kpblc
Moderator

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


Ух, пофлудю!
> Vova : лично я удивляюсь уже другому (но это тема отдельного разговора, хотя и связана с автором топика) dextron3, похоже, преемник Glorius'a
> Profan : Ну не знаю, я AA2008 не видел. И вряд ли увижу
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 18.07.2007, 09:14
#21
shnn

Инженер
 
Регистрация: 18.02.2005
Самара
Сообщений: 747


Бегло просмотрев тему не увидел такого совета: вставить штамп внешней ссылкой. По поводу добавления/удаления объектов я пас.
shnn вне форума  
 
Непрочитано 18.07.2007, 10:49
#22
Alaspher


 
Регистрация: 11.10.2004
e•burg
Сообщений: 755


> Profan, kpblc
Вы опять ориентируетесь на бытовой перевод терминов. Примитив [primitive], в техническом контексте означает лишь - единицу представления, т.е. нечто, чем можно оперировать, как одним целым. Это совсем не запрещает примитиву быть составным (из других примитивов) - это просто иной уровень представления. В этом смысле, перевод entity, как элемент менее корректен, поскольку элемент [element] подразумевает неделимость, т.е. это нижний уровень примитивов. Перевод, как "объект" - вполне корректен, но менее локализован. Объект [object] - это куда более общее понятие, чем примитив, синоним - "нечто". Если построить шкалу обобщённости понятий, то получится: элемент -> примитив -> объект, т.е. - любой элемент является примитивом, но не наоборот и также любой примитив, это объект, но обратное не обязательно.

Назвать так, что бы понравилось всем, видимо не удастся - так просто не бывает. Нынешний перевод полностью корректен и точен. Другой перевод возможен, но зачем? Ничего кроме дополнительной путаницы это не принесёт.

Видимо, я ортодокс.
Alaspher вне форума  
 
Непрочитано 18.07.2007, 11:00
#23
Profan


 
Регистрация: 25.12.2005
Москва
Сообщений: 13,627


Ага... 8)
Profan вне форума  
 
Автор темы   Непрочитано 18.07.2007, 11:02
#24
dextron3

проектировшик
 
Регистрация: 01.01.2007
СССР
Сообщений: 5,149


Цитата:
Сообщение от mitjaj
2 dextron3> я для этого спокойно пользую find-replace, это касаеться не только имён и дат в штампах. и пожалуй быстрее способа для таких целей я не знаю, не знаю.

в лайаутах данная команда не работает, в модели работает
__________________
инженер проектировшик с опттом программа авто гад образование высшие
dextron3 вне форума  
 
Автор темы   Непрочитано 18.07.2007, 11:05
#25
dextron3

проектировшик
 
Регистрация: 01.01.2007
СССР
Сообщений: 5,149


Цитата:
Сообщение от shnn
Бегло просмотрев тему не увидел такого совета: вставить штамп внешней ссылкой. По поводу добавления/удаления объектов я пас.
чертеж должен быть без сылок замкнутый для того чтобы потом ничего из него не потерялась при отправке или передаче, как обычно растры теряются
__________________
инженер проектировшик с опттом программа авто гад образование высшие
dextron3 вне форума  
 
Автор темы   Непрочитано 18.07.2007, 11:10
#26
dextron3

проектировшик
 
Регистрация: 01.01.2007
СССР
Сообщений: 5,149


Цитата:
Сообщение от Vova
Меня удивляет такое большое количество лейаутов на основе одной модели. Чертежи ведь наверняка разные, на каждый из них приходится собственный кусок модели. Разделить эту модель-монстр на несколько файлов никакой сложности нет. А удобств прибавится. Лейауты хороши, когда они создаются из одной неделимой модели, например, дорога, трасса какая-нибудь, большое здание...
Вова это специфика конструкторской деятельности, представь себе есть коттедж вот какие к нему должны быть чертежи на основе трех планов (подвал, 1,2 крыша)


1
Общие данные
2.
Схема расположения фундаментной плиты
3.
Схема армирования фундаментной плиты
4.
Спецификация фундаментной плиты на отм. -3.600
5.
Схема расположения колонн
6.
Колонны Км1, Км2, Км3
7.
Спецификация колонн
8.
Схема расположения стен подвала
9.
Спецификация стен подвала
10.
Схема опалубки плиты перекрытия и балок на отм. -0.100
11.
Спецификация балок на отм. -0.100
12.
Схема нижнего армирования плиты перекрытия на отм. -0.100
13.
Схема верхнего армирования плиты перекрытия на отм. -0.100 Спецификация арматуры плиты на отм. -0.100
14.
Схема расположения балок на отм. 3.200 Балка Бм1, Бм2
15.
Балка Бм3-Бм6
16.
Спецификация балок на отм. 3.200
17
Схема опалубки плиты перекрытия на отм. 3.200
18
Схема нижнего армирования плиты перекрытия на отм. 3.200
19
Схема верхнего армирования плиты перекрытия на отм. 3.200
Спецификация арматуры плиты на отм. 3.200
20
Схема расположения балок на отм. 6.500 Балка Бм1, Бм2
21
Балка Бм3-Бм5
22
23
Спецификация балок на отм. 6.500
Схема опалубки плиты перекрытия на отм. 6.500
24
25
Схема нижнего армирования плиты перекрытия на отм. 6.500
Схема верхнего армирования плиты перекрытия на отм. 6.500
26
Спецификация арматуры плиты на отм. 6.500
27
Схема расположения кирпичной кладки на отм. -0.100
28
29
Схема расположения кирпичной кладки на отм. -0.100 Спецификация кирпичной кладки
30
Схема расположения кирпичной кладки на отм.6.500
31
Спецификация арматуры кладки и сейсмопояса на отм.6.500
32
Схема расположения мауэрлатов лежней и балок
33
Схема расположения стропильных ног
34
Сечения 1-1, 2-2. Узел А
35
Спецификация деревянных элементов
__________________
инженер проектировшик с опттом программа авто гад образование высшие
dextron3 вне форума  
 
Непрочитано 18.07.2007, 11:32
#27
Кулик Алексей aka kpblc
Moderator

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


> Alaspher : Я тоже, честно говоря, предпочитаю определение "примитив" Следовательно, я не просто зануда, а ортодоксальный зануда
> dextron3 : Уй, мать моя женщина...
#25: Команда _etransmit отвергается сразу. Понятно...
#26: Используй ADT.
И еще раз посмотри на пост #16. только внимательно!
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 18.07.2007, 11:52
#28
Олег К.

Инженер-теплотехник
 
Регистрация: 17.08.2006
Смоленск
Сообщений: 308


Уважаемые знатоки ЛИСПа, не отвлекетесь ли Вы на минутку от обсуждения сущности entity и не ответите ли на пару вопросов по основной теме?

1. Допустим есть файл с двумя листами формата А2 и А3х3 (каждый в своем лайоте, но точные их координаты неизвестны). Штампы по форме 3 из 21.101-97, в них нужно изменить текст во второй графе (название объекта).
Форматки у меня сделаны блоками с соотв именами, поэтому расположение графы на листе вычисляю по точке вставки и имени блока. Второй вариант - блок форматки с аттрибутами - оно конечно проще всего. Find&Replace конечно работает, но текст на листах может быть разным.
Вопрос: есть еще какие способы такое сделать? Естественно в автоматическом режиме.

2. Не в тему, но давно интересует вопрос - можно ли заблокировать один из объектов в чертеже от изменения координат? Прикол с текстом, дефпоинтом и нулевым слоем знаю, вот только текст не печатается . Блокирование всего слоя не подходит, нужно применить именно к объекту (текст, линия, блок).

PS: мне кажется название "объект Автокада" вполне корректное.
Олег К. вне форума  
 
Непрочитано 18.07.2007, 12:12
#29
Дима_

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


Да переделайте вы один раз форматки на поля, и все вопросы отпадут, ведь форматку в каждом листе небось не чертите, а готовую вставляете, что тут сложного и никакого лиспа не надо.
__________________
Когда в руках молоток все вокруг кажется гвоздями.
Дима_ вне форума  
 
Непрочитано 18.07.2007, 12:37
#30
Krieger

инженер (КМ)
 
Регистрация: 30.10.2004
Красноярск
Сообщений: 3,837


>Дима_
Если я сделаю с полями связанными со свойствами подшивки, то как отправить такой чертеж на другой комп? Как задать расположению подшивки относительный путь? "_etransmit" подшивки подшивает, но пути не переделывает, поэтому связь все равно теряется.
Krieger вне форума  
 
Непрочитано 18.07.2007, 12:58
#31
Дима_

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


Варианта А - вместе с подшивкой - я так и делю, проблем не вызывает (даже если файла подшивки нет, то просто при загрузке - выбрать игнорировать и все остается как было).
Вариант Б - ссылку на текст где-то в модели (отдельная непечатанная область, можно даже на невидимом слое).
Вариант С - если так парит потеря даных - DWF (PDF) - точно ничего не пропадет. Удачи.
__________________
Когда в руках молоток все вокруг кажется гвоздями.
Дима_ вне форума  
 
Непрочитано 18.07.2007, 13:04
#32
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,996


>Дима_
>Krieger
>Олег К.
>dextron3
Мой вариант.
В свойтвах рисунка (Файл->Свойства рисунка или _dwgprops) на закладке Прочие создаем свой свойства, задавая им Имя и значение.
[ATTACH]1184749456.jpg[/ATTACH]
VVA вне форума  
 
Непрочитано 18.07.2007, 13:05
#33
Krieger

инженер (КМ)
 
Регистрация: 30.10.2004
Красноярск
Сообщений: 3,837


Т.е. нормального способа работы с подшивкой нет? На новом месте подшивку впринципе можно подвязать заново к чертежам..., а если не мне нужно будет дорабатывать чертежи? Как то недороботано это дело в каде.
Krieger вне форума  
 
Непрочитано 18.07.2007, 13:05
#34
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,996


Далее в текст втавляем поле, и заданные нами имена наших новых свойств появляются для ссылки на них
[ATTACH]1184749552.jpg[/ATTACH]
VVA вне форума  
 
Непрочитано 18.07.2007, 13:08
#35
Krieger

инженер (КМ)
 
Регистрация: 30.10.2004
Красноярск
Сообщений: 3,837


VVA
Только там нет, например, такого понятия как параметры текущего листа...
Krieger вне форума  
 
Непрочитано 18.07.2007, 13:08
#36
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,996


Результат: Описание полей в одном месте, поменял - изменилось везде
[ATTACH]1184749704.jpg[/ATTACH]
VVA вне форума  
 
Непрочитано 18.07.2007, 13:11
#37
Дима_

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


Спасибо VVA.
__________________
Когда в руках молоток все вокруг кажется гвоздями.
Дима_ вне форума  
 
Непрочитано 18.07.2007, 13:11
#38
Alaspher


 
Регистрация: 11.10.2004
e•burg
Сообщений: 755


>Олег К.
Проще всего, всёже с переопределением блока см. пост №8. Если же надо иметь разное заполнение, то, как сам же и сказал - F&R. Ну и поля с подшивками вполне рабочие инструменты.

Защитить от редактирования примитив не блокируя слой, думаю - не получится.
Alaspher вне форума  
 
Непрочитано 18.07.2007, 13:21
#39
Дима_

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


Для VVA - незнаешь, а для ворда в таком виде есть что либо - а то обычные поля там как-то через з-цу сделаны.
__________________
Когда в руках молоток все вокруг кажется гвоздями.
Дима_ вне форума  
 
Непрочитано 18.07.2007, 13:40
#40
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,996


>Дима_ Для ворда не знаю
VVA вне форума  
 
Непрочитано 18.07.2007, 14:24
#41
Олег К.

Инженер-теплотехник
 
Регистрация: 17.08.2006
Смоленск
Сообщений: 308


>> VVA
Спасибо, о таком способе не знал. Только графы 3 и 4 все равно вручную придется заполнять. И еще никак не могу вставить в окне свойств некоторые символы (тире с двоеточием напр).
Олег К. вне форума  
 
Автор темы   Непрочитано 18.07.2007, 16:07
#42
dextron3

проектировшик
 
Регистрация: 01.01.2007
СССР
Сообщений: 5,149


Цитата:
Сообщение от VVA
Далее в текст втавляем поле, и заданные нами имена наших новых свойств появляются для ссылки на них
[ATTACH]1184749552.jpg[/ATTACH]
а где на английском такое окошко найти?
__________________
инженер проектировшик с опттом программа авто гад образование высшие
dextron3 вне форума  
 
Непрочитано 18.07.2007, 16:10
#43
Profan


 
Регистрация: 25.12.2005
Москва
Сообщений: 13,627


Так это "_Field".
Profan вне форума  
 
Непрочитано 18.07.2007, 16:25
#44
Кулик Алексей aka kpblc
Moderator

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


А черт... Я так надеялся, что dextron3 все же сам начнет копаться...
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 18.07.2007, 16:32
#45
dextron3

проектировшик
 
Регистрация: 01.01.2007
СССР
Сообщений: 5,149


VVA спасибо!!!
это ты в оранжевой книжке по автокаду подсмотрел?

теперь можно создать готовые лайауты с узлами КЖ и просто подставляй планы, и название объекта меняй и готово
__________________
инженер проектировшик с опттом программа авто гад образование высшие
dextron3 вне форума  
 
Автор темы   Непрочитано 18.07.2007, 16:39
#46
dextron3

проектировшик
 
Регистрация: 01.01.2007
СССР
Сообщений: 5,149


Цитата:
Сообщение от Олег К.
>> VVA
Спасибо, о таком способе не знал. Только графы 3 и 4 все равно вручную придется заполнять. И еще никак не могу вставить в окне свойств некоторые символы (тире с двоеточием напр).
пользуйся автонумератором
__________________
инженер проектировшик с опттом программа авто гад образование высшие
dextron3 вне форума  
 
Непрочитано 18.07.2007, 16:46
#47
Олег К.

Инженер-теплотехник
 
Регистрация: 17.08.2006
Смоленск
Сообщений: 308


Цитата:
Сообщение от dextron3
пользуйся автонумератором
Это тут причем? Я говорил не про нумерацию листов.
Олег К. вне форума  
 
Непрочитано 18.07.2007, 16:56
#48
Dym


 
Регистрация: 27.09.2005
Двинскъ
Сообщений: 586
Отправить сообщение для Dym с помощью Skype™


Цитата:
в лайаутах данная команда не работает, в модели работает
это об find-replace? я удивлён
Dym вне форума  
 
Непрочитано 18.07.2007, 17:16
#49
Кулик Алексей aka kpblc
Moderator

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


Цитата:
Сообщение от dextron3
VVA спасибо!!!
это ты в оранжевой книжке по автокаду подсмотрел?
Это не фраза дня, это... В общем, абзац это. Народ, учтите на будущее! Книга по автокаду - оранжевая! Все остальное - наглая подделка!
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 18.07.2007, 17:43
#50
Олег К.

Инженер-теплотехник
 
Регистрация: 17.08.2006
Смоленск
Сообщений: 308


Синие книги по КАДу есть, одна белая рядом лежит, красные попадались, даже фиолетовую однажды увидел. А вот оранжевые прячутся. Чё за зверь-то такой?
Олег К. вне форума  
 
Непрочитано 18.07.2007, 18:40
#51
Profan


 
Регистрация: 25.12.2005
Москва
Сообщений: 13,627


Ну, как же, песенка такая есть:
"Оранжевое небо, оранжевое море, оранжевая книга, оранжевый верблюд". Прости меня, Господи, грешного. "Оранжевая революция."
Profan вне форума  
 
Непрочитано 19.07.2007, 08:29
#52
serg01


 
Регистрация: 04.07.2005
Иркутск
Сообщений: 213


Дима_
Цитата:
Для VVA - незнаешь, а для ворда в таком виде есть что либо - а то обычные поля там как-то через з-цу сделаны.
Такого там нет. Можно только его местными полями делать...через з-цу
serg01 вне форума  
 
Непрочитано 19.07.2007, 10:24
#53
Zouss


 
Регистрация: 14.03.2006
Сообщений: 863


2serg01 & Дима_ - чет я про поля в Word не вкурил - там все точно так же, примочка то с полями виндозная. также в свойствах документа создаем во вкладке "прочие" любые нужные нам поля... разница только в том что Word имеет кнопку принудительного обновления полей (F9)

2гуру - а VVA случайно не является автором оранжевой книжки?

2all - по крайней мере теперь известны два способа создания САПР на базе AutoCAD, один из них прочитать одноименную книгу...
Zouss вне форума  
 
Непрочитано 19.07.2007, 10:42
#54
Кулик Алексей aka kpblc
Moderator

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


А второй?
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 19.07.2007, 10:50
#55
Profan


 
Регистрация: 25.12.2005
Москва
Сообщений: 13,627


А второй - отказаться от создания САПР...
Profan вне форума  
 
Непрочитано 19.07.2007, 11:10
#56
Zouss


 
Регистрация: 14.03.2006
Сообщений: 863


какие-то вы нецелеустремленные...
второй способ требует определенного труда, в основном он заключается в каждодневном ежечасном повторении мантры "нужен лисп", ибо как известно Gutta cavat lapidem non vi, sed saepe cadendo (капля долбит камень не силой удара, а частотой падения)
ДА, труд и только труд, совместный самозабвенный труд добровольных помощников на мое благо способен изменить моё благосостояние, главное не лениться и регулярно повторять мантры
Zouss вне форума  
 
Непрочитано 19.07.2007, 11:22
#57
Кулик Алексей aka kpblc
Moderator

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


Ну ты не учитываешь один маленький момент: воду можно вообще отвести в другую сторону То бишь темы либо валить во флуд (что уже сделано), либо сносить сразу
Я пока в раздумках
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 19.07.2007, 11:39
#58
Profan


 
Регистрация: 25.12.2005
Москва
Сообщений: 13,627


Хорошо быть целеустремленным в начале пути. Но чем дальше идешь по пути создания САПР, тем цель становиться все отдаленнее и туманнее. Сейчас мне эта цель видится гораздо дальше, чем 15 лет назад, где-то в районе туманности Андромеды.
Цитата:
пронизыватель лайаутов
Лучше бы создать пронизыватель пространства-времени.
Profan вне форума  
 
Непрочитано 19.07.2007, 11:59
#59
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,996


Объявление:
Цитата:
Ищу корректора (ов) для корректировки оранжевой книжки по автокаду
VVA вне форума  
 
Непрочитано 19.07.2007, 12:15
#60
Олег К.

Инженер-теплотехник
 
Регистрация: 17.08.2006
Смоленск
Сообщений: 308


Цитата:
Сообщение от kpblc
...То бишь темы либо валить во флуд (что уже сделано), либо сносить сразу.
IMHO: некоторые темы могут оказаться интересными и нужными (в начале темы уже говорил, что пришлось срочно изобретать нечто похожее).

>> да в общем-то всем
Если некто не хочет изучать ЛИСП и писать программы сам - его проблеммы. Но ведь на форуме не только гуру собрались, некоторые еще учатся. Хоть намеками давайте понять в каком направлении решать задачу или какие функции использовать.

Цитата:
Сообщение от Profan
Лучше бы создать пронизыватель пространства-времени.
Так он уже создан, может даже действующая установка сохранилась . Хотя вряд ли, на металлолом продали.
Олег К. вне форума  
 
Непрочитано 19.07.2007, 12:15
#61
Alaspher


 
Регистрация: 11.10.2004
e•burg
Сообщений: 755


Цитата:
Сообщение от Profan
Лучше бы создать пронизыватель пространства-времени.
Запросто:
Код:
[Выделить все]
(defun continuum-penetrator (dpoint dtime / cont)
  (setq cont (vla-get-CurrentContinuum (vlax-get-myself)))
  (vla-put-Place
    cont
    (vlax-3d-point
      (mapcar (function +)
	      (vlax-safearray->list (vlax-variant-value (vla-get-Place cont)))
	      dpoint
      )
    )
  )
  (vla-put-Time cont (+ (vla-get-Time cont) dtime))
)
Вызов:
Код:
[Выделить все]
(continuum-penetrator '(1000000 200000 -3000) -40000)
Смещение в пространстве задаётся в виде 3-х дельт координат в мм, смещение во времени - в секундах.

*ВАРНИНГ* Толком не тестировал - претензии не принимаются!
Alaspher вне форума  
 
Непрочитано 19.07.2007, 12:28
#62
Кулик Алексей aka kpblc
Moderator

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


> Alaspher : Сэр, предупреждать о таких шутках надо. Еле вернулся.
> Олег К.:
Цитата:
IMHO: некоторые темы могут оказаться интересными и нужными (в начале темы уже говорил, что пришлось срочно изобретать нечто похожее).
Темы - могут. Но не постоянные требования "дайте то, подайте это, сделайте наоборот".
Цитата:
Если некто не хочет изучать ЛИСП и писать программы сам - его проблеммы. Но ведь на форуме не только гуру собрались, некоторые еще учатся. Хоть намеками давайте понять в каком направлении решать задачу или какие функции использовать.
Если человек хочет научиться, то хоть какие-то наметки по собственным разработкам обязательно будут показаны. Соответственно и подсказки посыплются. Тут же - ничего.
Намеков было достаточно. Не все и не всегда можно (и нужно) решать лиспом, иногда достаточно сделать всего один шаг - открыть тот же New Features и посмотреть там. В общем, "учить матчасть".
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 19.07.2007, 12:45
#63
Alaspher


 
Регистрация: 11.10.2004
e•burg
Сообщений: 755


Цитата:
Сообщение от Кулик Алексей aka kpblc
> Alaspher : Сэр, предупреждать о таких шутках надо. Еле вернулся.
Ну а шо-ж ви хочете от галимой беты? Вернулся-ж...

Цитата:
Сообщение от Кулик Алексей aka kpblc
Не все и не всегда можно (и нужно) решать лиспом, иногда достаточно сделать всего один шаг - открыть тот же New Features и посмотреть там.
Да, множество лиспов актуальных для 10-го АКАДа, стали совершенно ненужными сегодня. Аутодеск тож внимательно смотрит - что пишут независимые программеры чаще всего.
Alaspher вне форума  
 
Непрочитано 19.07.2007, 12:46
#64
Zouss


 
Регистрация: 14.03.2006
Сообщений: 863


и добавить хоцца - даже то что можно решить лиспом, можно было бы для начала и поискать - скорее всего оно уже есть готовое
впрочем надо отдать должное - автор темы по крайней мере пытается четко изложить то что ему нужно
а нужно в общем случае нечто вроде "сканер визитных карточек", только на LISP под AutoCAD применительно к основной надписи - это блин сложная задача с коммерческим подоплеком
Zouss вне форума  
 
Непрочитано 19.07.2007, 14:27
#65
e_v_a


 
Регистрация: 25.06.2007
Сообщений: 68


А еще можно viewport-ами чего-то аналогичного добиться. Т.е. на модели надписи, а в лайоутах окошки с этими надписями. Не думаю, что это хороший метод, но как вариант ...
e_v_a вне форума  
 
Непрочитано 19.07.2007, 14:48
#66
Геннадий aka PG

Машиностроение, Проектирование
 
Регистрация: 15.09.2003
Москва
Сообщений: 1,113
<phrase 1=


Цитата:
Сообщение от Alaspher
Цитата:
Сообщение от Profan
Лучше бы создать пронизыватель пространства-времени.
Запросто:
............
Вызов:
Код:
[Выделить все]
(continuum-penetrator '(1000000 200000 -3000) -40000)
Смещение в пространстве задаётся в виде 3-х дельт координат в мм, смещение во времени - в секундах.

*ВАРНИНГ* Толком не тестировал - претензии не принимаются!
Во-во, могильщик Вы наш, сначала б протестировали на кошечках!
Почему на 3метра в землю, за что?
Ведь пожить то хочется!
ЗЫ: Для тех кто там был и смог вернуться: Как там? Есть свет в конце тоннеля?
__________________
С уважением,
Геннадий aka PG
Геннадий aka PG вне форума  
 
Непрочитано 19.07.2007, 15:10
#67
Alaspher


 
Регистрация: 11.10.2004
e•burg
Сообщений: 755


Цитата:
Сообщение от Геннадий aka PG
сначала б протестировали на кошечках!
Кошечки давно кончились - сразу вслед за мышками...

Цитата:
Сообщение от Геннадий aka PG
Почему на 3метра в землю, за что?
Ну, хороший лиспист, либо не попадётся, либо выкрутится... :twisted:
Alaspher вне форума  
 
Непрочитано 19.07.2007, 15:22
#68
Profan


 
Регистрация: 25.12.2005
Москва
Сообщений: 13,627


Ну, значит, я не попался... :P
Profan вне форума  
 
Непрочитано 19.07.2007, 16:58
#69
Олег К.

Инженер-теплотехник
 
Регистрация: 17.08.2006
Смоленск
Сообщений: 308


>> ВСЕМ (к посту 62)
С этим-то я согласен, просто темы сразу не убивайте. Это к тому, что здесь творится: то ли разделить на 3-4! темы, то ли наплевать и оставить как есть (ну это уже к модераторам).

Позвольте вернуться к основной теме.
Неужели ничего подобного никто не делал? Не помню чтобы это было в стандартных функциях КАДа или в экспресах (если есть - ткните носом!). Поиск в данлоде по словам "layout" и "лист" ничего не выдал, искать по таким параметрам на форуме просто страшно :wink: . Поиск на форуме по "операции с листами" выдал всего одну ссылку, если не лень сами посмотрите - оччень интересно. На AutoCAD.ru нашлась только "z_layout_number.lsp", но она работает с блоком. И все?

Простейшая задача: в файле два лайота/листа, на каждом надо удалить все объекты, попадающие в квадрат 0,0-10,10.
Как я это решил: составляется список листов и на каждом ssget секущей рамкой по координатам. Но нужно делать активным каждый лист и zoom-extents. Надеюсь и без лисп-кода понятно.
Можно ли это решить без активации каждого листа?
Олег К. вне форума  
 
Непрочитано 19.07.2007, 17:14
#70
Dym


 
Регистрация: 27.09.2005
Двинскъ
Сообщений: 586
Отправить сообщение для Dym с помощью Skype™


sheet set?
Dym вне форума  
 
Непрочитано 19.07.2007, 17:19
#71
Кулик Алексей aka kpblc
Moderator

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


> Олег К. : вопрос решается стандартными средствами - поля, sheetsetmanager (mitjaj опередил ) либо блоки.
Цитата:
на каждом [листе] надо удалить все объекты, попадающие в квадрат 0,0-10,10
Позвольте узнать, а на фига? Теоретически можно, проходя по всем листам, и потом по примитивам, лежащим в них, проверять "вхождение" boundingbox'a примитива в указанную область. Для проверки пересечений - наверное, надо будет построить одну (!) полилинию замкнутую, поместить ее на первый лист, проверить через intersectwith пересекаемость со всеми примитивами листа; выбрать и удалить те, с которыми она пересекается; потом через copyobjects, например, или через entmod 410-й группы перетащить ее на следующий лист и все сначала. Оно надо?
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 19.07.2007, 18:46
#72
Олег К.

Инженер-теплотехник
 
Регистрация: 17.08.2006
Смоленск
Сообщений: 308


Блоки и поля уже разобрали, с ними все понятно. Подшивки - надо посмотреть поближе, никогда не пользовался (отсталые мы :? )

>> "Кулик Алексей aka kpblc"
На фига? Во-первых, для самообразования. Как я понял, используются функции VBA - это для меня сложновато, не дорос еще. Получается простым ЛИСПом такая задача не решается.
Во-вторых, зачем это конкретно понадобилось: срочно в полностью готовые чертежи объекта по требованию заказчика нужно было вставить подписи исполнителей (раньше подписывали только "бумагу"), около 500 листов. В общем, набросал программу вставляющую блоки-подписи в графы штампа. В блоке-форматке находятся только линии и не меняющийся текст, все остальные надписи - текстом вне блока (да, есть у меня динамический блок-форматка с аттрибутами, и форматку с полями сделал, но их внедрение - отдельный разговор). Из блока можно узнать только точку вставки и размер формата; далее вычисляется где находится нужная графа штампа и ssget'ом из нее берется текст фамилии; ну и вставка нужного блока-подписи рядом.
Короче, не понравилось мне, не красиво, захотелось улучшить! А тут тема на форуме похожия возникла!
Олег К. вне форума  
 
Непрочитано 19.07.2007, 23:31
#73
Dym


 
Регистрация: 27.09.2005
Двинскъ
Сообщений: 586
Отправить сообщение для Dym с помощью Skype™


Цитата:
вставить подписи исполнителей
это вроде уже и не подпись
Dym вне форума  
 
Непрочитано 19.07.2007, 23:55
#74
Кулик Алексей aka kpblc
Moderator

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


Ну только если для самообразования
Кстати, о соответствии VBA <-> vl-расширение очень хорошо написано на http://www.cad.dp.ua/stats/vla_doc.php - для меня это вообще стартовая страница оочень долго была Благо VB(A) более-менее знакомо.
По поводу "во-вторых"... Черт, если бы не динамика блока, я бы посоветовал попробовать работать напрямую в него (то есть "подписи" зашарашивать напрямую в описание блока, это вполне реализуемо). Но в динамические блоки я не пробовал такое сделать, поэтому давай забудем про этот метод Поэтому у меня к тебе есть предложение: вышли файл "что было" и "что должно получиться", есть у меня идейка одна, может и сработает. И без ssget'a обойтись можно попробовать.
Понимаешь, из конкретной вставки блока (хоть простого, хоть динамического) можно получить все что угодно. Если известно имя блока, то задачка в общем-то упрощается. В целях "отладки и пояснения" код сделал в принципе не очень верным - в локальные переменные, в частности, не внес почти ничего
Код:
[Выделить все]
(defun test (/ adoc)
  (vl-load-com)
  (setq adoc           (vla-get-activedocument (vlax-get-acad-object))
        layouts        (vl-remove-if-not
                         (function (lambda (x / name)
                                     (setq name (vla-get-name x))
                                     (and (wcmatch (strcase name t) "*paper*")
                                          (= (substr name 1 1) "*")
                                          ) ;_ end of and
                                     ) ;_ end of lambda
                                   ) ;_ end of function
                         ((lambda (/ res)
                            (vlax-for item (vla-get-blocks adoc)
                              (setq res (cons item res))
                              ) ;_ end of vlax-for
                            res
                            ) ;_ end of lambda
                          )
                         ) ;_ end of vl-remove-if-not
        layout_blocks  (mapcar
                         '(lambda (x / res)
                            (vlax-for ent x
                              (if
          ;(and	; строку раскомментировать, если известно имя блока
                                (= (strcase (vla-get-objectname ent) t)
                                   "acdbblockreference"
                                   ) ;_ end of =
          ;(= (strcase (vla-get-name ent) t) "<имяблока>")
          ; И эту строку тоже, подставив вместо <имяблока> требуемое, в
          ; нижнем
          ; регистре
                                 (setq res (cons ent res))
                                 ) ;_ end of if
                              ) ;_ end of vlax-for
                            res
                            ) ;_ end of lambda
                         layouts
                         ) ;_ end of mapcar
        ;; На данный момент получен список типа
        ;; '((#<VLA-OBJECT IAcadBlockReference2 0ef773d4>
        ;;    #<VLA-OBJECT IAcadBlockReference2 0ef77494>)
        ;;   (#<VLA-OBJECT IAcadBlockReference2 0ef77104>
        ;;    #<VLA-OBJECT IAcadBlockReference2 0d60d204>))
        ) ;_ end of setq
  ) ;_ end of defun
А уж из оттуда можно попробовать и выцепить все что надобно. Без "пациента" делать рецепт тяжеловато...
---
Код отредактировал, убрал откровенные ляпы.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 20.07.2007, 09:28
#75
Alaspher


 
Регистрация: 11.10.2004
e•burg
Сообщений: 755


Алексей
Я-б немного упростил код (с минимальными переделками):
Код:
[Выделить все]
(vl-load-com)
(defun test (/ adoc res)
  (setq adoc (vla-get-activedocument (vlax-get-acad-object)))
  (vlax-for i (vla-get-Layouts adoc)
    (if (= :vlax-false (vla-get-ModelType i))
      (vlax-for ent (vla-get-Block i)
        (if                             ;(and   ; строку раскомментировать, если известно имя блока 
          (= (strcase (vla-get-objectname ent) t) "acdbblockreference") ;_ end of = 
                                        ;(= (strcase (vla-get-name ent) t) "<имяблока>") 
                                        ; И эту строку тоже, подставив вместо <имяблока> требуемое, в 
                                        ; нижнем 
                                        ; регистре 
           (setq res (cons ent res))
        )
      )
    )
  )
  res
)
Если я правильно понял смысл его работы...
Alaspher вне форума  
 
Непрочитано 20.07.2007, 09:40
#76
Кулик Алексей aka kpblc
Moderator

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


Ни себе чего... Обалдеть можно как красиво!
Я ушел в другой мир, посыпать голову пеплом и жалеть себя
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 20.07.2007, 09:48
#77
Alaspher


 
Регистрация: 11.10.2004
e•burg
Сообщений: 755


Сенкс!
По сути, это просто развитие твоего кода.

Надолго не пропадай. 8)
Alaspher вне форума  
 
Непрочитано 20.07.2007, 10:17
#78
Олег К.

Инженер-теплотехник
 
Регистрация: 17.08.2006
Смоленск
Сообщений: 308


>> Кулик Алексей aka kpblc, Alaspher
Стоп, стоп, стоп. Я в таком темпе работать не могу - основной работы до черта. Хоть и подключен все время к форуму, бывает за день даже в список тем некогда заглянуть.
Вы правы, без примеров не получится, постараюсь за выходные собрать все необходимое (прогу подредактировать придется), в понедельник выложу сюда. Мне уже не горит, просто интересно.

Насколько я понимаю, подписи в виде полилиний/сплайнов в эл.чертежах юридической силы не имеют (речь о формате dwg). Или у нас с законодательством настолько глухо, что вообще непонятно? Знаю что была подобная тема, но там про электронную подпись спрашивали и ни к чему не пришли.
Олег К. вне форума  
 
Непрочитано 23.07.2007, 10:46
#79
Олег К.

Инженер-теплотехник
 
Регистрация: 17.08.2006
Смоленск
Сообщений: 308


В прицепленном архиве сама прога и необходимые файлы, краткие пояснения в текстовике. Три файла с блоками форматов - просто посмотреть, можно ли с такими работать.

Программа была написана "по-быстрому" для себя, поэтому использовал только те функции в которых уверен и отсутствуют некоторые проверки.
Собственно вопрос: можно ли в данной ситуации избавиться от SSGETa и соотв не перебирать листы? Да и вообще интересны рекомендации.
[ATTACH]1185173197.rar[/ATTACH]
Олег К. вне форума  
 
Непрочитано 23.07.2007, 23:38
#80
Alaspher


 
Регистрация: 11.10.2004
e•burg
Сообщений: 755


"Пройти" по листам не активируя их можно. В том числе можно и оперировать примитивами. Простейший пример прохода есть в постах 74 и 75. Там происходит выборка вставок блоков, но это не принципиально - можно обработать любой примитив. Из описания примитива можно выдернуть всё что нужно. Это, что касается активации и ssget - и то и другое можно обойти.

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

В блоках, всё может быть и так - опять же критерий правильности - работоспособность и удобство. С точки зрения чистоты решения, я бы предпочёл, во первых - выделить штампы в отдельный блок (не динамик), а во вторых - неизменную (в каждом файле) часть сделать постоянными атрибутами, а изменяемую обычными. Многострочные надписи можно сделать и мультисторочным текстом (при изменении переопределять блок). Можно, не значит - нужно.

Но повторю - если работает и устраивает, то лучше потратить время на другую задачу. Через год - другой может многое поменяться и не факт, что понадобится эта программа.
Alaspher вне форума  
 
Непрочитано 23.07.2007, 23:49
#81
Кулик Алексей aka kpblc
Moderator

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


ИМХО, ИМХО... Без проверок (попросту не было времени) и тестировок. Олег, попробуй код (но учти, за последствия не отвечаю! )
Код:
[Выделить все]
(defun test (lst / adoc attr_lst ins add_lst loc:getprop loc:conv2string)
            ;|
*	lst -> список соответствия вида:
      '(("family1" "<ИмяБлокаПодписиДляФамилии1> [<Смещение,мм>])
        ("family2" "<ИмяБлокаПодписиДляФамилии2> [<Смещение,мм>])
        <...>
        )
*    Маски символов (?, * и т.п.) недопустимы. Регистр роли не играет
*    Если блок "подписи" не существует в чертеже, он исключается из обработки.
* Неуказанные значения смещений принимаются = 20.
*    Написано с использованием кода Alaspher (http://dwg.ru/forum/viewtopic.php?t=14627)
|;
  (defun loc:getprop (ent prop / res)
    (if (vlax-property-available-p ent prop)
      (vlax-get-property ent prop)
      ) ;_ end of if
    ) ;_ end of defun

  (defun loc:conv2string (value)
    (if value
      (vl-princ-to-string value)
      ""
      ) ;_ end of if
    ) ;_ end of defun

  (defun loc:conv2real (value)
    (atof (loc:conv2string value))
    ) ;_ end of defun

  (vl-load-com)
  (vla-startundomark
    (setq adoc (vla-get-activedocument (vlax-get-acad-object)))
    ) ;_ end of vla-startundomark
  (setq
    lst (mapcar
          '(lambda (x)
             (list (strcase (car x))
                   (strcase (cadr x))
                   (cond
                     ((caddr x))
                     (t 20.)
                     ) ;_ end of cond
                   ) ;_ end of list
             ) ;_ end of LAMBDA
          (vl-remove-if-not '(lambda (a) (tblobjname "block" (cadr a))) lst)
          ) ;_ end of mapcar
    ) ;_ end of setq
  (vlax-for lay (vla-get-layouts adoc)
    (if (equal :vlax-false (vla-get-modeltype lay))
      (vlax-for blk (vla-get-block lay)
        (if
          (and
            (= (strcase (vla-get-objectname blk) t) "acdbblockreference")
            (or (wcmatch
                  (strcase (loc:conv2string (loc:getprop blk 'effectivename)) t)
                  "*format*"
                  ) ;_ end of wcmatch
                (wcmatch (strcase (vla-get-name blk) t) "*format*")
                ) ;_ end of or
            (> (vlax-safearray-get-u-bound
                 (setq attr_lst (vlax-variant-value (vla-getattributes blk)))
                 1
                 ) ;_ end of vlax-safearray-get-u-bound
               0
               ) ;_ end of >
            ) ;_ end of and
           (progn
             (foreach attr
                      (vl-remove-if-not
                        '(lambda (x)
                           (member (strcase (vla-get-tagstring x))
                                   (mapcar '(lambda (a) (strcase (car a))) lst)
                                   ) ;_ end of member
                           ) ;_ end of lambda
                        (vlax-safearray->list attr_lst)
                        ) ;_ end of vl-remove-if-not
               (setq ins     (vlax-safearray->list
                               (vlax-variant-value (vla-get-insertionpoint attr))
                               ) ;_ end of vlax-safearray->list
                     add_lst (cdr (assoc (strcase (vla-get-tagstring attr)) lst))
                     ) ;_ end of setq
               (vla-insertblock
                 (vla-objectidtoobject adoc (vla-get-ownerid blk))
                 (vlax-3d-point
                   (list (+ (cadr add_lst) (car ins))
                         (cadr ins)
                         (caddr ins)
                         ) ;_ end of list
                   ) ;_ end of vlax-3d-point
                 (car add_lst)
                 (max (loc:conv2real (loc:getprop blk 'xeffectivescalefactor))
                      (vla-get-xscalefactor blk)
                      ) ;_ end of max
                 (max (loc:conv2real (loc:getprop blk 'yeffectivescalefactor))
                      (vla-get-yscalefactor blk)
                      ) ;_ end of max
                 (max (loc:conv2real (loc:getprop blk 'zeffectivescalefactor))
                      (vla-get-zscalefactor blk)
                      ) ;_ end of max
                 (vla-get-rotation blk)
                 ) ;_ end of vla-InsertBlock
               ) ;_ end of foreach
             ) ;_ end of progn
           ) ;_ end of if
        ) ;_ end of vlax-for
      ) ;_ end of if
    ) ;_ end of vlax-for
  (vla-endundomark adoc)
  (princ)
  ) ;_ end of defun
Я код не тестировал совершено! Написано на 2007, должно работать начиная с 2006 и выше.
> Alashper : У Олега задача, как я понял, достаточно проста. Надо вычислить для каждого блока форматки (а маска *format*) атрибуты фамилий (маска family[0-9]) и по указанному смещению (20) поставить на каждую фамилию свой блок "подписи".
P.S. Если задачка не та, то сорри.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 24.07.2007, 06:47
#82
ShaggyDoc

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


Задача-то по изменению части основных надписей актуальная. Очень часто в последний момент что-то изменяется, например наименование стройки или обозначение. И надо быстро изменить.

Но решать надо принципиально не так, как в исходной "постановке". Это "строительство моста вдоль реки".

1. Основную надпись надо делать только блоками - обычными, не динамическими, не связывая с рамками. Вариантов блоков несколько - по ГОСТ.

2.Блоки с фиксированными именами.

3. Вся переменная часть - в атрибутах. Никаких многострочных и простых текстов. Количество атрибутов соответствует количеству строк - для наименования стройки - три атрибута и т.д.

При соблюдении этих условий задача изменения (и не только эта) решается легко, причем независимо от того, где нарисованы "штампы" - в модели или в лэйоутах. И независимо от версии Автокада.

Выбираются блоки с известными именами и в них изменяются значения известных атрибутов. Все делается функцией, в которую требуемые замены передаются аргументами.

Для универсальности данные лучше поместить во внешний файл. В ruCAD форматки рисуются программно, "штампы" в блоках. В папках проекта лежат файлы format.ini, в которых все записано. Изменив, например, название объекта, можно "щелкнуть по кнопке" и изменить, в соответствии с образцом, все основные надписи.

Задачу надо правильно ставить изначально, чтобы потом не изощряться в "пронизывании".
ShaggyDoc вне форума  
 
Непрочитано 24.07.2007, 09:12
#83
Alaspher


 
Регистрация: 11.10.2004
e•burg
Сообщений: 755


Цитата:
Сообщение от ShaggyDoc
3. Вся переменная часть - в атрибутах. Никаких многострочных и простых текстов. Количество атрибутов соответствует количеству строк - для наименования стройки - три атрибута и т.д.
Вообще, для этих целей, предполагается использование полей в сочетании с подшивками. К сожалению, реализация этого механизма не слишком удачна и изрядно многодельна, но тем не менее имеет и плюсы. Использование нескольких однострочных атрибутов для заполнения многострочных надписей тоже не блестящее решение, понятно, что вынужденное. Оно приводит например к тому, что редактирование надписи, вне системы её создавшей, становится крайне неудобным. Использование многострочных текстов в виде блоков позволяет решить часть из этих проблем, правда тож не верх изящества.
Alaspher вне форума  
 
Непрочитано 24.07.2007, 11:18
#84
ShaggyDoc

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


Цитата:
Сообщение от Alaspher
Вообще, для этих целей, предполагается использование полей в сочетании с подшивками. К сожалению, реализация этого механизма не слишком удачна и изрядно многодельна, но тем не менее имеет и плюсы.
К сожалению, и изрядные минусы. Замечательная вещь подшивки, но пока не доработана. Бум ждать. Но очень уж помаленьку Аутодеск выдавливает усовершенствования. Раз в год по чайной ложке.

Цитата:
Использование нескольких однострочных атрибутов для заполнения многострочных надписей тоже не блестящее решение, понятно, что вынужденное. Оно приводит например к тому, что редактирование надписи, вне системы её создавшей, становится крайне неудобным
Простое диалоговое редактирование атрибутов стандартными средствами разве "крайне неудобно"?. По желанию, для пущего комфорта - можно и специальный диалог.
ShaggyDoc вне форума  
 
Непрочитано 24.07.2007, 11:35
#85
Alaspher


 
Регистрация: 11.10.2004
e•burg
Сообщений: 755


Цитата:
Сообщение от ShaggyDoc
Простое диалоговое редактирование атрибутов стандартными средствами разве "крайне неудобно"?. По желанию, для пущего комфорта - можно и специальный диалог.
Пока редактирование ограничивается одной строкой - нормально, а если нет, то - "крайне неудобно". Естественно, что можно решить внешним механизмом, но я говорю о редактировании средствами АвтоКАДа.
Alaspher вне форума  
 
Непрочитано 24.07.2007, 12:01
#86
Олег К.

Инженер-теплотехник
 
Регистрация: 17.08.2006
Смоленск
Сообщений: 308


>> ВСЕМ
Спасибо, что откликнулись. Добавлю некоторые пояснения к сложившейся ситуации.
В представленном архиве есть шаблон форматок применяемый сейчас в нашей конторе - там в блоке только линии и неизменяемый текст, все остальное текстом вне блока. Отсюда и сложность обработки. Еще в архиве есть примеры форматок в виде блоков с атрибутами и полями, они могли бы использоваться, но нет, пользователи (..... ,,,, ..) говорят слишком сложно для них, делай как по проще (но мне-то как раз проще блок с атрибутами). Вообще администрирование КАДа не основная моя работа, занимаюсь в свободное время, денег за это ессно не платят и биться головой об стену не собираюсь. Раньше форматы рисовали вообще линиями и текстом, вставка подписей даже в таком варианте не прошла бы. Ладно, это все отступление от темы.
Теперь о сложностях.
Пользователи умудряются смещать тексты в штампе (хоть и в пределах графы, но все же) и даже весь блок форматки. Приходится ориентироваться на листе по точке вставки блока формата. Жаль нельзя заблокировать определенный объект то изменения его координат.
В графе «фамилия» пишется только фамилия без инициалов, иногда возможны совпадения. Для правильной вставки подписи в таком случае введена проверка должности.
Мда-а, из “песни” слов не выкинешь. Если изменять прогу под атрибуты (к примеру) – придется перелопачивать всю.
Кстати, прога оказалась не на один раз, можно еще повозиться.

>> Alaspher, ShaggyDoc
Есть у меня именно такая форматка – блок с атрибутами, почему не использую объяснил выше. Показывал юзерам программу рисования формата из РуКАДа – слишком сложно, (… ,,,,,,,,).
Если делать штамп отдельным блоком – стоит ли его включать в блок форматки или оставить отдельно? Еще есть боковой штамп согласования – тоже отдельно? А вообще, не все ли равно где находятся атрибуты: в полном блоке формата, или в отдельном блоке штампа? В данном случае дин.блоки не рассматриваются.
Понял, что штампы с полями не подходят – в одном файле могут находиться листы, которые делали разные люди (поэтажные планы или схемы сетей).

>> Кулик Алексей aka kpblc
Программу пока не тестировал. Как я понял для правильной работы нужен список lst (и ежу понятно), фамилия является атрибутом – не подходит под исходную постановку вопроса, но возможно сработает для варианта ShaggyDocа.
Берется точка вставки этого атрибута, далее смещение на 20 единиц. Получается точки вставки атрибута и блока подписи должны находиться в пересечении левой и нижней линий штампа (соответствующих).
Переделывать ничего не прошу, основа есть – сам додумаю.
Олег К. вне форума  
 
Непрочитано 24.07.2007, 12:14
#87
Олег К.

Инженер-теплотехник
 
Регистрация: 17.08.2006
Смоленск
Сообщений: 308


полный оффтоп
Цитата:
Сообщение от Alaspher
... В конце концов, может лучше написать чтонибудь совсем другое, что ещё не автоматизировано.
Давно уже продумываю прогу перевода плана сетей в аксонометрию (не трехмерка). Отличая: задается любой угол, не только 45, окружности превращаются в эллипсы. Два варианта: для планов и для стояков. Такая автоматизация нужна?

>> ShaggyDoc
Скорее всего вопрос не к Вам, но когда наконец заработает форум РуКАДа?
Олег К. вне форума  
 
Непрочитано 24.07.2007, 13:50
#88
ShaggyDoc

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


Цитата:
Сообщение от Олег К.
Есть у меня именно такая форматка – блок с атрибутами, почему не использую объяснил выше. Показывал юзерам программу рисования формата из РуКАДа – слишком сложно, (… ,,,,,,,,).
Этот мастер применяют редко, так как он универсален. Да, "сложно" несколько кнопок нажать. А потом просто дублируют лэйоуты. Там ведь штампы из обычных блоков и не меет значения, как они созданы. Атрибуты редактируют обычным диалогом.

Цитата:
Если делать штамп отдельным блоком – стоит ли его включать в блок форматки или оставить отдельно? Еще есть боковой штамп согласования – тоже отдельно? А вообще, не все ли равно где находятся атрибуты: в полном блоке формата, или в отдельном блоке штампа? В данном случае дин.блоки не рассматриваются.
Блоков форматок надо много - особенно когда применяются длинные чертежи. Да еще и виды штампов. У нас рамки форматки рисуются, блоками основная надпись и согласования. Для универсальности сделан мастер формата. Кому-то проще наделать форматок. Динамические блоки - для ручной работы, без программирования.


Цитата:
Давно уже продумываю прогу перевода плана сетей в аксонометрию (не трехмерка). Отличая: задается любой угол, не только 45, окружности превращаются в эллипсы. Два варианта: для планов и для стояков. Такая автоматизация нужна?
На мой взгляд - дохлый номер. И какие окружности? Схемы-то все в сантехнике. Не перевести план в аксонометрию - там слишком много условностей.

Варианты реальные -

а) рисование плоской аксонометрии "как на ватмане". Отработано давно. То есть проводим линии сами под нужным углом и вставляем в нужное место нужные УГО.

б) рисование однолинейной схемы в 3D по реальным трассам с последующим построением плоской проекции под 45. Программы преобразования есть. Но тут очень много нюансов, в результате которых после "автоматического" проецирования ручной работы еще больше будет. А в некоторых случаях можно.

http://cad.kurganobl.ru/253.html

Цитата:
>> ShaggyDoc
Скорее всего вопрос не к Вам, но когда наконец заработает форум РуКАДа?
Ко мне вопрос. А форум работает, только в закрытой сети. Пользуясь скрытостью там такого намолотили, просто филиал башорга. Сейчас вот ruCAD-5D обсасываем (3D уже схлынуло).

Вот схожу в отпуск ("брошу пить, возьмусь за вас" (С)) , весь этот треп убью вместе с некоторыми активистками, и открою настоящий форум заново.
ShaggyDoc вне форума  
 
Непрочитано 24.07.2007, 15:33
#89
Олег К.

Инженер-теплотехник
 
Регистрация: 17.08.2006
Смоленск
Сообщений: 308


Странно, на почту не приходят сообщения о обновлении темы, только у меня такое?

>> ShaggyDoc
Да я только за, использовать программу рисования форматов. Но приходится работать с теми кто есть, и то встречаются экземпляры "Я как научился чертить, так и буду. И ваш СТП мне не указ". Свои нервы мне дороже. Согласен, каждую форматку в отдельный блок = много блоков (у меня получилось около 35), зато можно по имени блока узнать формат листа и использовать в программах.

Цитата:
На мой взгляд - дохлый номер. И какие окружности? Схемы-то все в сантехнике. Не перевести план в аксонометрию - там слишком много условностей.
Собственно о сантехнике и речь, точнее отопление и вентиляция. Все материалы по данной теме давно изучил, потому и пишу свое. Как разберусь с текущим авралом, подниму отдельную тему.
Система РуКАД (RC2+SP4) давно используется ОВшниками - довольны. Вот только при работе компа под профилем юзера с ограниченными правами возникают ошибки. С аксонометрией в частности.

По форуму РуКАДа - давно пора, не Вам же одному на все вопросы отвечать. Активисток не бейте, их мало осталось .
Совсем обнаглею и спрошу: как стать "доверенным пользователем" системы РуКАД-3D, или хотябы тестером?
Олег К. вне форума  
 
Непрочитано 24.07.2007, 16:45
#90
Zouss


 
Регистрация: 14.03.2006
Сообщений: 863


2 Олег К.
так какие проблемы - заставить программу, которая рисует форматку, рисовать её в виде блока с добавлением соответствующих атрибутов (имя формата там путь к файлу...)
а по аксонометрии здесь я выкладывал примитивнейшую программку для облегчения процесса, но так как со стороны интерес угас доводить её до ума не стал
Zouss вне форума  
 
Автор темы   Непрочитано 24.07.2007, 17:11
#91
dextron3

проектировшик
 
Регистрация: 01.01.2007
СССР
Сообщений: 5,149


Цитата:
Давно уже продумываю прогу перевода плана сетей в аксонометрию (не трехмерка). Отличая: задается любой угол, не только 45, окружности превращаются в эллипсы. Два варианта: для планов и для стояков. Такая автоматизация нужна?
конечно нужна!!!
__________________
инженер проектировшик с опттом программа авто гад образование высшие
dextron3 вне форума  
 
Непрочитано 25.07.2007, 07:37
#92
ShaggyDoc

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


Цитата:
Сообщение от Олег К.
Система РуКАД (RC2+SP4) давно используется ОВшниками - довольны. Вот только при работе компа под профилем юзера с ограниченными правами возникают ошибки. С аксонометрией в частности.
А вот здесь бы подробнее (можно в отдельной ветке). Система построена так, чтобы все действия были доступны обычному пользователю - так, как по умолчанию. Такой пользователь (программы, им запущенные) может писать в HKCU реестра и в пользовательские каталоги. А что такое "юзер с ограниченными правами"? Еще что-то ограничено? Так этого делать нельзя.

Аксонометрия (там, где спрашивается выбор объектов, начало псевдокоординат и рисуется аксонометрия) вообще ничего никуда не пишет. Разумеется, могут быть какие-то ошибки, но никак они не могут быть связаны с правами пользователя. Это чистая арифметика, а программа очень простая.

Цитата:
Совсем обнаглею и спрошу: как стать "доверенным пользователем" системы РуКАД-3D, или хотябы тестером?
Придется подождать. Сейчас эта версия в полуотлаженном состояний в связи с переходами на 2008, да еще и 5D добавляется одновременно, и спецификации. И есть физическое ограничение - мне установили лимит на исходящий трафик. А 3D-версия - это уже несколько Гб.
ShaggyDoc вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Нужен лисп (пронизыватель лайаутов)