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

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Кто знает синтаксис las файла 2011? Помогите.

Кто знает синтаксис las файла 2011? Помогите.

Ответ
Поиск в этой теме
Непрочитано 22.03.2011, 18:17 #1
Кто знает синтаксис las файла 2011? Помогите.
aleksmk
 
Автодороги и Генеральный план
 
Москва
Регистрация: 02.03.2011
Сообщений: 12

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

Прошу помочь разобраться в синтаксисе файла состояния слоев *.las файле.

Для 2009 мне все понятно. 14 первых строк общие и по 12 строк на каждый слой. Об этом здесь http://www.autodeskpress.delmar.ceng...1/adv_tut.aspx

Но в 2011 акаде добавилась прозрачность слоя! И не понятно как связаны значения прозрачности (код 440) в las файле со значением прозрачности которое устанавливаешь в диспетчере слоев.
К примеру если поставить в диспетчере прозрачность равной 77, то в las файле получаем 33554490.

Дело в том что я имею желание создавать las файлы вне программы и зарание назначать прозрачность от 0 до 90.
Кто может сказать как связаны эти числа? Какаое выражение генерит эти 8-ми значные цифры?
Просмотров: 6062
 
Непрочитано 23.03.2011, 09:49
#2
orexxx


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


а при 0 и 90 какие значения в las файле получаются?
orexxx вне форума  
 
Автор темы   Непрочитано 23.03.2011, 09:59
#3
aleksmk

Автодороги и Генеральный план
 
Регистрация: 02.03.2011
Москва
Сообщений: 12


Линейная интерполяция не применима. При 90 - 33554457. 33554457/90
372827.3*77=28707702.1 <> 33554490.

Черт знает что сотворили разработчкики.... Зачем не понимаю.
aleksmk вне форума  
 
Непрочитано 23.03.2011, 10:33
#4
Do$

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


Двух значений маловато, чтоб понять зависимость.
77 - 33554490
90 - 33554457...
0 - ?
10 - ?
20 - ?
...
__________________
Толковый выбор приходит с опытом, а к нему приводит выбор бестолковый. (The Mechanic)
Do$ вне форума  
 
Автор темы   Непрочитано 23.03.2011, 10:39
#5
aleksmk

Автодороги и Генеральный план
 
Регистрация: 02.03.2011
Москва
Сообщений: 12


И что это даст? Числа получаются же не целыми, и не похожими... при попытки линейной интерполяции. Думаю единственный способ - опытно при каждом значении в диспетчере узнавать значение в las файле.
aleksmk вне форума  
 
Непрочитано 23.03.2011, 11:03
#6
Do$

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


Цитата:
Сообщение от aleksmk Посмотреть сообщение
Какаое выражение генерит эти 8-ми значные цифры?
Цитата:
Сообщение от aleksmk Посмотреть сообщение
К примеру если поставить в диспетчере прозрачность равной 77, то в las файле получаем 33554490.
Цитата:
Сообщение от aleksmk Посмотреть сообщение
При 90 - 33554457
Цитата:
Сообщение от aleksmk Посмотреть сообщение
Числа получаются же не целыми, и не похожими...

По мне - так и целые и похожие.
Был бы acad2011 у меня, посмотрел бы сам, а так могу судить только по представленным данным (коих очень мало).
__________________
Толковый выбор приходит с опытом, а к нему приводит выбор бестолковый. (The Mechanic)
Do$ вне форума  
 
Автор темы   Непрочитано 23.03.2011, 11:12
#7
aleksmk

Автодороги и Генеральный план
 
Регистрация: 02.03.2011
Москва
Сообщений: 12


Не понимаю что я непонятного сказал.

Программа конечно генерит целые и одного прядка и некоторые знаки разрядов совпадают. Я говорю о том, что если линейно интерполировать, между 0 при 0 и 33554457 при 90, то не получим мы целых чисел и с первыми 5 знаками равными соответственно: 33554.
aleksmk вне форума  
 
Непрочитано 23.03.2011, 11:24
#8
Do$

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


Значит тут не линейная зависимость. А какая - нужно или искать описание от разработчиков, или пытаться искать эту зависимость самостоятельно.
К примеру, RGB цвет объекта сохраняется в системе одним числом. Цвету 255,255,255 будет соответствовать число 16777215, цвету 84,167,82 - число 5547858. Тут тоже нет линейной интерполяции, а зависимость есть: первое число*16^4+второе*16^2+третье.
Может быть, что в случае со слоями тоже значение как-то хитро рассчитывается.
А может быть, что значение в коде 440 является суммарным прозрачности и, к примеру, цвета слоя...
__________________
Толковый выбор приходит с опытом, а к нему приводит выбор бестолковый. (The Mechanic)

Последний раз редактировалось Do$, 23.03.2011 в 11:37.
Do$ вне форума  
 
