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

Вернуться   Форум DWG.RU > Программное обеспечение > AutoCAD > Расстановка номеров пикетов по трассе трубопровода.

Расстановка номеров пикетов по трассе трубопровода.

Ответ
Поиск в этой теме
Непрочитано 19.06.2009, 13:12 #1
Расстановка номеров пикетов по трассе трубопровода.
Jeriko
 
Регистрация: 18.06.2009
Сообщений: 118

Имеется план трассы трубопровода, необходимо каждые 100м проставить номер пикета (ПК00+00, ПК01+00...ПК99+00).

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

Отсюда вопрос: каким образом можно научить автокад, автоматически проставлять номера пикетов по возрастающей ПК00+00, ПК01+00 и тд?Есть ли возможность реализовать это с помощью динамического блока? Или с помощью команды _dataextraction, можно ли создать связь с экселем , таким образом чтобы при изменении значения в экселе менялось значение текста на самом чертеже?
Просмотров: 49174
 
Непрочитано 19.06.2009, 13:37
#2
sasha_lif

Дизайнер-конструктор
 
Регистрация: 29.05.2004
Kiev
Сообщений: 1,187
<phrase 1=


Первый способ:
tcount
это из express-ov автоматический текстовый нумератор, можно задавать префиксы, приращение...

второй способ:
создаешь блок с атрибутом , а потом с помощью xblocknum.lsp нумеруешь
Вложения
Тип файла: lsp xblocknum.lsp (2.0 Кб, 1009 просмотров)
__________________
Kiev, Ukraine
sasha_lif вне форума  
 
Автор темы   Непрочитано 22.06.2009, 13:04
#3
Jeriko


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


Express-ov к сожелению у меня нет...

По второму способу тоже не получается...создаю блок с атрибутом, расставляю его по трассе, затем загружаю этот лисп, пишу имя блока/префикс/суффикс/стартовый номер, выбираю все эти блоки и ничего не происходит. Что я не правильно делаю?
Вложения
Тип файла: dwg
DWG 2007
Measure.dwg (415.4 Кб, 7278 просмотров)
Jeriko вне форума  
 
Непрочитано 22.06.2009, 13:38
#4
sasha_lif

Дизайнер-конструктор
 
Регистрация: 29.05.2004
Kiev
Сообщений: 1,187
<phrase 1=


Да, что-то не так с коммандой measure?
Кто подскажет, почему, при пользовании measure , с применением блока с атрибутом , такое впечатление, что атрибут как-то проваливается, что его не видно (но внутри блока он лежит..)
См. файл: если я всавляю блок qwerty через insert , то я вижу его атрибут, при measure с блоком, атрибут уже не видно? Кто может подсказать, в чем причина???
(для вручную вставленных блоков lisp из №2 работает)
Вложения
Тип файла: dwg
DWG 2004
Measure_2004.dwg (138.7 Кб, 7152 просмотров)
__________________
Kiev, Ukraine
sasha_lif вне форума  
 
Автор темы   Непрочитано 22.06.2009, 15:07
#5
Jeriko


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


на твоем чертеже у меня все работает, перед тем как использовать лисп нужно выбрать все блоки, которые получились после применения команды _measure и обновить их.

а вот на своем чертеже я почему то не могу заставить работать этот лисп...

и еще, как лисп выбирает с какого конца начинать нумерацию? он всегда нумерует снизу вверх?
Jeriko вне форума  
 
Непрочитано 23.06.2009, 10:56
#6
sasha_lif

Дизайнер-конструктор
 
Регистрация: 29.05.2004
Kiev
Сообщений: 1,187
<phrase 1=


Цитата:
Express-ov к сожелению у меня нет...
Скачай Express , на этом сайте есть, + как устанавливать рассписано.. и tcount позволяет задать как нумеровать (сортировка по x bли y)
Цитата:
нужно выбрать все блоки, которые получились после применения команды _measure и обновить их.
а как обновить блок?? и что, после этого ты видишь атрибуты этого блока, расставленного measure?
__________________
Kiev, Ukraine
sasha_lif вне форума  
 
Автор темы   Непрочитано 23.06.2009, 13:07
#7
Jeriko


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


_battman и атрибуты сразу появятся.

пойду тогда експресс искать и ставить, спасибо за помощь!
Jeriko вне форума  
 
Непрочитано 23.06.2009, 14:31
#8
sasha_lif

Дизайнер-конструктор
 
Регистрация: 29.05.2004
Kiev
Сообщений: 1,187
<phrase 1=


Цитата:
и еще, как лисп выбирает с какого конца начинать нумерацию? он всегда нумерует снизу вверх?
Вроде да, но если тебе необходимо наооборот сверху -вниз, то с помощью UCS можно попробовать заставить нумеровать и по другому (на крайний случай-Mirror развернуть линию)
Спасибо за _battman
__________________
Kiev, Ukraine
sasha_lif вне форума  
 
