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

Вернуться   Форум DWG.RU > Программное обеспечение > AutoCAD > масштабирование пунктирных линий

масштабирование пунктирных линий

Ответ
Поиск в этой теме
Непрочитано 07.07.2008, 11:50
масштабирование пунктирных линий
Marianna
 
Landscape
 
Moscow
Регистрация: 17.12.2006
Сообщений: 23

Подскажите пожалуйста, никак не пойму как масштабировать линии. Например, есть в чертеже зигзаг и пунктир. Выставляю global scale factor - зигзаг - подходящий масштаб, а пунктирный - не подходящий. Выбираю пунктирную линию выставляю current object scale, но ничего не изменяется. Выбираю пунктирную линию выставляю global scale - меняются все масштабы линий. Как же это правильно делать?
Просмотров: 23844
 
Непрочитано 08.07.2008, 08:33
#21
PL


 
Регистрация: 23.11.2006
California
Сообщений: 4,750


Цитата:
Сообщение от Vova Посмотреть сообщение
http://dwg.ru/art/11 в конце:
2.Выставьте Ltscale в значение 1 (а не 100, как описано в п.1). Psltscale также сделайте равной 1. Теперь в пространстве листа линии будут отображаться в соответствии с масштабами видовых экранов. Это будет видно в пространстве листа. Но в модели все линии будут видны как сплошные. Поскольку работа над чертежом ведется в модели, в этом случае приходится маневрировать, а именно, открывая модель следует выставить Ltscale в значение масштаба чертежа. Переходя в лист следует придать переменной Ltscale значение 1. Собственно, этот переход можно автоматизировать, но это не есть тема данной статьи.
Vova, не поделишься ли кодом с реактором который бы отлавливал изменение tilemode и выставлял в листе ltscale=1, а при переходе в модель выставлял предыдущее значение? у меня 2004 автокад и я как раз работаю по схеме 2 и использую вот такои код для переключения из модели в лист и обратно:
(DEFUN C:tt()
(setvar "cmdecho" 0)
(setq tmd (getvar "tilemode"))
(if (= tmd 1)
(setq LTSC (getvar "ltscale"))
)
(COMMAND "SETVAR"
"TILEMODE"
(IF (ZEROP tmd)
1
0
)
)
(setq tmdd (getvar "tilemode"))
(if (= tmdd 0)
(setvar "ltscale" 1)
)
(if (= tmdd 1)
(setvar "ltscale" LTSC))
(command "regenall")
(setvar "cmdecho" 1)
(PRINC)
)
Может есть с реактором, а? У кого нибудь?

Последний раз редактировалось PL, 08.07.2008 в 08:46.
PL вне форума  
 
Непрочитано 10.07.2008, 08:59
#22
DonJad


 
Регистрация: 20.12.2005
Murmansk
Сообщений: 106


