Да много что не так. Скачай мои
polki na zatravku и сам увидишь как это правильно реализовать. В 2 словах - ставишь Linear Parameter с высотой равным высоте твоего атрибута в ту же точку, которая у тебя является базовой точкой атрибута, либо перпендикулярно этой точке на линию полки-выноски, и на этот параметр навешиваешь Scale. Линейный параметр соответственно переименовываешь в что-то типа "Высота строки 1" или "Высота атрибута 1". Все остальные действия к этому параметру применяй точно так же как и к остальным объектам блока.
Я ж не зря файлики выкладываю, а чтоб интересующиеся идеи черпали. Даю очередной бесплатный совет - если скачивал все мои последние выложенные файлы то возьми на заметку как я "молнии" экшенов расставляю - в сторонке и строго через равные расстояния, чтобы некое подобие системы вырисовывалось и однотипные экшены стараюсь в 1 строку складывать. Поверь мне что после того как я пришел к этому мне самому стало намного проще работать с блоками, а на свои старые блоки где я к этой идее еще не пришел мне теперь противно открывать и если это не долго по времени, то я их переделываю не задумываясь.
Я вот тут 1 заморочку обнаружил в своих "полках на затравку" - если использовать полки прямо из файла, то параметр Flip работает как задумано и не зеркалит текст атрибута при зеркальном отражении всей полки. Ежели блок вставить с палитры или через вставку блока и заполнить атрибуты строк текста с нуля, тогде текст зеркалится и становится отраженным задом наперед, что не есть гуд. Вообще я знаю как с этим бороться, но тогда придется делать выравнивание атрибутов по центру и навешивать на каждый из них дополнительный Flip, а саму ориентацию полки "вправо/влево" задавать через Lookup.
darkandrew
8.7.2008, 12:48
спасибо, видимо в нюанс перпендикулярности точки вставки атрибута я и не въехал
Цитата(darkandrew @ 8.7.2008, 13:48) [snapback]269674[/snapback]
спасибо, видимо в нюанс перпендикулярности точки вставки атрибута я и не въехал

А как иначе. Ведь масштабирование объектов к которым ты это масштабирование применяешь у тебя происходит от некоторой точки, соответственно если эта точка у тебя некорректно соотносится с атрибутом, тогда сам атрибут в результате попытки такого мастштабирования поплывет в непонятном направлении (вернее в понятном направлании: при увеличении масштаба - от базовой точки параметра, при уменьшении - к ней). Поэтому я и написал что мест вставки параметра масштаба может быть только 2, лучше 1 - на линии полки.
Совершенно нет времени вдаваться в дисскуссии, поэтому для некоторых полезный совет. Стандартные мультивыноски в АКАДе вместо текста могу иметь поле - такая кнопочка в редакторе мультитекста выноски из двух прямоугольников горизонтальных. Так вот эти поля могу считывать инфу из атрибутов блоков, обектов МЕР и дохрена чего еще. К тому же выноску эту настроить чтобы текст никуда не отрывался - пять сек. Всем кому надо на выноске иметь инфу из объекта - рекомендую. Только полазить надо в настройках выносок и самих полей. Сам делал получалось. Выноски обновляются при закр./откр. файла (или акада - не помню). Удачи
darkandrew
10.7.2008, 11:42
а вот это уже интересно, спасибо, поковыряемся
Пожалуйста, рад помочь. Писал именно тебе, у меня похожие запросы к выноскам.

