|
||
| Правила | Регистрация | Пользователи | Сообщения за день | | Поиск | | Справка по форуму | Файлообменник | |
|
Поиск в этой теме |
09.11.2006, 11:57 | #1 | |
Нужен лиспик по черчению бергштрихов(не для откосов)
Музыка,строительство(проектирование)
Москва
Регистрация: 25.05.2004
Сообщений: 40
|
||
Просмотров: 19538
|
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,848
|
Отрисовка из центра - это круто. Для приколу: найди центры представленых примитивов.
[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,381
|
Иван, зачем зацикливаться на каком-то мифическом "центре", тем более, не зная, что такое СПДС?
Не надо топографу ничего знать ни про какие центры. Думаешь первому пришла идея рисовать берг-штрихи программно? А делаются они именно так, как показал Zouss - используя разбивку примитива блоком. И ничего, вызывающего улыбку, в этом нет. Все дополнительные программы, в конце концов являются "имитациями" команд и их последовательностей. В реализациях могут быть нюансы - например, блочок штриха может создаваться динамически, а не браться из файла, размер штриха незачем запрашивать, так как он стандартный, не надо и расстояние. Фактически надо указать примитив и в какую сторону от него направлены штрихи. Расставленные автоматом берг-штрихи, как правило, не полностью удовлетворят топографа. Так лишние можно просто стереть. А чтобы в характерных точках склона (ярко выраженный хребет) непременно были штрихи, можно добиться небольшим совершенствованием программы, или отдельной маленькой программой для одиночных штрихов. Штрихи рисуются не "из центра", а по нормали к линиям. Если же не устраивает "имитация", можно поступить просто - изучить ObjectARX, создать свой объект "ГОРИЗОНТАЛЬ", который сам будет рисоваться со штрихами, надписями отметок, и от "центра". |
|||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,848
|
> 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,992
|
1. Про перпендикуляры
LISP. Построение перпендикуляров к любым линейным примитивам 2. Про бергштрихи Код:
|
|||
|
||||
Нач. отдела САПР Регистрация: 14.05.2004
Тюмень
Сообщений: 466
|
У меня есть такая программулька.
(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) надеюсь пригодится |
|||