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

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

Создание нового типа линии (или MKLTYPE не работает)

Ответ
Поиск в этой теме
Непрочитано 18.06.2010, 16:06 #1
Создание нового типа линии (или MKLTYPE не работает)
Филипп
 
Регистрация: 03.06.2010
Сообщений: 51

Создаю новый тип линии --- <---> --- <---> --- (подробности во вложении), получается что-то подобное < --> <---> <-<-- Пробовал с помощью MKLTYPE, но там вообще фигня получается.
Подскажите как реализовать задачу. ПОдробности в скрепке.

Вложения
Тип файла: zip lines.zip (6.6 Кб, 103 просмотров)

Просмотров: 8783
 
Непрочитано 18.06.2010, 16:24
#2
Кулик Алексей aka kpblc
Moderator

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


Попробуй нечто типа
Код:
[Выделить все]
*электрокабель2,электрокабель2 <---> --- <---> ---
A,0,-10,[INDEX,cc_lines.shx,a=180,x=1,y=0.5],50,[INDEX,cc_lines.shx,x=-1,y=-0.5],-10,50
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 18.06.2010, 19:39
#3
АлексЮстасу

топограф, технолог
 
Блог
 
Регистрация: 24.05.2009
Москва
Сообщений: 3,031


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Попробуй нечто типа
Код:
[Выделить все]
*электрокабель2,электрокабель2 <---> --- <---> ---
A,0,-10,[INDEX,cc_lines.shx,a=180,x=1,y=0.5],50,[INDEX,cc_lines.shx,x=-1,y=-0.5],-10,50
Просветите, плз, что такое "a=180"? "a" - от Angle?
Если это так, то чем это отличается от "r=180"? (наверное, от Rotate)
Т.е., чем описание поворота с помощью "a=" отличается от "r="?

Последний раз редактировалось АлексЮстасу, 18.06.2010 в 19:47.
АлексЮстасу вне форума  
 
Непрочитано 19.06.2010, 00:59
#4
Кулик Алексей aka kpblc
Moderator

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


АлексЮстасу, в исходном описании типа линии использовалось именно "a":
R=## Relative rotation
A=## Absolute rotation
S=## Scale
X=## X offset
Y=## Y offset
Почему - не спрашивай, не знаю. Наверное, так было надо...
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 19.06.2010, 13:31
#5
АлексЮстасу

топограф, технолог
 
Блог
 
Регистрация: 24.05.2009
Москва
Сообщений: 3,031


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
АлексЮстасу, в исходном описании типа линии использовалось именно "a":
R=## Relative rotation
A=## Absolute rotation
S=## Scale
X=## X offset
Y=## Y offset
Почему - не спрашивай, не знаю. Наверное, так было надо...
Проверил на линиях, вычерченных под углом. Различие между "a" и "r" как раз в Absolute и Relative!
Т.е. чаще всего полезным будет именно "r" - разворот относительно линии, а не относительно осей координат.
И Филиппу тоже нужно заменить "a" на "r" - иначе неправильно нарисуются формы-стрелки на всех негоризонтальных линиях.
Спасибо за справку!
АлексЮстасу вне форума  
 
Автор темы   Непрочитано 21.06.2010, 08:00
#6
Филипп


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


спасибо всем. Помощь оказалась очень оперативной и квалифицированной.
Только осталось одно "но"
Я подправил данные так, чтобы длины отрезков и промежутков были такими как мне требуется (длина отрезка 10 мм, длина промежутка 2 мм).
*электрокабель2,электрокабель2 <---> --- <---> ---
A,0,-2,[INDEX,cc_lines.shx,r=180,x=1,y=0.5],10,[INDEX,cc_lines.shx,x=-1,y=-0.5],-2,10

Вот только получается, что расстояние между началом линии и первым сегментом не контролируемое, т.е. меняется в зависимости от длины линии.
Подскажите, можно ли сделать так, чтобы сам отрезок начинался с элемента <--->?А то получается, что он начинается с точки (А,0) а потом, рассточние до следующего сегмента <---> варьируется приблизительно от 2 до 10 мм (в зависимости от длины самой линии).

Последний раз редактировалось Филипп, 21.06.2010 в 08:43.
Филипп вне форума  
 
Непрочитано 21.06.2010, 11:57
1 | #7
АлексЮстасу

топограф, технолог
 
Блог
 
Регистрация: 24.05.2009
Москва
Сообщений: 3,031


Цитата:
Сообщение от Филипп Посмотреть сообщение
*электрокабель2,электрокабель2 <---> --- <---> ---
A,0,-2,[INDEX,cc_lines.shx,r=180,x=1,y=0.5],10,[INDEX,cc_lines.shx,x=-1,y=-0.5],-2,10