Непрочитано 23.06.2009, 17:15
#9
Victor


 
Регистрация: 14.06.2009
Бат-Ям
Сообщений: 295


попробуйте
Код:
[Выделить все]
(defun c:b2p ( / name_of_bl dis pln dis_pl dis_run i krd prm_pnt
                 proiz ugol_pl ugol_pl_gr my_blok my_att spis_att
                 att_old att_new spis_att strt stp snp)
(setq snp (getvar "Osmode"))
(setvar "Osmode" 0)
(setq name_of_bl (getstring "Name of blok?  "))
(setq dis (getreal "Distance?  "))
(setq strt (getint "\nStart number?  "))
(setq stp  (getint "\nStep?  ")) 
(setq pln (car (entsel)))
(setq dis_pl (vlax-curve-getDistAtParam pln (vlax-curve-getEndParam pln)))
(setq dis_run (- 0.0 dis) i (- strt stp))
(while(< (+ dis_run dis) dis_pl)
(progn
(setq i (+ i stp))
(setq dis_run (+ dis_run dis))
(setq krd (vlax-curve-getPointAtDist pln dis_run))
(setq prm_pnt  (vlax-curve-getParamAtPoint pln krd))
(setq proiz (vlax-curve-getFirstDeriv pln prm_pnt))
(setq ugol_pl (angle '(0 0 0) proiz))
(setq ugol_pl_gr (* ugol_pl 57.29747))
(setvar "attreq" 0)
(command "_.insert" name_of_bl krd 1.0 1.0 ugol_pl_gr)
(setq my_blok (entlast))
(setq my_att (entnext my_blok))
(setq spis_att (entget my_att)) ;spisok 
(setq att_old (assoc 1 spis_att)) ;name
(setq att_new (cons 1 (itoa i))) ;
(setq spis_att (subst att_new att_old spis_att)); zamena
(entmod spis_att)
(entupd  (cdr (assoc -1 spis_att)))
) ;progn
)
(setvar "Osmode" snp)
)

Последний раз редактировалось Victor, 23.06.2009 в 17:21.
Victor вне форума  
 
Непрочитано 23.06.2009, 22:21
#10
Sergiy

Проектировщик, гидротехник
 
Регистрация: 23.03.2006
Киев
Сообщений: 59


Пользуюсь ToolPac'ом: команда polyline -> Station (пикет), но блок "Polysta" переделал по-своему
Sergiy вне форума  
 
Автор темы   Непрочитано 24.06.2009, 08:55
#11
Jeriko


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


Victor, в качестве объекта что выбирать надо? полилинию? у меня автокад потом ругается:
Код:
[Выделить все]
Выберите объект: ; ошибка: no function definition: VLAX-CURVE-GETENDPARAM
И еще, Ваш лисп только номера проставляет? Префиксы он не проставляет?
Jeriko вне форума  
 
Непрочитано 24.06.2009, 09:15
#12
Victor


 
Регистрация: 14.06.2009
Бат-Ям
Сообщений: 295


Добавьте вначале (vl-load-com). Выбирать надо полилинию.
Прога и так перегружена вопросами. Префиксы надо в отдельную программу сделать.
Victor вне форума  
 
Автор темы   Непрочитано 24.06.2009, 09:39
#13
Jeriko


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


Victor, заработало, спасибо. лисп отличный и полилинию разбивает и номера проставляет. еще бы его совместить с лиспом, который выкладывал sasha_lif, чтобы преффиксы и суффиксы проставлял, ему бы вообще цены не было.
Jeriko вне форума  
 
Непрочитано 24.06.2009, 10:05
#14
Victor


 
Регистрация: 14.06.2009
Бат-Ям
Сообщений: 295


Раз вам так хочется плюс ещё 2 вопроса. На первый если не хотим жмём ENTER. Если хотим жмём S или P .Тогда спросит чего изволите. Тестируйте
Код:
[Выделить все]
(vl-load-com)
(defun c:b2p ( / name_of_bl dis pln dis_pl dis_run i krd prm_pnt
proiz ugol_pl ugol_pl_gr my_blok my_att spis_att
att_old att_new spis_att strt stp)
(setq snp (getvar "Osmode"))
(setvar "Osmode" 0) 
(setq name_of_bl (getstring "Name of blok? "))
(setq dis (getreal "Distance? "))
(setq strt (getint "\nStart number? "))
(setq stp (getint "\nStep? ")) 
(setq flag (getstring "\nS/P? "))
(if(/= "" flag)(setq suf_prf (getstring "\nSuffiks/Prefiks? ")))
(setq pln (car (entsel)))
(setq dis_pl (vlax-curve-getDistAtParam pln (vlax-curve-getEndParam pln)))
(setq dis_run (- 0.0 dis) i (- strt stp))
(while(< (+ dis_run dis) dis_pl)
(progn
(setq i (+ i stp))
(setq dis_run (+ dis_run dis))
(setq krd (vlax-curve-getPointAtDist pln dis_run))
(setq prm_pnt (vlax-curve-getParamAtPoint pln krd))
(setq proiz (vlax-curve-getFirstDeriv pln prm_pnt))
(setq ugol_pl (angle '(0 0 0) proiz))
(setq ugol_pl_gr (* ugol_pl 57.29747))
(setvar "attreq" 0)
(command "_.insert" name_of_bl krd 1.0 1.0 ugol_pl_gr)
(setq my_blok (entlast))
(setq my_att (entnext my_blok))
(setq spis_att (entget my_att)) ;spisok 
(setq att_old (assoc 1 spis_att)) ;name
(setq num_new (itoa i))
(if(or (= flag "s")(= flag "S"))(setq num_new (strcat num_new suf_prf))) 
(if(or (= flag "p")(= flag "P"))(setq num_new (strcat suf_prf num_new))) 
(setq att_new (cons 1 num_new)) ;
(setq spis_att (subst att_new att_old spis_att)); zamena
(entmod spis_att)
(entupd (cdr (assoc -1 spis_att)))
) ;progn
)
(setvar "Osmode" snp)
)
Victor вне форума  
 
Автор темы   Непрочитано 24.06.2009, 14:00
#15
Jeriko


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


А если всего и сразу хочется? Всмысле и префикс, и суффикс поставить?
Jeriko вне форума  
 
Непрочитано 24.06.2009, 14:14
#16
Victor


 
Регистрация: 14.06.2009
Бат-Ям
Сообщений: 295


Ну вы блин даёте. Завтра, если придумаю.
Victor вне форума  
 
Непрочитано 24.06.2009, 20:43
#17
Кулик Алексей aka kpblc
Moderator

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


Цитата:
Сообщение от Jeriko Посмотреть сообщение
А если всего и сразу хочется? Всмысле и префикс, и суффикс поставить?
А если поискать?
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 24.06.2009, 21:06
#18
Jeriko


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


Кулик Алексей aka kpblc, ничего подобного мне найти не удалось...есть лиспы просто нумерации блоков, которые выкладывались уже сдесь, а этот и проставляет блоки по трассе, и сразу нумерует их.
Jeriko вне форума  
 
Непрочитано 24.06.2009, 21:21
#19
Кулик Алексей aka kpblc
Moderator

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


Jeriko, сорри.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 25.06.2009, 08:06
#20
Victor


 
Регистрация: 14.06.2009
Бат-Ям
Сообщений: 295


Дело двух минут как оказалось.
Код:
[Выделить все]
(vl-load-com) 
(defun c:b2p ( / name_of_bl dis pln dis_pl dis_run i krd prm_pnt
proiz ugol_pl ugol_pl_gr my_blok my_att spis_att
att_old att_new spis_att strt stp)
(setq snp (getvar "Osmode"))
(setvar "Osmode" 0) 
(setq name_of_bl (getstring "Name of blok? "))
(setq dis (getreal "Distance? "))
(setq strt (getint "\nStart number? "))
(setq stp (getint "\nStep? ")) 
(setq pref (getstring "\nPrefiks? "))
(setq suff (getstring "\nSuffiks? "))
(setq pln (car (entsel)))
(setq dis_pl (vlax-curve-getDistAtParam pln (vlax-curve-getEndParam pln)))
(setq dis_run (- 0.0 dis) i (- strt stp))
(while(< (+ dis_run dis) dis_pl)
(progn
(setq i (+ i stp))
(setq dis_run (+ dis_run dis))
(setq krd (vlax-curve-getPointAtDist pln dis_run))
(setq prm_pnt (vlax-curve-getParamAtPoint pln krd))
(setq proiz (vlax-curve-getFirstDeriv pln prm_pnt))
(setq ugol_pl (angle '(0 0 0) proiz))
(setq ugol_pl_gr (* ugol_pl 57.29747))
(setvar "attreq" 0)
(command "_.insert" name_of_bl krd 1.0 1.0 ugol_pl_gr)
(setq my_blok (entlast))
(setq my_att (entnext my_blok))
(setq spis_att (entget my_att)) ;spisok 
(setq att_old (assoc 1 spis_att)) ;name
(setq num_new (itoa i))
(setq num_new (strcat pref num_new suff))) 
(setq att_new (cons 1 num_new)) ;
(setq spis_att (subst att_new att_old spis_att)); zamena
(entmod spis_att)
(entupd (cdr (assoc -1 spis_att)))
) ;progn
)
(setvar "Osmode" snp)
)
Сейчас обнаружил что работает и с 3D линиями и сплайнами если не сильно изогнутые

Последний раз редактировалось Victor, 25.06.2009 в 08:43. Причина: ochepjatka
Victor вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > AutoCAD > Расстановка номеров пикетов по трассе трубопровода.

Размещение рекламы