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

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Как произвести пикетную нумерацию опор

Как произвести пикетную нумерацию опор

Ответ
Поиск в этой теме
Непрочитано 30.03.2006, 09:28 #1
Как произвести пикетную нумерацию опор
caha
 
проектировщик контактной сети
 
Регистрация: 29.03.2006
Сообщений: 5

Люди помогите кто сможет, решить такую проблему.
Есть нумерация цифр (текст).
312
313
....
356
357
и т.д. (в общем пикетаж на железной дороге)
дальше. Между пикетами стоят опоры контактной сети на против каждой из которых необходимо произвести пикетажную нумерацию.
К примеру типа такую - 312+56
313+26
....
356+98
357+58
и т.д.
есть путь вручную замерять растояние от пикета до опоры и вручную вписывать значение в однострочный текст.
Вопрос. Как нибудь такую пикетажную нумерацию произвести автоматически можно? Замеряю растоние, а прога пишет полученное значение и ставит полученное значение туда куда укажу (к примеру там "312+56", 312 номер пикета вписываю сам, а +56 вписывает программа). Стандартными средствами акада не нашел.
Подскажите Плиз.
Просмотров: 5916
 
Непрочитано 30.03.2006, 13:18
#2
Кочетков Андрей

Java/Kotlin/Go
 
Регистрация: 03.02.2006
Сообщений: 5,786


Можно использовать вот такую програмку.
Гуру не бейте.

Код:
[Выделить все]
(defun c:ak-station (/ akModelSpace akStat akDist akInsPoint akText)
  (vl-load-com)
  (setq akModelSpace (vla-get-ModelSpace (vla-get-ActiveDocument (vlax-get-Acad-Object))))
  (setq akStat (getreal "\nВведите номер пикета: "))
  (setq akDist (getdist "\nУкажите расстояние от пикета до опоры: "))
  (setq akInsPoint (getpoint "\nУкажите точку вставки текста: "))
  (setq akText (strcat (rtos akStat) "+" (rtos akDist 2 0)))
  (vla-addText akModelSpace akText (vlax-3d-point akInsPoint) 2.5)
  )
Кочетков Андрей вне форума  
 
Непрочитано 30.03.2006, 15:36
#3
fixo

Lisp/VBA/VB.NET Hobbyist
 
Регистрация: 24.03.2005
Славен Град Петров
Сообщений: 367


Я ничё не понимаю где опоры, где пикеты, где текст,
тем не менее попробуй...

Код:
[Выделить все]
; вспомогательная функция округления

; written by Joe Burke
(defun round (value to)
(cond
((zerop to) value)
(t
(setq to (abs to))
(* to (fix (/ ((if (minusp value) - +) value (* to 0.5)) to))))))

; основная часть

(defun C:sto (/ dis num osm pt1 pt2 pt3 stx)

(setq osm (getvar "osmode"))
(setvar "osmode" 47)
(setq styl (getvar "TEXTSTYLE")
      hgt (getvar "DIMTXT"))
(initget 7)  
(setq num  (getint "\n >> Начальный номер опоры  >> : \n")) 
(while

(setq pt1 (getpoint "\nУказать точку пикета (ENTER для завершения) :\n"))
(setq pt2 (getpoint pt1 "\nУказать точку опоры :\n"))
(setq pt3 (getpoint pt2 "\nУказать точку вставки текста :\n"))
(setq dis (distance pt1 pt2)
      stx (strcat
	    (itoa num)
	    "+"
	    (rtos (round dis 1.0) 2 0)))
(entmake (list (cons 0 "TEXT") 
                   (cons 10 pt3) 
                   (cons 11 pt3) 
                   (cons 1 stx) 
                   (cons 7 styl) 
                   (cons 40 hgt) 
                   (cons 72 4)) 
    )
(setq num (1+ num))
)
  (setvar "osmode" osm)
  (princ)
  )
(prompt "\nВ командной строке набери STO ...")
(princ)
~'J'~
fixo вне форума  
 
Непрочитано 31.03.2006, 12:03
#4
Vaidas


 
Регистрация: 11.03.2006
LT
Сообщений: 11


простой вариант...
Код:
[Выделить все]
(defun c:pik ( / piktext pikpoint)
  (setq piktext (strcat (getstring "piket no. : ") "+" (rtos (getdist "\ndistance : ") 2 0))
	pikpoint (getpoint "\ntext insertion point : "))(command "_mtext" pikpoint pikpoint piktext "")(princ))
Vaidas вне форума  
 
Автор темы   Непрочитано 01.11.2009, 12:35
#5
caha

проектировщик контактной сети
 
Регистрация: 29.03.2006
Сообщений: 5


Всем спасибо.
У всех работает нормально.
caha вне форума  
 
Непрочитано 01.11.2009, 13:36
#6
Do$

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


Offtop: Странно, обычно на плане КС немного в другом формате пикетаж опор проставляется, например: 35|65.
Do$ вне форума  
 
Непрочитано 16.02.2010, 06:58 О пикетаже
#7
slogos


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


Решил написать, хотя проблема может быть и решена.
Автоматическое определение пикетажного положения какого-либо объекта (в полном варианте) - задача не совсем проста как кажется. Пикетаж - это неотъемлемый элемент какой-либо трассы, лучше всего, конечно, представленной полилинией. На этой полилинии должны быть метки пикетажа, лучше всего в виде блоков с атрибутом его номера, т.к. если это буде просто текст, то его еще нужно как-то соотнести с меткой. При этом должна быть решена проблема объектной привязки этих меток к трассе. Можно, конечно обойтись и без точной привязки, но тогда встает проблема выбора этих меток. Не буду далее развивать эту тему, добавлю только еще проблему определения расстояний по круговым и переходным кривым, т.к. они существуют на реальной трассе.
slogos вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Как произвести пикетную нумерацию опор