В данное время пока работаю на "древнем" Sokkia set 5F. В прибор можно закачать 40 кодов. Длина строки-кода 13 символов. Для кодировки можно использовать цифры, латинские литеры, знак минус, знак подчеркивание, точку и &.
В первом посте выложены новые версии 3dPointMake02.fas и NXYZCode2acad04.fas. Описание программ в первом посте.
Палыч, модуль рисовки точечных условных знаков настраивается редактированием файла ConversionCode.txt. Можно поменять кода, соответсвующие кодам названия блоков-точечных условны знаков, создать свои блоки или использовать блоки которыми пользуетесь многие годы, указать слой куда блоки будут вставляться, переписать комментарии. Единственно разделитель должен быть ; (точка с запятой) . Пикет (блок с атрибутами) то же может быть использован любой, но в нем должны быть минимум три атрибута. Так же примерно будет настраиваться и программа рисовки линейных объектов. Но эта программа с куда более сложным алгоритмом работы, нежели программа по работе с точечными условными знаками.
В первом посте выложена третья версия программы DrawLineObjectByCode03.fas рисовки линейных объектов по кодам. Префикс кода -(минус) начало отрисовки линейного объекта, префикс кода --(два минуса) конец отрисовки линейного объекта. В основном предполагается использовать линейные кода для отрисовки съемок коридоров коммуникаций и программа постепенно "затачивается" именно для коридоров.
Выложил четвертую версию программы DrawLineObjectByCode04a.fas для "автоматической" рисовки линейных объектов по кодам. Запускаете программу и она, согласно фалу настройки ConversionCodeLine.txt, отрисовывает линейные объекты. Прикладываю картинку фала настройки ConversionCodeLine.txt.
Наконец то добрался до тахеометра Sokkia set 5F. Попробовал ввод кодов и сразу многое прояснилось. Относительно "приемлемо" можно с клавиатуры вводить только цифры, бо вводится все методом перебора. Вводить же методом перебора алфавита латинские литеры желания ну никакого нет. По этому латинские литеры буду использовать для загруженных в тахеометр кодов. При вызове из памяти загруженных кодов, кода выводятся на экран с разделителем пробел. Комплексный код может выглядеть следующим образом - номер линейного объекта(цифра), пробел, признак начала / конца линии(A / B), пробел, код точечного знака, пробел, код точечного знака ... (всего не более 13 символов). На фото показан код который читается так: лин.коммуникация 2, начать чертить, поставить усл.знак КИК, поставить усл.знак КМ столб.
Как по мне, вполне логично в код пикета забивать так же и глубину коммуникации. На фото показано как могут выглядеть кода с глубинами до оси коммуникации. Глубина в виде двузначного числа без разделительной точки. Глубина последняя запись в комплексном коде. На левом фото код читается так - лин.коммуникация 2, глубина до верха коммуникации 0.9 метра. На правом фото код читается так - лин.коммуникация 2, поставить усл.знак КИК (контрольно-измерительная колонка), глубина до центра коммуникации 1.6 метра. Далее при камеральной обработке можно программно вычислить глубину до верха коммуникации и записать сие в соответствующий атрибут пикета.
В первом посте выложены обновления программ. Прилагаю картинку-чертежик съемки с отрисованными программами по кодам точечными и линейными объектами. Отметки и глубины отключены. Включены номера пикетов и кода (синим цветом). Сьемка велась поперечниками. Непрерывная линия за дорогой ЛЭП 10кВ. Линия за дорогой (пк129-пк130) отпайка 10 кВ идущая в доль газопровода-отвода. ----------------------------------------------------------------------------------------------------- Описание кодов. Код-число в начале сложного кода - номер присвоенный линейному объекту. Код & - не рельефный пикет (отметка пикета не участвует в построении 3D поверхности и горизонталей, например пикет бровки дороги). Код && - плановый пикет (пикет без отметки) Код 1 - начало вычерчивания линейного объекта, используется только при наличии кода-номера линейного объекта. Может находится в любом месте сложного кода. Код 0 (ноль) - конец вычерчивания линейного объекта, используется только при наличии кода-номера линейного объекта. Может находится в любом месте сложного кода. Код из латинских литер - код точечного объекта. Можно записывать несколько таких кодов разделяя пробелом. Может находится в любом месте сложного кода. Код глубины коммуникации - двузначное число без разделителя, используется только при наличии кода-номера линейного объекта. Может находится в любом месте сложного кода. В сложном коде простые кода разделяются пробелами и могут следовать в любом порядке, кроме кода-номера коммуникации. Номер коммуникации всегда находится в начале сложного кода. Примеры простого кода: 0 - продолжаем чертить коммуникацию под номером 0 (ноль) DER_L - поставить точечный усл. знак отд.стоящее дерево лиственное. Примеры сложного кода: 0 1 KIK 19 - начать чертить (код 1) коммуникацию под номером 0 (ноль), поставить точечный усл. знак КИК, глубина до центра коммуникации 1.9 метра. 0 08 0 - закончить чертить коммуникацию (код 0 в конце сложного кода) под номером 0 (ноль), глубина до центра коммуникации 0.8 метра. KIK OXR - поставить два точечных усл. знака КИК и Оханная табличка.
Теперь рисуем горизонтали на фрагменте чертежа газопровода-отвода. Загружаем в Civil 3D чертеж Газ-отвод план без горизонталей 2000.dwg, запускаем программу 3dPointMake04.fas, выбираем опцию 0 (ноль) и создаем в чертеже облако трехмерных точек. Для пикетов имеющих код & (в чертеже это бровки дороги) или код && трехмерные точки не создаются. Создаем 3D поверхность и отрисовываем горизонтали. В принципе вся процедура занимает пару минут.
Поскольку мною исповедуется "догма" - в пределах объекта каждому пикету индивидуальный номер, то создана и выложена в первом посте программа TestSDRdoublePk01.VLX тестирующая файл *.SDR на предмет повторных номеров пикетов. Так же в первом посте выложена NXYZCode2acad06.fas новая версия программы закачки пикетов в автокад, так же тестирующая координатный файл на повторяющиеся имена пикетов.
Оффтоп (Move your mouse to the spoiler area to reveal the content) ivsem, выкладывайте в Ресурсы, ну вам же проще будет.
В первом посте выложена следующая версия программы создания 3D точек 3dPointMake05.fas В пятой версии введена функция проверки отметки на наличие запятой и замены оной на точку. Иногда просто диву даешься, откуда в отметках берутся запятые.
Гост несомненно штука нужная, да вот автокад придерживается других понятий. Например, если в отметке встречается разделитель запятая, то лисп молча отбрасывает дробную часть. Т.е. если встретилось число 153,89, то в обработку уйдет 153. Вот по этому я и ввел в программы тест на запятую.
В первом посте выложена третья версия CodeSDR2NXYZ03.fas. Код программы практически полностью переписан "по-новому". Выложена так же новая версия TestSDRdoublePk02.VLX для тестирования "двойных"пикетов в файле *.sdr.
В первом посте выложена новая версия NXYZCode2acad07.VLX закачки пикетов в чертеж. Теперь в переменной чертежа useri5 будет храниться знаменатель масштаба вычерчиваемого плана. Переменную useri5 можно редактировать вручную, достаточно в командной строке набрать useri5.
Уважаемый Ivsem! Пользуюсь лиспом DrawLineObjectByCode05a.fas, какой код мне поставить чтобы замкнуть линию? Если в файле ConversionCodeLine05.fas встречаются коды коммуникаций которых нет на чертеже, то выдает ошибку и ничего не строит. Если в блоке пикета есть значение отметки и глубины то хотелось бы лисп который вычислял разность отметка- глубина и записывал значение в текст рядом с пикетом. Спасибо.
Выложите фрагментик вашего чертежа. Я в атрибут глубина блока-пикета записываю глубину определенную трассоискателем, то есть до центра трубы. Для проектировщиков требуется глубина до верха трубы, то есть надо еще отнять половину диаметра трубы. Глубину до верха трубы можно (а по мне, так нужно) хранить в соответствующем атрибуте блока-пикета и при необходимости извлекать ее программным методом.