Автор темы   Непрочитано 23.03.2011, 11:30
#9
aleksmk

Автодороги и Генеральный план
 
Регистрация: 02.03.2011
Москва
Сообщений: 12


Я об этом и толкую. Ищу я описание на иностранных ресурсах, не могу найти. Придется, наверное, 87 раз проделать ручками...
aleksmk вне форума  
 
Непрочитано 23.03.2011, 11:54
#10
Do$

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


Я предлагаю сделать в пустом файле 10-20 слоев с разными прозрачностями (от 0 до 90) и выложить тут las-файл и указать у какого слоя какая прозрачность выставлена. Может совместно откопаем зависимость.
__________________
Толковый выбор приходит с опытом, а к нему приводит выбор бестолковый. (The Mechanic)
Do$ вне форума  
 
Непрочитано 23.03.2011, 15:58
#11
Александр Ривилис

программист, рыцарь ObjectARX
 
Регистрация: 09.05.2005
Киев
Сообщений: 2,413
Отправить сообщение для Александр Ривилис с помощью Skype™


А ведь закономерность линейная.
Для полностью прозрачного: 33554432 = 02000000h (шестнадцатиричное)
Для совершенно непрозрачного: 33554687 = 020000FFh
Т.е. диапазон от 0% до 100% отображается в диапазон от 0 до 255.
Ну дальше сам делай выводы.

Последний раз редактировалось Александр Ривилис, 23.03.2011 в 16:24. Причина: Исправлена ошибка в коде полностью прозрачного
Александр Ривилис вне форума  
 
Непрочитано 23.03.2011, 16:14
#12
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,996


Цитата:
Сообщение от Александр Ривилис Посмотреть сообщение
Для полностью прозрачного: 33554559 = 02000000h (шестнадцатиричное)
Для совершенно непрозрачного: 33554687 = 020000FFh
Т.е. диапазон от 0% до 100% отображается в диапазон от 0 до 255.
33554559 = 200007Fh Тогда диапазон сужается до 128
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 23.03.2011, 16:24
#13
Александр Ривилис

программист, рыцарь ObjectARX
 
Регистрация: 09.05.2005
Киев
Сообщений: 2,413
Отправить сообщение для Александр Ривилис с помощью Skype™


Володя! Спасибо, что заметил. Это у меня опечатка. Исправил.
Первый байт имеет такую расшифровку:
00h - BYLAYER (для слоя не применимо)
01h - BYBLOCK (для слоя не применимо)
02h - BYALPHA