Сейчас бьюсь именно с МЕРовскими чтобы нормально себя вели в разрезах.
Цитата(avodo @ 8.7.2008, 18:21) [snapback]269858[/snapback]
Совершенно нет времени вдаваться в дисскуссии, поэтому для некоторых полезный совет. Стандартные мультивыноски в АКАДе вместо текста могу иметь поле - такая кнопочка в редакторе мультитекста выноски из двух прямоугольников горизонтальных. Так вот эти поля могу считывать инфу из атрибутов блоков, обектов МЕР и дохрена чего еще. К тому же выноску эту настроить чтобы текст никуда не отрывался - пять сек. Всем кому надо на выноске иметь инфу из объекта - рекомендую. Только полазить надо в настройках выносок и самих полей. Сам делал получалось.
На сколько я понимаю, поля могут показывать инфу для какого-либо обьекта если этот обьект указать непосредственно при создании поля. Т.е. нельзя один раз создать выноску с содержимым-полем и потом копировать ее так чтобы содержимое выноски менялось в зависимости от того, на какой обьект указывает стрелка выноски. Или я не прав?
Цитата(avodo @ 8.7.2008, 18:21) [snapback]269858[/snapback]
Выноски обновляются при закр./откр. файла (или акада - не помню)
Или регенерации, см. переменную FIELDEVAL
ivan-l-ing
10.7.2008, 13:25
Знатоки дин блоков, у кого-нибудь появилась наработка гибкого воздуховода, а то достала меня эта мультилиния?
Можно сделать только блок гибкаря с заранее предопределенным числом сегментов, т.е. вставляешь блок, указываешь то число сегментов которое будет достаточно и посегментарно подстраиваешь этот гибкарь от подключения к воздуховоду до подключения к ВРУ. блок такой создать не сложно, ограничение по количеству сегментов будет зашито внутри блока, т.е. придется заранее определиться какого здравоосмысленного числа коротких отрезков хватит такому гибкарю. по геморройности результат получится ничем не лучше мультилинии, но возможно единственный плюс - это будет возможность задания типоразмера, изоляции (тип и толщина) и м.б. снятия с этого "чуда" длины гибкаря. но самый резонный вопрос: кому оно надо? лично мне такая штука была бы интересна исключительно с точки зрения реализации этой конструкции внутри самого блока, ну люблю я сейчас подобные головоломки решать, а вот ее использование мне видится весьма сомнительным. так что либо мультилиния, либо магики, МЕРы иже с ними и их встроенными инструментами.
darkandrew
10.7.2008, 13:49
to
axelвыноску такую создать можно с любым левым полем и копировать ее куда угодно, просто при редактировании поля нужно будет указать объект ( привязка к объекту не автоматическая, а ручная)
к слову: нормально работает с блоками где применен параметр видимости, там же где применен параметр растяжения нужно делать два поля, т.к. размер к примеру 800х500 оно не показывает, отдельно нужно каждую из сторон.
При команде регенерации выноска регенерируется (если выбрать другой блок из списка)
Такую ассоциативную выноску не очень удобно "тягать" по экрану.
to
ivan-l-ingc вопросом о динамических гибких воздуховодах это лучше к
glam он в этой теме шарит (хотя я с трудом представляю как это можно организовать, все эти углы, не из кусочков же складывать

)
Цитата(darkandrew @ 10.7.2008, 14:49) [snapback]270643[/snapback]
не из кусочков же складывать

)
именно из кусочков
а про выноски с использованием полей - результат по замороченности получится не самый хороший, т.к. для каждого поля придется указывать объект и свойство которое с этого объекта необходимо будет взять чтобы оно вставилось в поле, так что я не сторонник подобных методов. лучше через атрибуты и тулзу которая будет эти атрибуты сначала снимать с объекта и обновлять когда надо (хотя бы в полуавтоматическом режиме). надо выпросить такую тулзу у программеров на dwg.ru или caduser.ru. я знаю они смогут такое забацать.
добавлено чуть опослянеее, фигня с гибкарем выходит. так что _mline рулит. делать гибкарь динблоком из кусочков выходит такая ерунда, что плакать хочется. так что мой вердикт пока такой: гибкарь это один из тех немногих элементов которые не стоит делать с помощью динблоков.
для интересующихся и желающих развиваться в навыках построения динблоков выкладываю еще 2 элемента вентсети по мотивам Антохиных начинаний. КП1 - круглый переход сделал в 2х исполнениях: одно полностью по Лиссантовскому каталогу, все размеры соответствуют каталожным 1 в 1, единственное несоответствие, что для переходов выше DN400 они идут уже несимметричные, до DN400 - симметричные, у меня же они симметричные во всех типоразмерах; второе исполнение - габариты тоже по Лиссантовскому каталогу, но скрыты те части перехода, которые в муфту попадают (как кстати они правильно называются по науке???). по идее можно сделать полностью настраиваемый переход - это уже пусть идею развивают, те кто реально станет пользоваться такой поделкой. ну и прямоугольный отвод 90° - опять же как наглядный пример как сочетая разным образом параметры и экшены динблоков можно сделать довольно таки умную плоскую фасонную деталь, в Антохиных блоках, да и в любых других вы и близко не найдете например возможность задавать радиус скругления отвода. можно было бы и управление фланцем добавить, но для примера это наверное будет уже чересчур. 6 исполнений, представленных внутри блока отвода, - это уже моя фантазия, не думаю что все 6 исполнений имеют место быть в жизни, но 2-3 исполнения точно реальные. wipeout в этих блоках делать не стал. кому интересно - сами сделают.
еще раз обращаю внимание
old patriot и других форумчан у которых при создании динблоков имеются проблемы с корректным взаимодействием параметра вращения с параметрами растяжения что в этом блоке все параметры взаимодействуют абсолютно корректно, так что черпайте идеи коллеги. заодно можете обратить внимание на перечень атрибутов которые я добавил в блок - на основе этих атрибутов, если их заполнять, можно и надписывание делать самое всевозможное и спецификацию генерить достаточно подробную.
p.p.s. тридешникам просьба сильно не возбухать, т.к. подобные посты пишу в основном для двадэшников, которых более не устраивает черчение примитивами.
Цитата(glam @ 10.7.2008, 14:13) [snapback]270652[/snapback]
а про выноски с использованием полей - результат по замороченности получится не самый хороший, т.к. для каждого поля придется указывать объект и свойство которое с этого объекта необходимо будет взять чтобы оно вставилось в поле, так что я не сторонник подобных методов. лучше через атрибуты и тулзу которая будет эти атрибуты сначала снимать с объекта и обновлять когда надо (хотя бы в полуавтоматическом режиме). надо выпросить такую тулзу у программеров на dwg.ru или caduser.ru. я знаю они смогут такое забацать.
Как вариант - сделать выноску частью динблока и добавить параметр видимости для выноски чтобы можно было ее убрать в случае надобности. В этом случае можно настроить выноску на отображение атрибута или динамического параметра этого блока и получится что при копировании блока поля будут ссылаться на значения скопированного блока, т.е. так как надо. (надеюсь понятно обьяснил

)
А снимать данные из дин. свойств и атрибутов удобно и просто командой DATAEXTRACTION
Axel, я для себя пришел к выводу что делать выноску частью динблока - не вариант. Лучше пусть будут просто заполняемые скрытые атрибуты внутри блока и некий инструмент надписывания на основе атрибутов и обновления надписанного при их изменении. Сама процедура "прятания" чего-либо в динблоке будет через задний проход, т.к. нетути в инструментарии такого параметра как "удалятель", либо "прятатель" объектов. использовать же Видимость для сокрытия выноски - непозволительное расточительство, т.к. Видимость одна и использовать ее лучше совсем для других целей.
Цитата(glam @ 10.7.2008, 16:08) [snapback]270682[/snapback]
Axel, я для себя пришел к выводу что делать выноску частью динблока - не вариант. Лучше пусть будут просто заполняемые скрытые атрибуты внутри блока и некий инструмент надписывания на основе атрибутов и обновления надписанного при их изменении. Сама процедура "прятания" чего-либо в динблоке будет через задний проход, т.к. нетути в инструментарии такого параметра как "удалятель", либо "прятатель" объектов. использовать же Видимость для сокрытия выноски - непозволительное расточительство, т.к. Видимость одна и использовать ее лучше совсем для других целей.
Насчет видимости вы, пожалуй, правы, ну а если, скажем, к этой выноске приделать операцию отражения и отражать относительно оси, расположенной за 3км от блока, т.е. чтобы отраженные выноски улетали за пределы видимости чертежа и валялись ненужным хламом пока их не вернут обратным отзеркаливанием?..
Цитата
и отражать относительно оси, расположенной за 3км от блока, т.е. чтобы отраженные выноски улетали за пределы видимости чертежа и валялись ненужным хламом пока их не вернут обратным отзеркаливанием?..
мало того что это не изящно, так это еще и ни капельки не инженерное решение. у меня есть такая глупая привычка дважды щелкать по чертежу чтобы он масштабировался автоматом и показывал все что содержится внутри чертежа и когда я вижу в таком чертеже какие-нибудь артефакты черти знает где меня начинает тихо потряхивать. решение должно быть красивым, универсальным и работоспособным. почему я пришел к выводу что прятать полку в блок не вариант - потому что тогда теряется универсальность полки.
если уж на то пошло и пытаться решить вопрос прятания полки выноски внутри блока, то уж лучше применить параметр scale к такой выноске и сжать ее в бесконечно малую точку, что я и пробовал проделать на том твоем блоке с прибором отопления который "прокачал" в другой теме. кстати сейчас тот прибор стал еще лучше, но пока я не доделаю аксонометрическую его версию на суд общества выкладывать не буду. а с аксонометрией у меня возник затык к которому я в силу нехватки времени пока не пробовал возвращаться чтобы решить этот затык.
ivan-l-ing
11.7.2008, 10:10
qlam
отличная фасонка, беру на вооружение спасибо огромное
пожалуй добавлю в ваши блоки маскировку
а так супер
ivan-l-ing, то ли еще будет... маскировку я потом сам добавлю, а также доделаю где это технически получится реализовать средствами динблоков изоляцию разных типов с возможностью задания толщины (как в том блока КВ с изоляцией) и рискну выложить это едининым набором уже оформленным в палитру с сопутствующим файлом. но... когда это будет сам не знаю, ибо делаю сие творение исключительно во время досуга и перекуров и скорей из праздного интереса, нежели чем с практической целью. хобби вот у меня такое недавно появилось - решать головоломки по воплощению в динблоках разных задумок. пока на очереди муфты/ниппели и круглые отводы от 15° до 90° с шагом 15°. весь типоряд отводов будет в 1 единственном блоке. так что следите за темой и развитием событий в ней.
darkandrew
16.7.2008, 10:30
to glam
такой вопросик. а можно ли к дин.выноске применить функцию массива, чтобы получить выноску для многослойных конструкций или для описания оборудования типового этажа?
можно. все выноски из СПДС практически на 90% можно реализовать средствами динблоков. единственная беда что в динблоках никак не получится реализовать автоматическое изменение границ рамки или полки у текста при его изменении (длиннее-короче), поэтому эту функцию приходится делать ручками. все остальное так или иначе можно сделать, вопрос только в сложности логической конструкции и наиболее оптимальном варианте ее реализации.
VBA-программа, позволяющая считывать различные параметры с динамических
блоков и отображать их в тексте мультивыноски.
Какие блоки и какие параметры учитываются определяется в файле настроек.
См файл readme и пример чертежа.
Если стрелку малиновой выноски в примере перемещать к различным блокам, то текст
выноски будет меняться в зависимости от блока, на который указывает
стрелка.
Если изменить сам блок, надпись так же изменится.
(cfSmartLeader.zip, 308 КБ)
korguzenkods
6.9.2008, 9:44
Добрый день.
Делаю подобную базу фасонины, но только для себя.
Пока только прямоугольные.
Всё по образу и подобию выложенного ранне Antoxoй и glam.
(Что касается круглых - вобще без изменений. Руки пока не дошли)
В общем -прошу оценить и помочь советом.
Никак не могу добавить вращение и перемещение базовой точки в блоки прямоугольных отводов.
Когда добавляю - почему то растяжение (не всего отвода, а только второго фланца) происходит в непредсказуемом направлении.
То же самое с базовой точкой - стоит её поставить в другое место - тот же фланец начинает "ехать".
Никак не вычислю ошибку
VBA-"макрос" извлекающий различные параметры из динамических блоков и создающий таблицу Excel на основе заданного "шаблона".
См файл readme и примеры.
Для запуска ввести команду vbaload (выбрать cfSpec.vbp) и vbarun
(выбрать cfSpec.vbp!main.Spec)
(cfSpec.zip, 337 КБ)
korguzenkods
8.9.2008, 4:03
2 cfox^ пожалуйста, сохраняйте dwg в формате AutoCAd 2006 или ранее
Программа позволяет превращать полилинию в последоватеоьность воздуховодов и отводов, а так же вводить воздуховоды, указывая точки начала и конца, автоматически вставлять отводы между смежными прямыми участками.
Все вставляемые объекты являются динамическими блоками.На блоки, с которыми работает программа, существуют ограничения, связанные с именами блоков, а так же именами и наличием некоторых параметров.
Блоки могут добавляться из "базы" или использоваться определенные в чертеже.
to CFOX! не могу сообразить, как все это дело на тычку привязать. Может поможешь советом?
Сделать кнопочкой, чтобы не из командной строки запускать.
Например:
в последнем проекте панель и меню загружает макрос "Init". - см Readme
Вообще кнопки создаются Сервис-Адаптация-Интерфейс
Создаешь новую команду, назначаешь "макрос", перетаскиваешь её на панель.
AAANTOXA
5.12.2008, 14:32
обновил базу в первом сообщении . теперь всё в нулевом слое с цветом по слою толщиной основных линий 0.35 и осевая всегда черная 0.09.
Yanki83
18.12.2008, 15:08
Уважаемы AAANTOXA, мне Ваша база очень понравилась, огромное спасибо! Но хотелось бы увидить вашу базу с толщиной основных линий 0.5 и 0.7 согласно ГОСТу.
AAANTOXA
18.12.2008, 16:20
В ГОСТе толщина линий в миллиметрах. а в Автокаде я не знаю в чем. У меня принято так тонкая линия это 0.9-0,13 (поправка 0,09-0,13 конечно) . Жирная линия это 0,30-0,40. Толще 0,40 только если хочу чтото специально выделить, либо принципиальные схемы, либо линия разреза ...
Можете сами перебить врукопашную как вам нравится толщины линий . долго это правда .
"неправильно ты Дядя Фёдор бутерброд ешь..."
"Уж сколько раз твердили миру" осевая - тонкая 0,15 и ниже, хотя ниже не обязательно, т.к. разницы при печати на большинстве плоттеров все равно не заметить, все остальные линии в блоке по толщине слоя, цвет тоже по толщине слоя, цвет осевой - белый, все примитивы в блоке должны лежать в слое 0. Это самые универсальные правила. Хочешь другой цвет и толщину основных линий блока - присваивай соответствующие параметры слою в котором будут располагаться блоки и не надо ничего дополнительно менять и перебивать внутри блока. А принудительное назначение толщин и цветов примитивам внутри блока, кроме осевой, есть контрпродуктивный подход, ограничивающий творческое пространство при использовании блоков.
Yanki83
19.12.2008, 13:27
AAANTOXA
ну и на этом спасибо))))
Composter
24.6.2009, 19:04
респект большой антохе за базу.
но есть недоработки в динамических блоках.ибо они должны быть все таки динамические ,а не коллекцией из блоков.своей базой не обладаю,потому что ща делаю тока первый проект по вентиляции.korguzenkods правильнее сделал.и исправлять такой блок быстрее.у меня аналогичная идея,тока я не подумал об высоте,а все параметры загнал в 1 лукап.
а вот на счет извлечения свойств пользуюсь стандартной функцией data extraction,которая находится в панели modify2 либо в меню Tools ,правда она появилась тока с 2008 автокада.
ну и выкладываю свой блок диффузора.
Решил попробовать свои силы в этом деле. Сделал 3 блока: воздуховод, переход и отвод90. Пока что на этом энтуазизьм угас

