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

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

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

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

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

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

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

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


Попробуй нечто типа
Код:
[Выделить все]
*электрокабель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,074


Цитата:
Сообщение от Кулик Алексей 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
С.-Петербург
Сообщений: 40,432


АлексЮстасу, в исходном описании типа линии использовалось именно "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,074


Цитата:
Сообщение от Кулик Алексей 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,074


Цитата:
Сообщение от Филипп Посмотреть сообщение
*электрокабель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
С.-Петербург
Сообщений: 40,432


Наверняка проблема кроется в 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,074


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

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

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

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


Цитата:
Сообщение от АлексЮстасу Посмотреть сообщение
Но у Автокада первый отрезок в любом случае почему-то переменной длины.
Тип линии должен начинаться с точки или штриха. Первый и последний сегмент Автокадом растягиваются/сжимаются так, чтобы начало и конец штрихов попадали в начало и конец отрезка. Повлиять на первый и конечный сегмент можно только изменением длины отрезка.
Анализируя типы линий, я обратил внимание, что все Автодесковкие линии из файлов 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,074


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

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


Цитата:
Сообщение от АлексЮстасу Посмотреть сообщение
Это объяснимо при отключенной генерации (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,074


Цитата:
Сообщение от Филипп Посмотреть сообщение
Для полного счастья, можете мне объяснить или направить меня по ссылке, где говорится о том, как задать вес и цвет создаваемой линии? Мне необходимо, чтобы линия при её выборе сразу имела вес =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,074


Цитата:
Сообщение от Филипп Посмотреть сообщение
Если я правильно понял, то 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,074


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


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


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

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

Последний раз редактировалось Филипп, 24.06.2010 в 17:18.
Филипп вне форума  
 
Непрочитано 25.06.2010, 01:58
#21
АлексЮстасу

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


Цитата:
Сообщение от Филипп Посмотреть сообщение
Точнее говоря тема создания волнистой линии есть, но не понятно как она создавалась. Начал читать хэлп по F1, но там конкретных примеров нет.
Будте так любезны, подскажите где можно почерпнуть информацию о создании такого типа линии.

С первым типом волнистой линии разобрался :-)
А вот вторую пока не осилил :-(
Пока ничего не придумал, кроме использования форм: создать форму в ползигзага с учетом пробелов, и чередовать ее то вверху, то внизу.
Ясно, что в таком случае трудно или невозможно обеспечить нужную длину штрихов и пробелов (приведенную в файле). Можно, конечно, создать столько форм, сколько штрихов укладывается до полной их повторяемости.
Найти какую-то золотую середину.
Но с типом линии, состоящии из одних форм, будут проблемы в начале и в конце...

А какой документ определяет эти условные знаки? В топографических такого условного знака нет.
АлексЮстасу вне форума  
 
Автор темы   Непрочитано 25.06.2010, 09:13
#22
Филипп


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


Да, создал шейп, только не в ползигзага. Пришлось создать в 4 зигзага, т.к. волна повторяется именно через 4 зигзага. После создания обнаружил, что при начертании этой волны получается, что она начинается с примой неконтролируемой по длине линии (от 3,6 мм до 1 мм). В идеале, хочется научится описывать сложные формы вручную, а не с помощью mkshape -> _shape
Интересно, можно сделать так, чтобы волнистая линия начиналась с волны или хотябы с отрезка длиной 0.0001?
см вложение
Миниатюры
Нажмите на изображение для увеличения
Название: voln13.jpg
Просмотров: 177
Размер:	14.9 Кб
ID:	41350  
Филипп вне форума  
 
Непрочитано 25.06.2010, 11:26
1 | #23
PSG


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


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


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


Я сделал немного подругому.
После создания всех необходимых типов линий, я создал палитру, куда и вынес эти линии. А вот на палитре (в свойстве каждой линии) я и присвоил им необходимые цвета, слои и прочую атрибутику. Получилось шикарно.
Всем спасибо.
Филипп вне форума  
 
Непрочитано 25.06.2010, 12:43
1 | #25
АлексЮстасу

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


Цитата:
Сообщение от Филипп Посмотреть сообщение
Да, создал шейп, только не в ползигзага. Пришлось создать в 4 зигзага, т.к. волна повторяется именно через 4 зигзага. После создания обнаружил, что при начертании этой волны получается, что она начинается с примой неконтролируемой по длине линии (от 3,6 мм до 1 мм). В идеале, хочется научится описывать сложные формы вручную, а не с помощью mkshape -> _shape
Интересно, можно сделать так, чтобы волнистая линия начиналась с волны или хотябы с отрезка длиной 0.0001?
см вложение
А что в твоем описании стиля стоит первым? Допустимо ведь даже не 0.0001, а просто 0.
И как выглядит полилиния, если ей сделать Enabled (генерация -> да)?

Вручную формы: http://forum.dwg.ru/showthread.php?t=30924
А также см. приложенный файл - откуда взял не помню.

PSG - к сожалению в слоях нельзя задать толщину линий, а только вес (до 2008, а дальше - не знаю). А для типов линий с формами вес дает плохой результат.
Вложения
Тип файла: rar Создание файлов описаний форм - Понятия.rar (16.0 Кб, 107 просмотров)
АлексЮстасу вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > AutoCAD > Создание нового типа линии (или MKLTYPE не работает)

Реклама i
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Несплошные линии, 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