Хм... способ для не ленивых - писать свои линии. В описании линии все всегда в мм печтного листа.
Берешь гост, и просто забиваешь те типы линий которые тебе нужны.
(а если освоить работу с *.shp/*.shx и использовать примитивы в типе линий, то еще и кучу времени можно съэкономить)

Еще одно маленькое и оч для мя лично полезное открытие это свойство полилини LineTypeGenerate, по умолчании идет disable, включаешь enable и наслаждаешься корректной генерацией штриха в поли линии, в смысле без стяжек на вершинах.
DonJad вне форума  
 
Непрочитано 11.07.2008, 06:21
#23
Vova

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


Цитата:
Сообщение от PL Посмотреть сообщение
Vova, не поделишься ли кодом с реактором который бы отлавливал изменение tilemode и выставлял в листе ltscale=1, а при переходе в модель выставлял предыдущее значение?
А я как раз не этим способом работаю
Vova вне форума  
 
Непрочитано 11.07.2008, 07:55
#24
Кулик Алексей aka kpblc
Moderator

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


Вообще-то неясно, зачем выставлять ltscale. Может, celtscale?
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 11.07.2008, 08:51
#25
ShaggyDoc

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


Вообще-то у Autodesk с отображением линий недоработки (и с другим, например с масштабированием размеров). Чтобы добиться одинакового и всегда правильного отображения, пользователю приходится всякие манипуляции проделывать - в зависимости от того, где находишься - на Model, на Layouts. А должно быть просто - где бы ни провел линию, она всегда и везде должна отображаться правильно. И, для гурманов, возможность изменения масштабов по вкусу и назначению.

Здесь претензии к AutoCAD правильные, тем более, что в других системах с этим проблем вообще нет, да и в AutoCAD сделать авторам было бы очень легко.

Кое-что начали исправлять с введением аннотативности, но это когда спохватились. Да и в предыдущих версиях люди работают.

Пока что здесь приходится реактором делать. Вот для размеров установку DIMSCALE пришлось сделать через реактор, чтобы они всегда, независимо от способа работы, проставлялись правильно. Текст здесь не привожу - есть специфичные функции. Аналог можно сделать и для любых линейных команд, но реакторы не всегда надежны, да и объекты могут создаваться не только командами.
ShaggyDoc вне форума  
 
Непрочитано 11.07.2008, 09:09
#26
Кулик Алексей aka kpblc
Moderator

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


Ну, при создании объектов программными методами, по-моему, не так уж и сложно предусмотреть работу в определенном пространстве. Или я ошибаюсь?
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 11.07.2008, 09:59
#27
ShaggyDoc

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


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Ну, при создании объектов программными методами, по-моему, не так уж и сложно предусмотреть работу в определенном пространстве. Или я ошибаюсь?
Так то при программном. Там можно и правильный масштаб линий всегда автоматически выставлять. А можно не выставлять. И зависит-то от программиста, от того, как программа написана, а надо бы, чтобы не зависела. Шоб всегда путём было.

Да и у пользователя может оказаться рядом один отрезок, нарисованный "правильной" программой с "хорошим" масштабом, другой "неправильной" программой, а третий - "простой" командой. У всех будет разный вид, потом еще разное глобальное масштабирование наложится.
ShaggyDoc вне форума  
 
Непрочитано 11.07.2008, 10:06
#28
Кулик Алексей aka kpblc
Moderator

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


Цитата:
Сообщение от ShaggyDoc Посмотреть сообщение
<...> потом еще разное глобальное масштабирование наложится.
Во! Вот как раз та причина, по которой ltscale не следует дергать туда-обратно
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 11.07.2008, 10:08
#29
se8

GIS & CAD
 
Регистрация: 18.12.2007
Тула
Сообщений: 60
Отправить сообщение для se8 с помощью Skype™


Люди, кто-нибудь считал сколько процентов времени тратиться непосредственно на черчение? Стоит ли убыстрять процесс, который и так немного времени занимает?
se8 вне форума  
 
Непрочитано 11.07.2008, 10:10
#30
se8

GIS & CAD
 
Регистрация: 18.12.2007
Тула
Сообщений: 60
Отправить сообщение для se8 с помощью Skype™


Согласен, AutoCADовскими средствами свести ошибки проектирования к минимуму. Нужная штука Но убыстрять черчение?
se8 вне форума  
 
Непрочитано 11.07.2008, 10:43
#31
Хмурый


 
Регистрация: 29.10.2004
СПб
Сообщений: 16,379


время-деньги.

тема покатилась в offtop
Хмурый вне форума  
 
Непрочитано 11.07.2008, 14:21
#32
Krieger

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


Цитата:
Сообщение от PL Посмотреть сообщение
Vova, не поделишься ли кодом с реактором который бы отлавливал изменение tilemode и выставлял в листе ltscale=1, а при переходе в модель выставлял предыдущее значение? у меня 2004 автокад и я как раз работаю по схеме 2 и использую вот такои код для переключения из модели в лист и обратно:

Может есть с реактором, а? У кого нибудь?
Лови:
Код:
[Выделить все]
(setq *vlr-sys* (vlr-sysvar-reactor nil '((:VLR-sysVarChanged . cmd-sys)))) 
(defun cmd-sys (react sysvarname) 
  (cond ((and 
    (= (car sysvarname) "TILEMODE") 
    (cadr sysvarname) 
    (= (getvar "TILEMODE") 0) 
    (not *OLD_LTSCALE*) 
    (not *OLD_PSLTSCALE*) 
    )  ;_ЛИСТ 
    (setq *OLD_LTSCALE* (getvar "LTSCALE")) 
    (setq *OLD_PSLTSCALE* (getvar "CELTSCALE")) 
    (setvar "LTSCALE" 1) 
    (setvar "CELTSCALE" 1) 
   ) 
   ((and 
    (= (car sysvarname) "TILEMODE") 
    (= (getvar "TILEMODE") 1) 
    (cadr sysvarname) 
    *OLD_LTSCALE* 
    *OLD_PSLTSCALE* 
    )  ;_МОДЕЛЬ 
    (setvar "LTSCALE" *OLD_LTSCALE*) 
    (setvar "CELTSCALE" *OLD_PSLTSCALE*) 
    (setq *OLD_LTSCALE* nil) 
    (setq *OLD_PSLTSCALE* nil) 
    (princ " MODEL ") 
   ) 
   (t nil)))
__________________
Делай хорошо, плохо само получится.
Krieger вне форума  
 
Непрочитано 11.07.2008, 16:29
#33
Vova

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


Цитата:
Сообщение от se8 Посмотреть сообщение
Люди, кто-нибудь считал сколько процентов времени тратиться непосредственно на черчение? Стоит ли убыстрять процесс, который и так немного времени занимает?
Посмотри, как называется раздел где мы сейчас находимся. Правильно, AUTOCAD. Здесь сосредоточено все для ускорения или облегчения процесса черчения. Даже если он (процесс) занимает всего ничего по сравнению с мыслительной инженерной деятельностью
Vova вне форума  
 
Непрочитано 12.07.2008, 04:01
#34
PL


 
Регистрация: 23.11.2006
California
Сообщений: 4,750


Цитата:
Сообщение от Krieger Посмотреть сообщение
Лови:
Большое спасибо. Работает великолепно! Бью челом. То что доктор прописал. Всех благ.
PL вне форума  
 
Непрочитано 12.07.2008, 19:31
#35
Red Nova

ՃԱՐՏԱՐԱԳԵՏ, տ.գ.թ.
 
Регистрация: 23.10.2007
Торонто
Сообщений: 1,990
Отправить сообщение для Red Nova с помощью Skype™


se8,
Цитата:
Люди, кто-нибудь считал сколько процентов времени тратиться непосредственно на черчение? Стоит ли убыстрять процесс, который и так немного времени занимает?
Ну ты блин даешь.
Есть люди у которых 100 процентов работы заключается в черчении. Я к примеру делаю некий проект за 4 часа, рядом сидит коллега, который делает то же за два дня. Дальше продолжать?

Да простят меня модераторы за офф топ, не задержался.
__________________
Блог
Red Nova вне форума  
 
Непрочитано 30.07.2008, 12:34
#36
discovery

дизайнер
 
Регистрация: 13.05.2008
Новосибирск
Сообщений: 136


Цитата:
Сообщение от Krieger Посмотреть сообщение

Если у вас AutoCAD2008 и выше.
celtscale (или в свойствах Linetype scale) всегда держите в 1, ну и соотвественно у всех примитивов он должен быть в единице.
psltscale -> 1
ltscale -> 1
msltscale -> 1
т.е. один раз установили и забыли.

При таком раскладе в пространстве модели тип линий будет отображаться соответственно аннотативному масштабу. Т.е. например если у вас в пространстве модели в натуральную величину начерчены план для 200-го масштаба и узел для 10-го, то работая с узлом установите аннотативный масштаб в 1:10, тогда типы линии узла будут прекрасно читаться, но правда не будут читаться для плана. Работая с планом переключаете аннотативный масштаб в 1:200 и теперь тип линий у плана читается, а узла нет. НО если перейти в пространство листа, читаться будет все, т.к. из-за переменной psltscale=1 тип линий масштабируется относительно видового экрана у которого разумеется установлен соответствующий масштаб.
Раньше аннотаций и переменной msltscale не было, поэтому были некоторые сложности с использованием переменной ltscale, которая домножается на масштаб видового экрана. Теперь этой проблемы нет. Ура товарищи.
При всем уважении к этой теоретической выкладке, у меня этот способ не работает.
То что получается при
psltscale -> 1
ltscale -> 1
msltscale -> 1
(celtscale, естественно, тоже ->1),
видно на рисунках 1 и 2.

Путем перебора возможных комбинаций значений системных переменных пришел к выводу, что одинаково отображаются пунктирные линии и в пр-ве модели и в пр-ве листа лишь при таком раскладе:
LTSCALE (он же, Global scale factor в окне Linetype Manager) =1,
CELTSCALE (он же, Current object scale, там же) =1,
PSLTSCALE (снимаем галку с "Use paper spase units for scaling") =0,
MSLTSCALE (Model Space Line Type Scale), через ком. строку =0,
Вот тогда действительно пунктирные линии одинаковы (См. рис.2 и 3).

Извиняюсь за оффтоп, но что хочется сказать. Идея с аннотативностью - отличная, но пунктирные (и им подобные) линии под определение аннотированных (или аннотатативных, как они называются в др. учебниках) не попадают, что и понятно, если вникнуть в смысл слова аннотация (лат. - примечание). Одно дело текст, размеры, выноски, - а при чем здесь линия, это не примечание. Странно, что еще штриховку посчитали аннотативным объектом. Но по свойствам пунктирные линии должны примыкать к этому семейству, т.е. должны быть определенного размера, независимо от масштаба чертежа. ИМХО, лучше бы назвали бы все эти объекты по-другому - внемасштабные или постоянноразмерные. Тогда, может, достаточно было бы ставить одну галочку в окне, задавая пунктирным линиям это свойство и всех-то делов, а так, творцы сего продукта такого нагромоздили, что с трудом поддается пониманию, и сейчас мы имеем то, что имеем, к сожалению.
Миниатюры
Нажмите на изображение для увеличения
Название: рис1_штрих.jpg
Просмотров: 173
Размер:	28.3 Кб
ID:	8813  Нажмите на изображение для увеличения
Название: рис2_штрих.jpg
Просмотров: 152
Размер:	21.1 Кб
ID:	8814  Нажмите на изображение для увеличения
Название: рис3_штрих.jpg
Просмотров: 140
Размер:	22.4 Кб
ID:	8815  Нажмите на изображение для увеличения
Название: рис4_штрих.jpg
Просмотров: 138
Размер:	24.0 Кб
ID:	8816  
discovery вне форума  
 
Непрочитано 30.07.2008, 13:59
#37
Krieger

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


> discovery
Ну во-первых, аннотативный масштаб никак не влияет на тип линии, так что твой оффтоп не по адресу. На масштаб типа линий влияют всего две переменные celtscale и ltscale, а psltscale и msltscale отвечают за их масштаб относительно видовых окон и масштаба аннотативности соотвественно. Т.е. не важно при каком аннотативном масштабе ты чертишь штриховые линии, важно при каком celtscale.

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

В-третьих, я не увидел у тебя видовых окон и разномасштабной работы. Если ты всегда работаешь в одном масштабе, то и не забивай себе голову, выстави соответствующий ltscale и все.

Смотри мои рисунки, я нарисовал в пространстве модели четыре одинаковых отрезка длиной 6000 ед. черт, с celtscale=1 и ltscale=1. Установил msltscale=1, чтобы масштаб типа линий отображался соотвественно аннотативному масштабу. На первом рисунке аннотат. масштаб установлен 1:20. На втором я поменял аннотат. масштаб на 1:50, сделал регенерацию и штрихи увеличились. Теперь перейдем в пространство листа (см.рис.3), установим psltscale=1, чтобы штрихи отрезков увеличивались пропорционально масштабу видовых окон. В пространстве листа я наделал много видовых экранов предполагая что все эти отрезки мне нужно выводить в разных масштабах, первый 1:10, второй 1:20, третий 1:30, четвертый 1:50. Как видно из рисунка размеры отрезков уменьшаются соответственно масштабу, а вот штрихи у всех отрезков одинаковые, хэть тресни. Ну и два видовых экрана вообще с масштабом "от фонаря", чтобы показать что для того чтобы правильно отобразить тип линии мне вообще-то не нужно забивать голову этими масштабами.
И не забываем делать регенерацию, иногда даже нужно сначала войти в видовой экран и сделать её там.
Миниатюры
Нажмите на изображение для увеличения
Название: Кадр_14.jpg
Просмотров: 210
Размер:	22.4 Кб
ID:	8824  Нажмите на изображение для увеличения
Название: Кадр_13.jpg
Просмотров: 187
Размер:	20.4 Кб
ID:	8825  Нажмите на изображение для увеличения
Название: Кадр_12.jpg
Просмотров: 204
Размер:	39.4 Кб
ID:	8826  
__________________
Делай хорошо, плохо само получится.
Krieger вне форума  
 
Непрочитано 30.07.2008, 16:34
#38
zina_f


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


приветствую всех!
разрешите поделиться опытом по обсуждаемой теме.
на заре работы в autocade (а было это в году 1991 и был это autocad 10) мне подсказали формулу вычисления ltscale
ltscale=масштаб печати/200 (напр.1:2500/200=12.5)
мы уже в 2008 году и я работаю с autocad 2008,а формула всё та же и не разу не возникало проблем с различными типами линий(я занимаюсь комп. картографией,где этот момент очень важен
zina_f вне форума  
 
Непрочитано 30.07.2008, 20:31
#39
Krieger

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


__________________
Делай хорошо, плохо само получится.
Krieger вне форума  
 
Непрочитано 30.07.2008, 20:40
#40
Vova

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


Интересно, для каких линий данная формула, для метрических или инчевых?
Vova вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > AutoCAD > масштабирование пунктирных линий



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема с подсчетом линий... Kostinok AutoCAD 32 26.12.2012 09:42
масштабирование линий при печати vitalik-petrov AutoCAD 5 16.05.2008 17:56
Проблема с типами линий (возможно масштабирование) Abramov AutoCAD 4 29.04.2008 17:19
как сделать масштабирование линий в Model идентично Layout sasha-zhuk AutoCAD 4 11.07.2007 05:40
Как изменять толщину линий и цвет линий для блоков? Highmax AutoCAD 1 08.03.2005 06:56