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

Вернуться   Форум 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.
Просмотров: 7680
 
Непрочитано 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$ вне форума  
 
Автор темы   Непрочитано 17.04.2014, 15:29
#21
Daniil.T


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


Do$, профиля не с цивила, они проектные по каждому пикету не знаю кем отрисовывались) Дело даже не в этом. Данная программка может много где помимо дороги использоваться) любое "коридорное" строительство: жд, авто, путепроводы и т.д)
__________________
"Любая правда - только грань истины"
Daniil.T вне форума  
 
Непрочитано 17.04.2014, 15:50
#22
ciril

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


Daniil.T, все работает, вычисляет нормально? Или все считает неправильно? Если неправильно, выложите чертеж, ума не приложу, где она может ошибаться
ciril вне форума  
 
Автор темы   Непрочитано 17.04.2014, 16:08
#23
Daniil.T


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


ciril, изменился алгоритм программы, т.е масштаб она спрашивает не сразу, а после указания известной точки и ее высоты.. может тут собака зарыта. а так прикладываю тебе пример поперечника
Вложения
Тип файла: dwg
DWG 2010
пример поперечного профиля.dwg (1.25 Мб, 1041 просмотров)
__________________
"Любая правда - только грань истины"
Daniil.T вне форума  
 
Непрочитано 17.04.2014, 17:26
1 | #24
ciril

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


Код:
[Выделить все]
 (defun c:снестиотметки  (/ x00 x01 x02 x03 x04 xff)
  (or (setq xff (getreal "\nВведите высоту шрифта подписи отметок: <3.0> ")) (setq xff 3.0))
  (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")
                          (50 . 1.5708)
                          (51 . 0.0)
                          (71 . 0)
                          (72 . 0)
                          (73 . 2))
                        (list (cons 40 xff)
                              (cons 1 (rtos (/ (+ x04 x01) x00) 2 2))
                              (mapcar '- x03 (list 0 (- (/ xff 2.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Подписывает отметки указанных точек в подпрофильной сетке. Вызывается СНЕСТИОТМЕТКИ")
Мда, как-то я в элементарной арифметике ступил - исправил Добавил ввод высоты текста, по умолчанию - 3.0, указание верхней линии графы привычней, но если отметка должна быть расположена на 2 выше нижней линии и высота граф различна, тогда либо вводить/указывать высоту графы или при изменении высоты графы расположения текста поплывет, можно, конечно, выравнивать его по правому краю, если принципиально указание именно верха графы, можно переделать И если последовательно указываете отметки верха/низа насыпи, можно добавить подпись расстояния между отметками, но тогда вопрос - всегда ли горизонтальный масштаб равен вертикальному.
ciril вне форума  
 
Автор темы   Непрочитано 17.04.2014, 18:24
#25
Daniil.T


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


ciril, про расстояния это ты хорошо заметил) но не всегда работы однородны (ну т.е бывает несколько насыпей и выемок на поперечнике) поэтому думаю усложнение того не стоит, тем более програмулина узконаправленная) Все, релиз ребяты!) все круто!)
__________________
"Любая правда - только грань истины"
Daniil.T вне форума  
 
Непрочитано 19.04.2014, 01:13
#26
kakt00z

инженер-проектировщик КИПиА
 
Регистрация: 30.08.2008
Минск
Сообщений: 159


"картина маслом" - развели, даже гомер не помог ))))
kakt00z вне форума  
 
Непрочитано 16.02.2015, 12:48 Оформление поперечных профилей
#27
trushev


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


Есть эксплуатируемый с прошлого века lisp аналог. Ориентирован на оформление поперечных профилей в соответствии с ГОСТ 21.702-2013 "Правла выполнения рабочей документации железнодорожных путей". Кроме заполнения проектных граф отметок и расстояний, выполняет надпись заложений откосов и уклонов спланированной поверхности. Настраивается на любой масштаб исходного поперечника.
Если заинтересовало, подскажите где выложить для обсуждения?
trushev вне форума  
 
Непрочитано 16.02.2015, 15:03
1 | #28
Кулик Алексей aka kpblc
Moderator

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


В отдельной теме в разделе "Готовые программы", если lisp функционирует нормально.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
Ответ
Вернуться   Форум 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