Блок "воздуховод" умеет считать скорость в сечении. Для этого в окне свойств нужно указать параметы "воздух" и "высота" если воздуховод прямоугольный. Сечение и скорость выводятся на непечатаемом слое после регенерации.
Остальное думаю понятно.
Охотно жду обкидывания гнилыми помидорами.
Цитата(Axel @ 7.1.2010, 1:32)

Решил попробовать свои силы в этом деле. Сделал 3 блока: воздуховод, переход и отвод90. Пока что на этом энтуазизьм угас

Блок "воздуховод" умеет считать скорость в сечении. Для этого в окне свойств нужно указать параметы "воздух" и "высота" если воздуховод прямоугольный. Сечение и скорость выводятся на непечатаемом слое после регенерации.
Остальное думаю понятно.
Охотно жду обкидывания гнилыми помидорами.
Интересно и здорово!
А много времени необходимо затратить с нуля?
А есть ли такие же блоки приточек, вытяжек и др.элементов?
Спасибо, пока попробую использовать Ваши блоки, может когда-нибудь и сам научусь.
Цитата(vik74 @ 18.1.2010, 19:16)

А много времени необходимо затратить с нуля?
Я затратил много, потому как познавал это дело методом тыка. И до сих пор далеко не все понимаю, даже в этих моих блоках некоторые вещи получились после долгих тыканий и я до сих пор не понял как