Вот только получается, что расстояние между началом линии и первым сегментом не контролируемое, т.е. меняется в зависимости от длины линии.
Подскажите, можно ли сделать так, чтобы сам отрезок начинался с элемента <--->?А то получается, что он начинается с точки (А,0) а потом, рассточние до следующего сегмента <---> варьируется приблизительно от 2 до 10 мм (в зависимости от длины самой линии).
Можно переставить 10 из конца описания в начало вместо 0 - тогда начинаться будет со штриха.
Но у Автокада первый отрезок в любом случае почему-то переменной длины. Как с этим бороться я бы сам хотел узнать.
АлексЮстасу вне форума  
 
Непрочитано 21.06.2010, 13:34
1 | #8
Кулик Алексей aka kpblc
Moderator

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


Наверняка проблема кроется в plinegen...
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 21.06.2010, 15:13
#9
Филипп


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


Всем огромное спасибо. А plinegen - это вообще чудесно, вот только было бы здорово включить его для каждого вновь создаваемого документа поумолчанию. Есть такая возможность?
Филипп вне форума  
 
Непрочитано 21.06.2010, 18:58
#10
АлексЮстасу

топограф, технолог
 
Блог
 
Регистрация: 24.05.2009
Москва
Сообщений: 3,031


Цитата:
Сообщение от Филипп Посмотреть сообщение
А plinegen - это вообще чудесно, вот только было бы здорово включить его для каждого вновь создаваемого документа поумолчанию. Есть такая возможность?
plinegen==1 чудесно для типов линий с формами. А для типов без форм лучше plinegen==0 (тогда штрихи всегда будут в углах поворотов полилиний).

На переменную величину первого отрезка/пробела plinegen вроде бы не влияет, увы.

Сделать plinegen==1 по умолчанию несложно. Нужно создать шаблон, в котором будет прописано plinegen==1, и на основе его создавать все новые чертежи.
АлексЮстасу вне форума  
 
Непрочитано 21.06.2010, 21:37
1 | #11
VVA

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


Цитата:
Сообщение от АлексЮстасу Посмотреть сообщение
Но у Автокада первый отрезок в любом случае почему-то переменной длины.
Тип линии должен начинаться с точки или штриха. Первый и последний сегмент Автокадом растягиваются/сжимаются так, чтобы начало и конец штрихов попадали в начало и конец отрезка. Повлиять на первый и конечный сегмент можно только изменением длины отрезка.
Анализируя типы линий, я обратил внимание, что все Автодесковкие линии из файлов acad.pat и acadiso.pat заканчиваютмя пробелом. Небольшие опыты показали, что если описание типа линии заканчивается отрицательным числом, то такая линия будет всегда симметричной.
На рисунке загружены эти типы линий
Цитата:
*DASHDOT,Dash dot __ . __ . __
A, 12, -6, 0, -6
*DASHDOT1,Dash dot __ . __ . __
A, 6, -6, 0, -6, 6
Длинна обоих отрезков 50 единиц
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 22.06.2010, 02:03
#12
АлексЮстасу

топограф, технолог
 
Блог
 
Регистрация: 24.05.2009
Москва
Сообщений: 3,031


Цитата:
Сообщение от VVA Посмотреть сообщение
Первый и последний сегмент Автокадом растягиваются/сжимаются так, чтобы начало и конец штрихов попадали в начало и конец отрезка.
Это объяснимо при отключенной генерации (Disabled или plinegen==0), когда Автокад действительно старается получше уложить тип линий между началами-концами отрезков.
Если же в типе линий участвуют формы, то чаще всего необходимо генерацию включить (Enabled или plinegen==1).
Но и при включенной геренации Автокад растягивает/укорачивает первый отрезок.
АлексЮстасу вне форума  
 
Непрочитано 22.06.2010, 10:26
#13
VVA

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


Цитата:
Сообщение от АлексЮстасу Посмотреть сообщение
Это объяснимо при отключенной генерации (Disabled или plinegen==0), когда Автокад действительно старается получше уложить тип линий между началами-концами отрезков.
Не совсем так. plinegen влияет на поведение полилинии, тип линии Автокада существовал задолго до появления plinegen. И я специально в предыдущем посте не упоминал полилинию, а говорил об отрезке. Автокад всегда растягивает/укорачивает первый/последний штрих не зависимо от примитива и значений переменных типа plinegen
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Автор темы   Непрочитано 22.06.2010, 14:06
#14
Филипп


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


Для полного счастья, можете мне объяснить или направить меня по ссылке, где говорится о том, как задать вес и цвет создаваемой линии? Мне необходимо, чтобы линия при её выборе сразу имела вес =0.4. И есть ещё вариант, линия должна быть разной толщины, т.е. прямые отрезки должны иметь вес 0.4 а окружности входящие в её сотав имеют вес 0.2

Последний раз редактировалось Филипп, 22.06.2010 в 14:40.
Филипп вне форума  
 
Непрочитано 22.06.2010, 15:51
#15
АлексЮстасу

топограф, технолог
 
Блог
 
