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

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

Быстрый перенос высотных отметок в исполнительных чертежах

Ответ
Поиск в этой теме
Непрочитано 15.04.2014, 15:15 #1
Быстрый перенос высотных отметок в исполнительных чертежах
Daniil.T
 
Регистрация: 13.03.2014
Сообщений: 12

Здравствуйте.

Время от времени сталкиваюсь с оформлением исполнительной документации, в частности с оформлением поперечных профилей по пикетам. Работаю в Civil 3D и существует возможность пользоваться стандартными сечениями, которые отстраивает Civil, но они не удовлетворяют требованиям заказчика. Поэтому приходится вручную пополнять проектные профиля, и так же вручную сносить высотные отметки. Работа не сложная, но очень трудоемкая. Я уже упростил себе задачу тем, что нахожу "0" для каждого поперечника и отстраиваю заранее настроенными размерами высоты. И все равно это долго, поэтому появилась такая мысль: а что, если написать макрос или программу или еще что-то, которая при указывании необходимых точек, сама будет отстраивать эти самые размеры. Наверно объяснил немного запутанно, поэтому расскажу как вижу желаемый результат я:
1) Указываем необходимые точки, которые необходимо "снести"
2) Указываем "0"
3) Указываем уровень, на который будут "садиться" отметки.

Прикладываю скриншот, в котором показал "что - куда"

Заранее спасибо за помощь и, возможно, энтузиазм


Последний раз редактировалось Кулик Алексей aka kpblc, 15.04.2014 в 16:06.
Просмотров: 7736
 
Непрочитано 15.04.2014, 15:20
#2
ciril

САПР
 
Регистрация: 29.09.2011
СПб
Сообщений: 283


Еще раз: необходимо подписывать отметки в подпрофильной сетке или отметки на выносках? Вертикальный масштаб какой?
ciril вне форума  
 
Автор темы   Непрочитано 15.04.2014, 15:22
#3
Daniil.T


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


ciril, В сетке. На выносках проектные отметки, они, грубо говоря, не важны.
Daniil.T вне форума  
 
Непрочитано 15.04.2014, 15:26
#4
ciril

САПР
 
Регистрация: 29.09.2011
СПб
Сообщений: 283


Сколько расстояние от текста отметок до нижней линии графы и высота текста? Засечка в графе расстояние уже нарисована или нужно чертить? Если нужно чертить, то сколько высота графы? И на какой слой все это?
ciril вне форума  
 
Автор темы   Непрочитано 15.04.2014, 15:30
#5
Daniil.T


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


ciril, Засечку черчу сам, высота графы - 5 ед. отступ - 2 ед. слой не важен.

----- добавлено через ~6 мин. -----
ciril, высота текста - 2
Daniil.T вне форума  
 
Непрочитано 15.04.2014, 16:29
#6
ciril

САПР
 
Регистрация: 29.09.2011
СПб
Сообщений: 283


Код:
[Выделить все]
 (defun c:снестиотметки  (/ x00 x01 x02 x03 x04)
  (initget "100 200")
  (setq x00 (/ 1000.0 (atoi (getkword "\nВведите вертикальный маштаб профиля [100 200]: "))))
  (initget 1)
  (setq x01 (cadr (getpoint "\nУкажите верхнюю линию подпрофильной сетки...")))
  (initget 1)
  (foreach auxi  '(("верха" . 40.0) ("низа" . 60.0))
    (while (and (setq x02 (progn (initget "Завершить")
                                 (getpoint (strcat "\nУкажите отметку " (car auxi) " насыпи или <Завершить>... "))))
                (not (eq "Завершить" x02)))
      (setq x03 (cadr x02)
            x02 (list 10 (car x02) (- x01 (cdr auxi)) 0.0))
      (or x04 (progn (initget 1) (setq x04 (- (* x00 (getreal "\nВведите фактическую отметку указанной точки: ")) x03))))
      (entmakex (append '((0 . "TEXT")
                          (100 . "AcDbEntity")
                          (100 . "AcDbText")
                          (40 . 2.0)
                          (50 . 1.5708)
                          (51 . 0.0)
                          (71 . 0)
                          (72 . 0)
                          (73 . 2))
                        (list (cons 1 (rtos (/ (+ x03 x04) x00) 2 2))
                              (mapcar '- x02 '(0 -1.0 -2.0 0.0))
                              (mapcar '- x02 '(-1 0.0 -2.0 0.0)))))
      (entmakex (append '((0 . "LINE") (100 . "AcDbEntity") (100 . "AcDbLine"))
                        (list x02 (mapcar '- x02 '(-1 0.0 5.0 0.0)))))))
  (princ))
