Re: LISP. Вставка в таблицу поля, соотвествующего площади примитива

Все работает корректно,спасибо!

Re: LISP. Вставка в таблицу поля, соотвествующего площади примитива

> VVA
1. Для метров делитель в макросе 0.000001 (исправить в инструкции?)
2. Непонятно как поменять стиль текста.
Ставит Standart, но почему то без наклона, хотя в установках он с наклоном.
3. В связи с моей любовью расставлять по слоям, хорошо бы добавить опцию установки поля на определенный слой (имя слоя)

Re: LISP. Вставка в таблицу поля, соотвествующего площади примитива

Александр!
Вопрос параллельно с VVA.
А можно ли суффикс и префикс писать другим фонтом, отдельным от числового значения?
Спасибо!

Re: LISP. Вставка в таблицу поля, соотвествующего площади примитива

Наконец-то форум ожил

alex пишет:

А можно ли суффикс и префикс писать другим фонтом, отдельным от числового значения

Нет, т.к. суффикс и префикс свойство поля. А там такой возможности не предусмотрено. Если бы суффикс был задан текстом (в мтексте) то проблем не вижу.

> iv
1. В опции установка заждай масштабный коэффициент 0.00001 или я не так понял?
2. Текст создается entmake. Для наклона нужно добавить поле 51 типа '(51 . 0.261799), где 0.261799 - угол наклона в радианах
Либо этот кусок кода

    ;_ Создаем текст
  (setq txt (entmakex
      (list
        (cons 0 "TEXT")
        (cons 100 "AcDbEntity")
        (cons 100 "AcDbText")
        (cons 72 0)           ;_ выравнивание влево
        (cons 1 fld)
        ;(cons 7 style) ;_Текущий стиль
        ;(cons 8 layer) ;_Текущий слой
        (cons 10 '(0 0 0))
        (cons 11 '(0 0 0))
        (cons 40 *TEXTSIZE*) ;_Высота текста
        ) ;_ list
      ) ;_ entmakex
          )

Засменить на этот

(setq tstyle (getvar "TEXTSTYLE")) ;_Стиль текста Стиль должен существовать
    ;_ Создаем текст
(if (= (cdr (assoc 40 (tblsearch "STYLE" tstyle))) 0.0)
     ;; нулевая высота текста
   (vl-cmdf "_.-TEXT" "_S" tstyle "_none" '(0 0 0) *TEXTSIZE* 0 fld)
   (vl-cmdf "_.-TEXT" "_S" tstyle "_none" '(0 0 0) 0 fld)
   ) ;_ end of if
    (setq txt (entlast))

Причем в этой строке

(getvar "TEXTSTYLE")) ;_Стиль текста Стиль должен существовать

можно задать свой УЖЕ СУЩЕСТВУЮЩИЙ стиль
типа

(setq tstyle "Стиль1")

3. Можно на кнопочке перед вызовом PAREATLB добавить что-то типа
_-LAYER;_M;Новый_слой_текста;PAREATLB и т.д.

Re: LISP. Вставка в таблицу поля, соотвествующего площади примитива

> Незнайка

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

Вариант здесь http://dwg.ru/f/showthread.php?t=14528

Re: LISP. Вставка в таблицу поля, соотвествующего площади примитива

Спасибо.
Все работает ровно так, как я мечтал, но вот только вместо площади ЛИСП выдаёт вот это:
file://acobjprop/ Object(%<\_ObjId 0>%).Area file://f/ "%lu2%ps[,m2]%pr1%ct8[1]"
И если не трудно переделайте это для нахождения длин, ибо я работаю с инженерными сетями.
p/s/ офтопик, но всё же, что самое интересное за это время я перешел на другую работу, а там необходимо, чтоб длина записывалась в каждую четвертую строку:). Ну это я в экселе с макросами поколдую.

Re: LISP. Вставка в таблицу поля, соотвествующего площади примитива

> Незнайка
Скопировал, проверил, выдает площади. Сбрось на почту свой файл, проверю

Re: LISP. Вставка в таблицу поля, соотвествующего площади примитива

> VVA
http://slil.ru/25080757
ну чего я такой несчастливый, ведь на рабочем компе все пошло, а у меня...

Re: LISP. Вставка в таблицу поля, соотвествующего площади примитива

> Незнайка
Вставляет в твою таблицу площади. Выслал твой файл почтой

Re: LISP. Вставка в таблицу поля, соотвествующего площади примитива

разобрался, что было так и не понял...
p/s/ а что там насчёт длины слышно :)

Re: LISP. Вставка в таблицу поля, соотвествующего площади примитива

> Незнайка
И слышно и видно
http://dwg.ru/f/showthread.php?p=183237

Re: LISP. Вставка в таблицу поля, соотвествующего площади примитива

VVA
А у меня вот какая мысль.... Если есть необходимость в том чтоб проставить в ячейку таблицы значение площади, значит кому-то обязательно понадобится проставить длину, и т. д. А реально получить свойства примитива в диалоговом окне (dcl) или каким-нибудь другим способом выбрать из списка всех свойств примитива интересующее свойство? Я думаю така программа получила бы широкое применение...

Re: LISP. Вставка в таблицу поля, соотвествующего площади примитива

> Игорь
Длинну она тоже ставит, см. последнюю ссылку.
Что касается других свойств, то пока таки просьб не поступало.

Re: LISP. Вставка в таблицу поля, соотвествующего площади примитива

мне кажеться надо добавить и штриховку в объекты с площадью

Re: LISP. Вставка в таблицу поля, соотвествующего площади примитива

А еще хорошо бы модифицировать под конструкторов. Нам часто приходится подсчитывать массу = Объем * вес. Т.е. добавить ввод веса и толщины.

Re: LISP. Вставка в таблицу поля, соотвествующего площади примитива

Точнее не вес, а плотность blush

Re: LISP. Вставка в таблицу поля, соотвествующего площади примитива

Для 2009 автокада удалил строчку проверки версии - работает. Только если поле в ячейке таблицы умножить на число, то результат неверный.
З.Ы.: Как бы программку под расчет массы заточить? Масштабный коэфф. = плотности, а вот ввод бы толщины еще добавить... масса=площадь*толщина*плотнось

Re: LISP. Вставка в таблицу поля, соотвествующего площади примитива

Господа! Подскажите, как программным способом (AutoLISP) создать поле (field), обращающееся к блоку с атрибутами? Желательно без применения vla-объектов-функций, а только со стандартными lisp-командами. Если без них (vla) не обойтись, тогда расшифруйте запись:

(strcat "%<\\AcObjProp Object(%<\\_ObjId "
             (vl-princ-to-string(vla-get-objectid (vlax-ename->vla-object en)))
                ">%).Area \\f \"%lu2%ps["*PREF* "," *SUFF*
                "]%pr"(itoa *PREC*) "%ct8["(vl-princ-to-string *SCALE*)"]\">%"
                ) ;_ strcat

А именно, что это значит: "%<\\AcObjProp Object(%<\\_ObjId ". Откуда берется, на что указывает и где про это можно почитать?
Я так понимаю команда field работает только в оконно-диалоговом режиме.?

Re: LISP. Вставка в таблицу поля, соотвествующего площади примитива

Приведенный код как раз таки и создает поле программным способом.

Я так понимаю команда field работает только в оконно-диалоговом режиме.?

НЕ правильно понимаете

А именно, что это значит: "%<\\AcObjProp Object(%<\\_ObjId ". Откуда берется, на что указывает и где про это можно почитать?

Это как раз таки признак поля.
Модет картинка поможет
http://keep4u.ru/full/081121/018390caea430497a9/jpg

Re: LISP. Вставка в таблицу поля, соотвествующего площади примитива

Здравствуйте .
А можно ли вставить в поле объем 3DSolid , или формулу : типа объем умножить на плотность = вес ? Может кто-нибудь подсказать ?

Re: LISP. Вставка в таблицу поля, соотвествующего площади примитива

В полях ссылки на объем солида нет. Хотя в свойствах объекта объем есть. Полями пока такое невозможно

Re: LISP. Вставка в таблицу поля, соотвествующего площади примитива

Можно узнать как эту пронрамму или код
получить?
Где он?
И как сдедать  чтоб он работал на 2005 АКАДе
Куда его Нужно вписывать?
И что нужно загрузить?
Извините за незнание
Я буду очень благодарен если Вы раскажите
Заранее благодарю

Re: LISP. Вставка в таблицу поля, соотвествующего площади примитива

VVA, спасибо, направили на правильный путь. Но появился другой вопрос: как создать поле через Тип объекта: Вхождение блока ?
Воспользовался вашим же вариантом http://forum.dwg.ru/showthread.php?t=27235 , но мне он не подходит, т.к. данные о составе блока берет из таблицы блоков и соответственно Тип объекта у поля становится Описание атрибута. А мне необходимо извлечь состав блока именно из элемента INSERT.
Подскажите как это реализовать.

Re: LISP. Вставка в таблицу поля, соотвествующего площади примитива

> Александр К.
Состав блока в смысле атрибуты?
1.

(vlax-invoke blk_obj 'Getattributes)

2.

(if (and
    (setq e1 (car(entsel "\nВыберите блок :")))
    (setq ed (entget e1))
    (= (cdr (assoc 0 ed)) "INSERT") ;_Блок
    (= (cdr (assoc 66 ed)) 1)       ;_След аттриб
      )
    (progn
        (setq e1 (entnext e1) retlist nil)
        (while (AND e1
          (= (cdr (assoc 0 (setq ed (entget e1)))) "ATTRIB")
         ) ;_ End of AND
    (setq retlist (cons e1 retlist))
    (setq e1 (entnext e1))
      )
    )
  )
(princ Retlist)

Re: LISP. Вставка в таблицу поля, соотвествующего площади примитива

VVA, да, состав блока - именно атрибуты. Еще раз спасибо. Вот теперь то, что нужно было!