Регистрация: 24.05.2009
Москва
Сообщений: 3,031


Цитата:
Сообщение от Филипп Посмотреть сообщение
Для полного счастья, можете мне объяснить или направить меня по ссылке, где говорится о том, как задать вес и цвет создаваемой линии? Мне необходимо, чтобы линия при её выборе сразу имела вес =0.4. И есть ещё вариант, линия должна быть разной толщины, т.е. прямые отрезки должны иметь вес 0.4 а окружности входящие в её сотав имеют вес 0.2
Для последнего нужно задавать линиям не вес, а толщину (global width).
Тогда штрихи (базовая линия) будет назначенной толщины, а формы - тонкие. Тонким - до 0.2 мм - ни вес, ни толщину задавать не нужно. Она все равно не выразится в масштабе.
Любопытно было бы узнать, что значит "Мне необходимо, чтобы линия при её выборе сразу имела вес..."? Каким инструментом будете выбирать?
АлексЮстасу вне форума  
 
Автор темы   Непрочитано 22.06.2010, 17:36
#16
Филипп


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


Я видимо не очень понял как пользоваться global width.
Если я правильно понял, то global width устанавливает ширину линии после того, как я её начертил. Т.е. в любом случае, она чертится как тонкая линия. Чтобы её сделать утолщённой, нужно после того как её начертил, заходить в свойства и устанавливать нужное значение.Мне же надо, чтобы при выборе линии из окна "тип линии", она сразу чертилась утолщенной.
ЗЫ. Дло в том, что я только 1 месяц работаю в Автокаде. После 9-ти лет работы в КОМПАСе, немного тяжело сразу перестроить мозг на другую логику :-)
Филипп вне форума  
 
Непрочитано 22.06.2010, 17:46
#17
АлексЮстасу

топограф, технолог
 
Блог
 
Регистрация: 24.05.2009
Москва
Сообщений: 3,031


Цитата:
Сообщение от Филипп Посмотреть сообщение
Если я правильно понял, то global width устанавливает ширину линии после того, как я её начертил. Т.е. в любом случае, она чертится как тонкая линия. Чтобы её сделать утолщённой, нужно после того как её начертил, заходить в свойства и устанавливать нужное значение.Мне же надо, чтобы при выборе линии из окна "тип линии", она сразу чертилась утолщенной.
Окно "тип линии" отвечает только за тип линии, и толщину не задаст никак.
Параметры линии (блока, текста и т.п.) для черчения можно задать в Tool Palettes (панели инструментов). В основе ее лежат макросы, которыми можно управлять самим. Там можно задать цвет, слой, толщину и т.п. Но я не знаю, как в макросе описать нужную global width. Это лучше спросить у сведущих людей. (А я подсмотрю)
АлексЮстасу вне форума  
 
Непрочитано 22.06.2010, 18:07
#18
Profan


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


Ширина сегмента задается для полилинии.
Profan вне форума  
 
Непрочитано 23.06.2010, 00:41
#19
АлексЮстасу

топограф, технолог
 
Блог
 
Регистрация: 24.05.2009
Москва
Сообщений: 3,031


Цитата:
Сообщение от Profan Посмотреть сообщение
Ширина сегмента задается для полилинии.
Да, точно, ширину можно задать только полилиниям, и только двумерным.
Я исходил из того, что электрокабель или трубопровод или т.п. странно было бы чертить множествами отрезков.
АлексЮстасу вне форума  
 
Автор темы   Непрочитано 24.06.2010, 13:59 вдогонку
#20
Филипп


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


Я перерыл весь форум но не нашёл описания, как создаётся волнистый тип линии "кабельна линия связи подводная". (см вложение).
Точнее говоря тема создания волнистой линии есть, но не понятно как она создавалась. Начал читать хэлп по F1, но там конкретных примеров нет.
Будте так любезны, подскажите где можно почерпнуть информацию о создании такого типа линии.

С первым типом волнистой линии разобрался :-)
А вот вторую пока не осилил :-(
Вложения
Тип файла: dwg
DWG 2007
lin.dwg (65.8 Кб, 1778 просмотров)

Последний раз редактировалось Филипп, 24.06.2010 в 17:18.
Филипп вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > AutoCAD > Создание нового типа линии (или MKLTYPE не работает)

Размещение рекламы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Несплошные линии, X-refы и... задача Vova AutoCAD 6 20.04.2018 16:14
Сейсмозащита и сейсмоизоляция существующих, построенных зд. IANationalInformAgentstvo Прочее. Архитектура и строительство 216 20.01.2015 16:51
Как сгладить 2 линии. Или как сгладить только часть линии. Димас AutoCAD 3 14.03.2006 08:28
Создание surface из сплайна или полилинии WinDer AutoCAD 2 02.02.2006 10:17
lisp : проверка наличия типа линии в файле Кулик Алексей aka kpblc LISP 4 21.06.2005 08:04