(princ "\nПодписывает отметки указанных точек в подпрофильной сетке. Вызывается СНЕСТИОТМЕТКИ")
Пробуй. Слой, тип линий, стиль текста, вес линии - текущие.
ciril вне форума  
 
Автор темы   Непрочитано 15.04.2014, 17:07
#7
Daniil.T


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


ciril, все очень круто, но есть проблема с вставкой, т.е указываешь верхнюю линию, но в итоге вставляется текст ниже чем нужно. Дело в том, что сама подпрофильная сетка может быть не стандартна, и расстояния между строками "низ" и "верх" не постоянны... постоянна только высота строки. А так, повторюсь, все - шикарно)
__________________
"Любая правда - только грань истины"
Daniil.T вне форума  
 
Непрочитано 15.04.2014, 17:15
1 | #8
ciril

САПР
 
Регистрация: 29.09.2011
СПб
Сообщений: 283


Код:
[Выделить все]
 (defun c:снестиотметки  (/ x00 x01 x02 x03 x04)
  (initget "100 200")
  (setq x00 (/ 1000.0 (atoi (getkword "\nВведите вертикальный маштаб профиля [100 200]: "))))
  (foreach auxi  '("верха" "низа")
    (initget 1)
    (setq x01 (cadr
                (getpoint (strcat "\nУкажите нижнюю линию графы отметок " auxi " насыпи..."))))
    (while (and (setq x02 (progn (initget "Завершить")
                                 (getpoint (strcat "\nУкажите отметку " auxi " насыпи или <Завершить>... "))))
                (not (eq "Завершить" x02)))
      (setq x03 (cadr x02)
            x02 (list 10 (car x02) x01 0.0))
      (or x04
          (progn (initget 1)
                 (setq x04 (- (* x00 (getreal "\nВведите фактическую отметку указанной точки: ")) x03))))
      (entmakex (append '((0 . "TEXT")
                          (100 . "AcDbEntity")
                          (100 . "AcDbText")
                          (40 . 2.0)
                          (50 . 1.5708)
                          (51 . 0.0)
                          (71 . 0)
                          (72 . 0)
                          (73 . 2))
                        (list (cons 1 (rtos (/ (+ x03 x04) x00) 2 2))
                              (mapcar '- x02 '(0 -1.0 -2.0 0.0))
                              (mapcar '- x02 '(-1 0.0 -2.0 0.0)))))
      (entmakex (append '((0 . "LINE") (100 . "AcDbEntity") (100 . "AcDbLine"))
                        (list x02 (mapcar '- x02 '(-1 0.0 5.0 0.0)))))))
  (princ))
(princ "\nПодписывает отметки указанных точек в подпрофильной сетке. Вызывается СНЕСТИОТМЕТКИ")
Тогда вот так
ciril вне форума  
 
Автор темы   Непрочитано 15.04.2014, 17:52
#9
Daniil.T


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


ciril, все вообще круто. только маленькое но, не критичное, но все же) когда сносишь проектную точку (насколько я понимаю для определения точки отсчета) она чертится и ставиться в таблицу, но она нафиг не нужна)
__________________
"Любая правда - только грань истины"
Daniil.T вне форума  
 