Не знаю, существуют ли какие-нибудь мануалы по динблокам, если найдете, то лучше учиться по ним.
Цитата(vik74 @ 18.1.2010, 19:16)

А есть ли такие же блоки приточек, вытяжек и др.элементов?
Я пока не делал. Наверное сделаю когда на работе отбирут магикад

А пока поищите по этой и соседней теме, кто-то что-то подобное уже выкладывал.
axel, нашел пару недочетов по блоку.
-нет выбора диаметра отвода, как в воздуховоде
-при уменьшении стороны отвода получается то, что в приложенном рисунке(может лучше убрать ручки изменения длин сторон отвода?)
с уважением.
Цитата(roofer @ 19.1.2010, 14:40)

-нет выбора диаметра отвода, как в воздуховоде
Добавил
Цитата(roofer @ 19.1.2010, 14:40)

-при уменьшении стороны отвода получается то, что в приложенном рисунке(может лучше убрать ручки изменения длин сторон отвода?)
Убирать эти ручки не хочу, для прямоугольных отводов на сложных участках сети они будут полезны, да и для круглых тоже. Глюк этот я тоже заметил, но как от него избавиться без переделки всего блока полностью при сохранении функционала - не знаю. К тому же, сильных неудобств он не доставляет (имхо). Поэтому хай себе будет. Когда дойдут руки - переделаю.
Выкладываю обновление

