|
||
| Правила | Регистрация | Пользователи | Сообщения за день | | Поиск | | Справка по форуму | Файлообменник | |
|
![]() |
Поиск в этой теме |
![]() |
#1 | |
Нужен лиспик по черчению бергштрихов(не для откосов)
Музыка,строительство(проектирование)
Москва
Регистрация: 25.05.2004
Сообщений: 40
|
||
Просмотров: 19865
|
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,426
|
Отрисовка из центра - это круто. Для приколу: найди центры представленых примитивов.
[ATTACH]1163065045.dwg[/ATTACH]
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Музыка,строительство(проектирование) Регистрация: 25.05.2004
Москва
Сообщений: 40
![]() |
Цитата:
![]() |
|||
![]() |
|
||||
Музыка,строительство(проектирование) Регистрация: 25.05.2004
Москва
Сообщений: 40
![]() |
Цитата:
![]() К сложным объектам,перпендикуляр к указанной точке заданной длины. |
|||
![]() |
|
||||
Регистрация: 14.03.2006
Сообщений: 863
|
на конкурс за звание примитивнейшей проги
Код:
изменение размера бергштрихов с помощью редактирования масштаба вставки блоков, изменение ориентации бергштрихов с помощью изменения знака масштаба вставки по оси Y (положительный/отрицательный/средний) [ATTACH]1163084034.dwg[/ATTACH] |
|||
![]() |
|
||||
Музыка,строительство(проектирование) Регистрация: 25.05.2004
Москва
Сообщений: 40
![]() |
Спасибо за отклик
![]() 1.Выделите объект(ы) 2.Укажите размер бергштриха 3.Укажите направление бергштриха И по итогу все горизонтали(в данном случае,просто Line) обзаводятся палочками той длины,которую я укажу и того направления,куда я тыкну.причем появиться они должны из центра этих линий. P/S А Ваш лисп-это имитация команды Меasure :wink: |
|||
![]() |
|
||||
YngIngKllr Регистрация: 29.03.2005
СПб
Сообщений: 12,968
|
Блин скачайте себе СПДС.
Там есть функция Сварка и работает она с плилиниями. Правда штрихи одинаковые но вам пойдеть Я думаю.
__________________
Работаю за еду. Working for food. Für Essen arbeiten. العمل من أجل الغذاء Працую за їжу. |
|||
![]() |
|
||||
Музыка,строительство(проектирование) Регистрация: 25.05.2004
Москва
Сообщений: 40
![]() |
Цитата:
|
|||
![]() |
|
||||
Thượng Tá Quân Đội Nhân Dân Việt Nam Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,372
|
Иван, зачем зацикливаться на каком-то мифическом "центре", тем более, не зная, что такое СПДС?
Не надо топографу ничего знать ни про какие центры. Думаешь первому пришла идея рисовать берг-штрихи программно? А делаются они именно так, как показал Zouss - используя разбивку примитива блоком. И ничего, вызывающего улыбку, в этом нет. Все дополнительные программы, в конце концов являются "имитациями" команд и их последовательностей. В реализациях могут быть нюансы - например, блочок штриха может создаваться динамически, а не браться из файла, размер штриха незачем запрашивать, так как он стандартный, не надо и расстояние. Фактически надо указать примитив и в какую сторону от него направлены штрихи. Расставленные автоматом берг-штрихи, как правило, не полностью удовлетворят топографа. Так лишние можно просто стереть. А чтобы в характерных точках склона (ярко выраженный хребет) непременно были штрихи, можно добиться небольшим совершенствованием программы, или отдельной маленькой программой для одиночных штрихов. Штрихи рисуются не "из центра", а по нормали к линиям. Если же не устраивает "имитация", можно поступить просто - изучить ObjectARX, создать свой объект "ГОРИЗОНТАЛЬ", который сам будет рисоваться со штрихами, надписями отметок, и от "центра". |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,426
|
> Krieger : достаточно давно была тема по поводу получения попиндикуляру к кривой от указанной точки, там вроде как было и лисповое решение.
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Музыка,строительство(проектирование) Регистрация: 25.05.2004
Москва
Сообщений: 40
![]() |
Я понимаю,что лисп-это всего навсего последовательность стандартных команд,только вот незадача-я не умею пока писать его. :cry: Вот и решил спросить,может есть у кого такой лиспик,не один же я занимаюсь вертикальной планировкой.
Насчет размера бергштриха я и не замарачиваюсь,можно и одной длины,например 0,5. Вообщем ситуэйшин такой.Имеем вариант 1,в идеале нужен вариант 3.Спрашивал я про 2(хотелось просто выделить все горизонтали,указать направление и размер и чтобы вар1 превратился в вар2 ![]() Если все же кто-нить сможет написать (ну очень простой лиспик со слов некоторых участников :wink: )буду очень признателен. [ATTACH]1163145442.dwg[/ATTACH] |
|||
![]() |
|
||||
YngIngKllr Регистрация: 29.03.2005
СПб
Сообщений: 12,968
|
Черт его знает, что у вас там в файле, у меня открылась лишь одна линия.
Из центра чет не получается, а если подойдут перпендикуляры к кривой то можно и написать.
__________________
Работаю за еду. Working for food. Für Essen arbeiten. العمل من أجل الغذاء Працую за їжу. |
|||
![]() |
|
||||
Музыка,строительство(проектирование) Регистрация: 25.05.2004
Москва
Сообщений: 40
![]() |
Цитата:
![]() |
|||
![]() |
|
||||
Инженер LISP Регистрация: 11.05.2005
Минск
Сообщений: 6,996
|
1. Про перпендикуляры
LISP. Построение перпендикуляров к любым линейным примитивам 2. Про бергштрихи Код:
|
|||
![]() |
|
||||
Разработчик САПР Регистрация: 14.05.2004
Тюмень
Сообщений: 467
![]() |
У меня есть такая программулька.
(defun c:sht( / ang abas sel obj pnt pnt1 pnt2 flg snp cmd scl) (setq cmd (getvar "CMDECHO")) (setvar "CMDECHO" 0) (command "_.undo" "_begin") (setq snp (getvar "OSMODE")) (setvar "OSMODE" 16417) (setq abas (getvar "ANGBASE")) (setq scl (getscl)) (setq obj (entsel "\nУкажи местоположение штриха на линии : ")) (setq pnt (cdr obj)) (setq obj (car obj)) (if (/= (cdr (assoc '0 (entget obj))) "LINE") (quit)) (setq ang (angle (cdr (assoc '10 (entget obj))) (cdr (assoc '11 (entget obj))))) (if (and (> ang 1.5708) (< ang 4.71239)) (setq flg 1) (setq flg 0) ) (setq pnt1 (polar (car pnt) (+ ang 1.5708) (* 1.0 scl))) (setq pnt (inters (car pnt) pnt1 (cdr (assoc '10 (entget obj))) (cdr (assoc '11 (entget obj))) nil)) (setvar "ANGBASE" ang) (setq sel (getangle pnt "\nС какой стороны ставить текст?")) (if (= flg 0) (if (and (> sel 0) (< sel 3.14)) (setq pnt1 (polar pnt (+ ang 1.5708) (* 1.0 scl))) (setq pnt1 (polar pnt (- ang 1.5708) (* 4.0 scl))) ) (if (and (> sel 0) (< sel 3.14)) (setq pnt1 (polar pnt (+ ang 1.5708) (* 4.0 scl))) (setq pnt1 (polar pnt (- ang 1.5708) (* 1.0 scl))) ) ) (if (and (> sel 0) (< sel 3.14)) (setq pnt2 (polar pnt (- ang 1.5708) (* 2.0 scl))) (setq pnt2 (polar pnt (+ ang 1.5708) (* 2.0 scl))) ) (setq sel (getstring T "\nТекст : ")) (if (= flg 0) ; (command "_.text" "_j" "_c" pnt1 (* 3.0 scl) 0.0 sel) ; (command "_.text" "_j" "_c" pnt1 (* 3.0 scl) 180.0 sel) (command "_.text" "_j" "_c" pnt1 2000 0.0 sel) (command "_.text" "_j" "_c" pnt1 2000 180.0 sel) ) (command "_.line" pnt pnt2 (command)) (command "_.undo" "_end") (setvar "ANGBASE" abas) (setvar "CMDECHO" cmd) (setvar "OSMODE" snp) (princ) ) (princ) надеюсь пригодится |
|||
![]() |
|
||||
Музыка,строительство(проектирование) Регистрация: 25.05.2004
Москва
Сообщений: 40
![]() |
2VVA Низкий поклон те
![]() А мона попросить дописать ![]() Чтобы наряду с бергштрихом под горизонталью появлялся DText со всеми своими функциями акромя угла наклона,так как он уже задан.Значения по умолчанию-стиль как и обычно,высота - 1,25 , текст-99. Чтобы получилось,как в 3 варианте,только с подписанными горизонтальками 99. Буду очень признателен,если не затруднит. :roll: 2Alxd Чет то ли я не понимаю,толи не фурычит ![]() |
|||
![]() |
|
||||
Музыка,строительство(проектирование) Регистрация: 25.05.2004
Москва
Сообщений: 40
![]() |
2VVA Спасибо,только немного не то.Хотелось бы,чтобы Dtext остался со всеми своими функциями,кроме угла поворота текста.Т.е.выбор стиля,высоту и сам текст надо было подтверждать или вводить другое значение.
У меня после загрузки выдает еще Command: ; error: extra right paren on input И текст повернут вверх ногами :cry: |
|||
![]() |
|
||||
Музыка,строительство(проектирование) Регистрация: 25.05.2004
Москва
Сообщений: 40
![]() |
Цитата:
![]() bad argument type: numberp: nil Т.е. пару горизонталек подпишет,а на очередной выдает. Возможно это файл кривой или от 3D сносит его мальца :cry: Может в курсе,что это ознаечает,чего эму не так? |
|||
![]() |
|
||||
Пенсионер-проектировщик :-) Регистрация: 23.11.2006
Иркутск
Сообщений: 7
|
Очень понравилась программка.
А можно её усовершенствовать? Дополнить рисование бергштрихов почаще и разной длины и толщины? Надо: допустим большой штрих (например 12 мм) тонкий - на расстоянии (например 5 мм) короткий штрих (треть от длинного 4 мм) толщиной вдвое больше тонкого и т.д... Конечно длины и расстояния между штрихами желательно спросить у проектировщика... Тогда чудная была бы программка для отрисовки заготовки откосов. Если бы она на разных слоях делала бы толстые и короткие и длинные и тонкие - вообще бы круто было бы!
__________________
Всего наилучшего, 73! |
|||
![]() |
|
||||
Музыка,строительство(проектирование) Регистрация: 25.05.2004
Москва
Сообщений: 40
![]() |
Цитата:
Для отрисовки откосов есть ряд афигенных програмулек :wink: Пройдись поиском,откосы в лет рисуют,надо только указать 2 линии и растояние между бергштрихами и откос готов ![]() |
|||
![]() |
|
||||
Пенсионер-проектировщик :-) Регистрация: 23.11.2006
Иркутск
Сообщений: 7
|
Цитата:
Вернее нам так говорили. В ГОСТе - от трети до половины. И ещё. Для полезного ископаемого необходимо два коротких штриха подряд!
__________________
Всего наилучшего, 73! |
|||
![]() |
|
||||
Музыка,строительство(проектирование) Регистрация: 25.05.2004
Москва
Сообщений: 40
![]() |
Цитата:
![]() ![]() |
|||
![]() |
|
||||
Инженер LISP Регистрация: 11.05.2005
Минск
Сообщений: 6,996
|
|
|||
![]() |
|
||||
Музыка,строительство(проектирование) Регистрация: 25.05.2004
Москва
Сообщений: 40
![]() |
[/quote]Есть. Это точно. Но все они рисуют без учёта толщины и длина короткого половина длинной, а у нас принято треть...[/quote]
Треть?ХЗ,у нас половина ![]() |
|||
![]() |
|
||||
Пенсионер-проектировщик :-) Регистрация: 23.11.2006
Иркутск
Сообщений: 7
|
Цитата:
__________________
Всего наилучшего, 73! |
|||
![]() |
|
||||
Регистрация: 17.11.2006
СПб
Сообщений: 10
|
Иван, думаешь меня там не было? Было, даж выгнали.
Что делать тем, у кого 2007 ACAD? Alxdike ведь не запустится. Настройки "коротких" бергштрихов тоже могут быть разными (о чем сказано в соседней ветке). И чо делать? Как быть, если горизонтали отрисованы не предусмотренными типами примитивов, да еще и в непонятных системах координат (сам тут недавно пробовал сделать для отрезков, легких полилиний, 3д-полилиний и сплайнов одновременно, помер делавши)? Вот так ![]() |
|||
![]() |
|
||||
Музыка,строительство(проектирование) Регистрация: 25.05.2004
Москва
Сообщений: 40
![]() |
Цитата:
![]() ![]() |
|||
![]() |
|
||||
Музыка,строительство(проектирование) Регистрация: 25.05.2004
Москва
Сообщений: 40
![]() |
Цитата:
![]() |
|||
![]() |
|
||||
геологоразведка, строительство Регистрация: 14.10.2003
Магадан
Сообщений: 311
|
На мой взгляд, бергштрихи лучше отрисовывать по линии, которую задает пользователь и которая пересекает горизонтали, имеющие отметки Z, тогда направление бергштрихов будет определено программно, ну а лишние (как сказал ShaggyDoc) несложно и стереть, хотя можно и задать кратность отрисовки бергштрихов, например, через 5 м.
Естественно, бергштрихи должны быть перпендикулярны горизонталям в месте пересечения. Для одиночных горизонталей направление задается линией бергштрихов, задаваемой пользователем. Так я и поступил в программе CHELEV. Хотя ShaggyDoc прав, лучше их отрисовывать блоками, а не линиями, как у меня.
__________________
Лень - великий двигатель прогресса! |
|||
![]() |
|
||||
Thượng Tá Quân Đội Nhân Dân Việt Nam Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,372
|
Давайте не сваливать в одну кучу бергштрихи не для откосов и возможность использования такой технологии для откосов. Но, если уж оказалось в одном месте, да в контексте обсуждения программ, то:
1. Бергштрихи можно делать по разному. Зависит от задачи да и от характера рельефа. На ярко выраженном рельефе есть специфика - берг-штрихи должны быть по "хребту". На неявном рельефе - через какое-то охватываемое глазом расстояние. Если слишком часто, например, через 5 м, то горизональ уже можно спутать с обозначением забора. Особенно если это проектная горизонталь, идущая по прямой. Программист может не предугадать все потребности пользователей, поэтому основные параметры должны быть не зашиты в программу, а передаваться аргументами. Конечную "команду", прописанную в макрос меню пользователь должен иметь возможность "создать" сам. Например, имеем (условно) функцию с аргументами (горизонталь толщина высота_берг-штриха шаг_штрихов) В меню может быть несколько вариантов: Код:
Даже "не шибко смышленая тетка" может наплодить нужное ей количество вариантов в меню. 2. С откосами сложнее. Есть много вариантов, в том числе специфичных для конкретной отрасли. И в стандартной топографии есть откосы укрепленные и неукрепленные, земляные, с плитами, с подпорными стенками. А также для мелкомасштабных планов, где не делаются длинные и короткие штрихи, а длина штриха условна и не отражает реальную высоту. Но и тут желателен подобный подход - функция с аргументами, доступными для изменения пользователем. Если вопрос, например, в длине короткого штриха, то ее надо задать в виде одного из аргументов, например 0.5 - половина склона, 0.33 - треть, а если nil - то 2 мм на бумаге по топографическому стандарту. |
|||
![]() |
|
||||
Регистрация: 20.03.2008
Сообщений: 2,680
|
Подскажите пожалуйста, как сделать так, чтоб выбранная полилиния делилась на равные куски заданной длины (например 200мм) штрихами, но не совсем берг-, а как бы двойными берг-)), то есть чтоб этот штришок пересекал полилинию в своем центре, был перпендикулярен полилинии и был длиной 4 мм и со свойствами линии по слою.....Облазил все что мог, пытался какие-то лиспы менять, но плоховат я еще в этом деле....
|
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,426
|
Либо _.divide с использованием блоков; либо тип линии создавай свой. Первый вариант, наверное, более удобен будет.
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Регистрация: 20.03.2008
Сообщений: 2,680
|
По #42: Больше всего подошла команда _measure с использованием блока, созданного перетаскиванием отрезка в 4 мм правой кнопкой мыши за центр, выбором функции <Вставить как блок>, выбором интервала <200> и ориентировкой блока по полилинии (запросы при выполнении команды). А еще лучше оказался макрос
^C^C_measure;\_b;piket;;200;_xplode;_p;;;; он сразу разбивает полилинию блоком с именем piket через 200мм и взрывает этот блок (если созданный по описанному выше алгоритму блок назвать piket, он вставится на свои места), причем разметка начнется с того конца полилинии, ближе к которому кликнуть при запросе программы <Выберите объект для разметки>. Очень полезно для геодезистов при расстановке пикетов через определенное расстояние. Если кто что не понял - могу пояснить более подробно, пишите сюда. |
|||
![]() |
|
||||
Регистрация: 28.07.2008
Мурманск
Сообщений: 208
![]() |
По поводу бергштрихов и пикетов можно не изобретать велосипеда и пользоваться Civil 3D. Там вся работа с поверхностями и трассами очень классно реализована.
Для расстановки бергшрихов можно использовать метку горизонтали из отрезка нужной длины. Будет не только считаться и рисоваться автоматом и в нужном направлении, но и динамически обновляться при изменении поверхности (добавление/удаление съемочных пикетов, перестановка ребер TIN) Про трассы и профиля не буду говорить даже. Экономия времени бешеная просто. Offtop: Хотя это немного и не про программирование
__________________
Мне не нужно сделать за меня. Если я что-то ищу, то пути решения. |
|||
![]() |
|
||||
Регистрация: 20.03.2008
Сообщений: 2,680
|
Offtop: Kirill_Ja, во-первых, Civil есть не у всех, и не у всех когда-то будет. Во-вторых, в нем работать еще нужно научиться, а если человеку нужны только бергштрихи, то окупится этот цивил с обучением еще ой как не скоро. В-третьих, попробуй-ка согласуй у нас то, что выдаст цивил - не всегда удастся, придираются, тут мол профиль не по ГОСТ, а тут вот так, а тут эдак. Придется переделывать/перенастраивать, проще дёрнуть с форума маленький лиспик и всего делов
![]() Я думаю, так рассуждает добрая часть из работающих в AutoCAD, и многих можно понять. |
|||
![]() |