Непрочитано 15.04.2014, 18:25
#10
gomer

строю, ломаю
 
Регистрация: 03.04.2008
Украина
Сообщений: 5,515


ciril, Совет на будущее: пользуйтесь общепринятыми интерфейсами, а то ввергнете мир в пучину мирового хаоса, веер схлопнется, а отвечать вам...
gomer вне форума  
 
Непрочитано 16.04.2014, 13:03
#11
ciril

САПР
 
Регистрация: 29.09.2011
СПб
Сообщений: 283


Да, чего-то недодумал
Код:
[Выделить все]
 (defun c:снестиотметки  (/ x00 x02 x03 x04 x01)
  (setq x01 (+ (cadr (progn (initget 1) (getpoint "\nУкажите точку на профиле с известной отметкой...")))
               (-
                 (* (progn (initget 1) (getreal "\nВведите фактическую отметку указанной точки: "))
                    (progn (initget "100 200")
                           (setq x00 (/ 1000.0 (atoi (getkword "\nВведите вертикальный маштаб профиля [100 200]: ")))))))))
  (foreach auxi  '("верха" "низа")
    (initget 1)
    (setq x02 (cadr (getpoint (strcat "\nУкажите нижнюю линию графы отметок " auxi " насыпи..."))))
    (while (and (setq x03 (progn (initget "Завершить")
                                 (getpoint (strcat "\nУкажите отметку " auxi " насыпи или <Завершить>... "))))
                (not (eq "Завершить" x03)))
      (setq x04 (cadr x03)
            x03 (list 10 (car x03) x02 0.0))
      (entmakex (append '((0 . "TEXT")
                          (100 . "AcDbEntity")
                          (100 . "AcDbText")
                          (40 . 2.0)
                          (50 . 1.5708)
                          (51 . 0.0)
                          (71 . 0)
                          (72 . 0)
                          (73 . 2))
                        (list (cons 1 (rtos (/ (+ x04 x01) x00) 2 2))
                              (mapcar '- x03 '(0 -1.0 -2.0 0.0))
                              (mapcar '- x03 '(-1 0.0 -2.0 0.0)))))
      (entmakex (append '((0 . "LINE") (100 . "AcDbEntity") (100 . "AcDbLine"))
                        (list x03 (mapcar '- x03 '(-1 0.0 5.0 0.0)))))))
  (princ))
(princ "\nПодписывает отметки указанных точек в подпрофильной сетке. Вызывается СНЕСТИОТМЕТКИ")
gomer, какое-то страшное пророчество, стесняюсь спросить, что вы имеете ввиду под общепринятыми интерфейсами?
ciril вне форума  
 
Автор темы   Непрочитано 16.04.2014, 14:13
#12
Daniil.T


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


ciril, Последний патчик и можно делать релиз
1 и самое главное) значение отметки увеличивается в 10 раз, сам в коде не могу понять где исправить)
2) указываем мы верхнюю, а не нижнюю линию графы, можно исправить самому, но вдруг кто-то другой будет пользоваться
3) шрифт можно сделать 3, тоже сам разобрался поменять, но опять же вдруг кто-то не сможет это сделать

а так шикарная програмулина получилась) нарадоваться не могу)
__________________
"Любая правда - только грань истины"
Daniil.T вне форума  
 
Непрочитано 16.04.2014, 19:18
#13
gomer

строю, ломаю
 
Регистрация: 03.04.2008
Украина
Сообщений: 5,515


Цитата:
Сообщение от ciril Посмотреть сообщение
что вы имеете ввиду
Просто не используйте то, чего не знаете, например initget! я уж не говорю об обработчике ошибок и маркерах отмены
Хотя вообще-то за initget нужно надавать по щам автодеску, за то, что они не удосужились правильно описать эту функцию с работающим примером...


В общем, это больше похоже на миску залежавшихся пельменей в доме Обломовых... чем на программу
gomer вне форума  
 