Кой-чего добавил, кое-что слегка переделал, на мой взгляд стало удобнее.
Цитата(roofer @ 19.1.2010, 14:40)
-нет выбора диаметра отвода, как в воздуховоде
Добавил
Все еще нет)
Вот тут должно быть
Composter
22.1.2010, 16:37
я вот немного изменил блоки, добавил в них еще один параметр как высота.во первых при составлении спецификации это упрощает подсчет.а во вторых я написал небольшой лисп ,который упрощает проставление размеров воздуховодов на чертежах.
Код
(defun c:zod29 ( / blk_ename bl_ename ent_d Shirina_v Visota_v minpoint maxpoint p1 p2 p3 line_p1 intpt int_p3 int_p4 Diametr_v )
(vl-load-com)
(if (vlax-method-applicable-p (setq blk_ename(vlax-ename->vla-object(car(setq ent_d(entsel "\nУкажите блок" )))))'GetDynamicBlockProperties)
(if (listp(setq bl_ename (vl-catch-all-apply 'vlax-safearray->list (list(vlax-variant-value(vla-GetDynamicBlockProperties blk_ename ))))))
(progn (mapcar '(lambda (att_name)
(cond ( (equal (vla-get-PropertyName att_name) "Shirina") (if
(equal (type(vlax-variant-value(vla-get-Value att_name)))(type ""))
(setq Shirina_v (vlax-variant-value(vla-get-Value att_name)))
(setq Shirina_v (rtos(vlax-variant-value(vla-get-Value att_name))2))
)
)
( (equal (vla-get-PropertyName att_name) "Visota") (if
(equal (type(vlax-variant-value(vla-get-Value att_name)))(type ""))
(setq Visota_v (vlax-variant-value(vla-get-Value att_name)))
(setq Visota_v (rtos(vlax-variant-value(vla-get-Value att_name))2))
)
)
( (equal (vla-get-PropertyName att_name) "Diametr") (if
(equal (type(vlax-variant-value(vla-get-Value att_name)))(type ""))
(setq Diametr_v (vlax-variant-value(vla-get-Value att_name)))
(setq Diametr_v (rtos(vlax-variant-value(vla-get-Value att_name))2))
)
)
)
)
bl_ename
)
(vla-put-ScaleFactor
(setq etext
(vla-addtext (if (equal 1 (vla-get-activespace(vla-get-activedocument(vlax-get-acad-object))))
(vla-get-modelspace(vla-get-activedocument(vlax-get-acad-object)))
(vla-get-paperspace(vla-get-activedocument(vlax-get-acad-object)))
)
(if Diametr_v
(strcat "%%C" Diametr_v )
(strcat Shirina_v "x" Visota_v)
)
(vlax-3d-point(getpoint "\nУкажите точку вставки текста"))
180
)
)
0.8)
(vla-GetBoundingBox etext 'MinPoint 'MaxPoint)
(setq minpoint (vlax-safearray->list minpoint)
maxpoint (vlax-safearray->list maxpoint)
maxpoint (list(+(car maxpoint) 50)(-(cadr minpoint)20)(caddr maxpoint))
minpoint (list(- (car minpoint) 50)(-(cadr minpoint)20)(caddr minpoint))
ent_d (cadr ent_d)
)
(if (<
(DISTANCE minpoint ent_d)
(DISTANCE maxpoint ent_d)
)
(setq p1 minpoint p2 maxpoint)
(setq p1 maxpoint p2 minpoint)
)
(setq line_p1
(vla-addline
(if (equal 1 (vla-get-activespace(vla-get-activedocument(vlax-get-acad-object))))
(vla-get-modelspace(vla-get-activedocument(vlax-get-acad-object)))
(vla-get-paperspace(vla-get-activedocument(vlax-get-acad-object)))
)
(vlax-3d-point p1)
(vlax-3d-point ent_d)
)
)
(setq intpt(vlax-safearray->list(vlax-variant-value(vla-IntersectWith line_p1 blk_ename 3))))
(cond ( (equal (length intpt) 3) (setq p3 (list(car intpt)(cadr intpt)(caddr intpt))) )
( (equal (length intpt) 6) (setq int_p3(list(nth 0 intpt)(nth 1 intpt)(nth 2 intpt)) int_p4 (list(nth 3 intpt)(nth 4 intpt)(nth 5 intpt))))
)
(if int_p3 (progn
(if (<
(DISTANCE p1 int_p3)
(DISTANCE p1 int_p4)
)
(setq p3 int_p3)
(setq p3 int_p4)
)
)
)
(vla-put-EndPoint line_p1 (vlax-3d-point p3))
(vla-addline
(if (equal 1 (vla-get-activespace(vla-get-activedocument(vlax-get-acad-object))))
(vla-get-modelspace(vla-get-activedocument(vlax-get-acad-object)))
(vla-get-paperspace(vla-get-activedocument(vlax-get-acad-object)))
)
(vlax-3d-point p1)
(vlax-3d-point p2)
)
)))
(princ)
)
Цитата(Composter @ 22.1.2010, 15:37)

я вот немного изменил блоки, добавил в них еще один параметр как высота.во первых при составлении спецификации это упрощает подсчет.а во вторых я написал небольшой лисп ,который упрощает проставление размеров воздуховодов на чертежах.
Понравилось. В принципе, автоматическое подписывание можно реализовать и проще, в блоке, без лиспа, но ваша реализация гораздо удобнее.
Если бы вы могли написать лисп, который строит мультивыноску в текущем стиле с заданным текстом-полем по двум точкам так как это сделано сейчас, то мало того что это бы позволило быстро и легко подписывать воздуховоды, так еще бы и сами выноски менялись после регенерации в соответствии с размерами воздуховода!
А кроме того, после построения выноски было бы удобнее не прекращать процедуру, а запрашивать следующий воздуховод для установки следующей выноски.
Прмер на основе вашего.
Composter
25.1.2010, 10:58
Axel ваша идея на счет полей вполне осуществима.если ОВ-шники помогут мне вот тут
(нужна помощь) то это освободит мне свободное время.
забыл добавить для тех кто не знает что такое лисп и с чем его едят рекомендую посмотреть
лиспв моем лиспе есть один недостаток,я делал что бы можно было щелкнуть можно на любом крае воздуховода, но выноска будет обрезана по ближайшему краю,что что бы не было пересечений с воздуховодом, но приэтом есть недостаток что выноска обычно не достает до тех воздуховодов которые располагаются не ортогонально.
на счет прекращения выполнения лиспа.обычно полноценно использую клавиатуру в автокаде поэтому пока лисп такой могу предложить 2 варианта:
1)после выполнения лиспа нажать пробел ,тогда повториться последняя выполненая команда
2)для тех кому впадлу пробел нажимать есть еще более простой вариант : вводим в командной строке multiple,жмем ентер(ну или пробел), если русский автокад то _multiple.после этого вводим zod29 и происходит зацикливание последней комманды пока не нажмете ESC.
Цитата(Axel @ 22.1.2010, 21:57)

мало того что это бы позволило быстро и легко подписывать воздуховоды, так еще бы и сами выноски менялись после регенерации в соответствии с размерами воздуховода!
...Вроде как это и делал сто лет назад, правда на VBA (см мой пост в этой теме от 26.8.2008). Мне показалось, что это никому не нужно...
Цитата(cfox @ 4.2.2010, 19:20)

...Вроде как это и делал сто лет назад, правда на VBA (см мой пост в этой теме от 26.8.2008). Мне показалось, что это никому не нужно...
Да, про вашу реализацию я тоже вспомнил, потом

Надо сказать, она весьма и весьма удобна и функциональна, намного удобнее чем вариант с полями. Не востребована она до сих пор потому, что нету еще толковой единой системы динблоков, с которой было бы удобно работать всем. А вот если сенсей Glam таки доведет до ума свое творение по сабжу, вот тогда мир и вздрогнет..
Ваши программы,
cfox, очень интересны и имхо на порядок серьезнее чем все то что выкладывается в открытом доступе на двг.ру и пр. сайтах. Своего пользователя они еще найдут.
Цитата(Axel @ 5.2.2010, 10:13)

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

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