Последний байт в зависимости от первого (т.е. если он 02h (BYALPHA) содержит прозрачность (точнее "антипрозрачность") от 0 до 255.
P.S.: Это не официальное описание, а результат исследования ObjectARX SDK и тестовой программы:
Код:
[Выделить все]
  static void SETTRANS(void)
  {
    // Add your code for command ArxProject1.SETTRANS here
    ads_name en; ads_point p; double prc = 0;
    if (acedEntSel(L"\nВыберите примитив: ",en,p) == RTNORM && acedGetReal(L"\nПрозрачность <0> : ",&prc) != RTCAN)
    {
      AcDbObjectId eid; acdbGetObjectId(eid,en);
      AcDbEntityPointer pEnt(eid,AcDb::kForWrite);
      if (pEnt.openStatus() == Acad::eOk)
      {
        AcCmTransparency tr(prc);
        pEnt->setTransparency(tr);
      }
    }
  }

Последний раз редактировалось Александр Ривилис, 23.03.2011 в 16:55. Причина: Дополнительная расшифровка кода 440
Александр Ривилис вне форума  
 
Автор темы   Непрочитано 23.03.2011, 20:35
#14
aleksmk

Автодороги и Генеральный план
 
Регистрация: 02.03.2011
Москва
Сообщений: 12


Большое спасибо за указание нужного направления в поиске решения. Но программировать я начал учиться две недели назад (на vba для excel) и я мало что понял к сожалению.
Я понял что одно множество строго связано со вторым и что значения элементов этого второго множества переводятся в третье используя шестнадцатеричную систему. Так как же все это описывается? Мне нужно написать математическую формулу с обыкновенными операторами...
В этом, я надеюсь, разберусь. Но, я имею первое множество от 0 до 90. И знаю, что при 0 в конце концов я имею 0, а при 90 имею 33554457. Не понятно при чем тут 255?
aleksmk вне форума  
 
Непрочитано 24.03.2011, 01:04
#15
Александр Ривилис

программист, рыцарь ObjectARX
 
Регистрация: 09.05.2005
Киев
Сообщений: 2,413
Отправить сообщение для Александр Ривилис с помощью Skype™


Code = INT(33554432 + (100-Prc)*0.01*256), где Prc - процент прозрачности
Вроде так.
Александр Ривилис вне форума  
 
Автор темы   Непрочитано 24.03.2011, 11:38
#16
aleksmk

Автодороги и Генеральный план
 
Регистрация: 02.03.2011
Москва
Сообщений: 12


Ну, ребята, продолжаю тему.
Если я правильно понимаю, выражение INT(33554432 + (100-Prc)*0.01*256), мне ничего не дает к сожалению.
Я создал файл со слоями с именами от 0 до 51 и назначил им значение прозрачности в соответствии с именем: от 0 до 51. Создал las файл, выгрузил его и сделал таблицу с этими двумя значениями. Так вот, там мы имеем ряд начиная со здачения прозрачности равного 1. Попробывал найти общий член ряда, пока не выходит... :-(
Может мне кто поможет?! См. файл excel в архиве.

p.s. также я добавил dwg, правда слоев там с 16 по 51, но это не важно... просто чтобы быстро можно было проверить значения в таблице excel, если возникнет желание.
Вложения
Тип файла: zip Las code 440.zip (16.4 Кб, 52 просмотров)
Тип файла: dwg
DWG 2010
16-51.dwg (385.3 Кб, 1065 просмотров)

Последний раз редактировалось aleksmk, 24.03.2011 в 11:42. Причина: Добаил dwg
aleksmk вне форума  
 
Непрочитано 24.03.2011, 11:59
#17
Александр Ривилис

программист, рыцарь ObjectARX
 
Регистрация: 09.05.2005
Киев
Сообщений: 2,413
Отправить сообщение для Александр Ривилис с помощью Skype™


Цитата:
Сообщение от aleksmk Посмотреть сообщение
Если я правильно понимаю, выражение INT(33554432 + (100-Prc)*0.01*256), мне ничего не дает к сожалению.
Эта формула даёт тебе всё. Подставляя в неё вместо Prc значения процента прозрачности (любой от 0 до 100) ты получаешь тот код, который ты должен ввести в код 440. Дальше объяснять я пас. Всё что мог я уже сделал.
Александр Ривилис вне форума  
 
Непрочитано 24.03.2011, 12:24
#18
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,996


Цитата:
Сообщение от aleksmk Посмотреть сообщение
выражение INT(33554432 + (100-Prc)*0.01*256), мне ничего не дает к сожалению.
А в таком виде?
Код:
[Выделить все]
(defun for440 ( Prc )
  ;; Prc прозрачность (число от 0 до 100)
  ;;; Use
  ;;; (for440 90) ;-> 33554457 
  ;;; (for440 77);-> 33554490
  (fix(+ 33554432 (* (- 100 Prc) 0.01 256)))
  )
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Автор темы   Непрочитано 24.03.2011, 12:51
#19
aleksmk

Автодороги и Генеральный план
 
Регистрация: 02.03.2011
Москва
Сообщений: 12


Приношу свои извинения!
Спасибо вам, Александр.
Выражение INT(33554432 + (100-Prc)*0.01*256) действительно определяет зависимость. Только вместо 256 нужно взять 255.

Всем спасибо!
aleksmk вне форума  
 
Непрочитано 24.03.2011, 13:03
#20
Александр Ривилис

программист, рыцарь ObjectARX
 
Регистрация: 09.05.2005
Киев
Сообщений: 2,413
Отправить сообщение для Александр Ривилис с помощью Skype™


Цитата:
Сообщение от aleksmk Посмотреть сообщение
Приношу свои извинения!
Принимаю.
Цитата:
Сообщение от aleksmk Посмотреть сообщение
Спасибо вам, Александр.
Пожалуйста.
Цитата:
Сообщение от aleksmk Посмотреть сообщение
Выражение INT(33554432 + (100-Prc)*0.01*256) действительно определяет зависимость. Только вместо 256 нужно взять 255.
Думаю, что Вы не правы, т.к. значения могут быть от 00h до FFh, что соответствует диапазону от 0 до 255 - всего 256 значений. Формула возвращает плавающее число, с дробной частью, которая должна отбрасываться. В lisp для этого используется функция (fix ...), в VBA (если мне не изменяет память) функция INT.
Александр Ривилис вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Кто знает синтаксис las файла 2011? Помогите.



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Кто знает? REMEMBERFOLDERS=0, ACAD2006 Gaa AutoCAD 12 16.03.2011 12:23
Может кто знает Maxx Прочее. Архитектура и строительство 13 24.09.2007 22:44
Проблема с XREF в Autocad 2005(2004). Помогите, кто знает. 0leg AutoCAD 10 13.01.2006 17:53
Кто знает лисп!!! который бы отключал НЕАРЕСТ!!! Колян LISP 26 04.03.2005 14:49
Поможите, люди добрые. Может кто знает... kent3000 Прочее. Архитектура и строительство 8 19.02.2005 23:20