Автор темы   Непрочитано 16.04.2014, 20:22
#14
Daniil.T


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


gomer, Так может вам выложить свой вариант программы?) Поймите меня правильно: критиковать может много кто и много что, а можно взять и банально, ну так между делом, помочь людям) Я вообще ничего не соображаю в программировании и то, что предложил ciril реально работает, а это уже круто..
__________________
"Любая правда - только грань истины"
Daniil.T вне форума  
 
Непрочитано 17.04.2014, 06:56
#15
gomer

строю, ломаю
 
Регистрация: 03.04.2008
Украина
Сообщений: 5,515


Daniil.T, Вы в каком масштабе работаете? Попробуйте указать двухсотый масштаб, если получится, я подниму лапки вверх
gomer вне форума  
 
Автор темы   Непрочитано 17.04.2014, 09:42
#16
Daniil.T


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


gomer, масштаб 1:100, двухсотка не подходит..
__________________
"Любая правда - только грань истины"
Daniil.T вне форума  
 
Непрочитано 17.04.2014, 10:08
#17
ciril

САПР
 
Регистрация: 29.09.2011
СПб
Сообщений: 283


Daniil.T, выложите чертеж, если есть возможность, я на своих проверял, у меня все считает правильно 1:200 вообще не используете?
gomer, отведите от себя подозрения в пустозвонстве, приведите пример правильного использования initget, раз уж вы знаете лучше, чем autodesk

Последний раз редактировалось ciril, 17.04.2014 в 10:21.
ciril вне форума  
 
Непрочитано 17.04.2014, 11:09
#18
Do$

AutoCAD/Civil3D LISP/C#
 
Регистрация: 15.08.2008
Санкт-Петербург
Сообщений: 1,701
Отправить сообщение для Do$ с помощью Skype™


Лиспы для отметок на сечении в Сивиле? Ну, вы, блин, даёте
Вот пример для вида профиля, для сечения аналогично:
https://chronicle.autodesk.com/main/...e-29bef3e7fc13
__________________
Толковый выбор приходит с опытом, а к нему приводит выбор бестолковый. (The Mechanic)
Do$ вне форума  
 
Автор темы   Непрочитано 17.04.2014, 12:44
#19
Daniil.T


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


Do$, на видео способ примитивный и даже в стоковом автокаде я могу делать тоже самое) К тому же не подходят под условия заказчиков стандартные цивиловские профиля. Тут, как говориться, надо идти по линии наименьшего сопротивления и не придумывать себе лишней работы)
__________________
"Любая правда - только грань истины"
Daniil.T вне форума  
 
Непрочитано 17.04.2014, 13:42
#20
Do$

AutoCAD/Civil3D LISP/C#
 
Регистрация: 15.08.2008
Санкт-Петербург
Сообщений: 1,701
Отправить сообщение для Do$ с помощью Skype™


Стоп, а на скрине из первого поста не сивиловский вид сечения? Вы вручную отрисовываете сечения чтоли? Если так, то зачем он тогда вам?
__________________
Толковый выбор приходит с опытом, а к нему приводит выбор бестолковый. (The Mechanic)
Do$ вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Быстрый перенос высотных отметок в исполнительных чертежах



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как из AutoCAD вытащить координаты высотных отметок в формат txt? NataliyaGo AutoCAD 6 05.09.2017 16:51
Изменение высотных отметок ряда точек (Z) через связь с таблицей Excel. bgrade AutoCAD 6 09.08.2012 09:30
Обязательность простановки высотных отметок в ведомости перемычек GIP Архитектура 19 15.10.2011 14:09
Авторедактирование высотных отметок в формате примитив "текст" Largo GT Программирование 11 20.04.2011 06:42
Как в Лире задавать разное сечение одной колонный в зависемости от от высотных отметок karmex Лира / Лира-САПР 11 17.08.2010 22:02