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

Вернуться   Форум DWG.RU > Программное обеспечение > AutoCAD > Динамические блоки > Блок с координатой??

Блок с координатой??

Ответ
Поиск в этой теме
Непрочитано 15.12.2005, 21:33 #1
Блок с координатой??
X-DeViL
 
Бизнес-шмизнес
 
Питер
Регистрация: 26.05.2004
Сообщений: 1,911

Как создать динамический блок в котором будет текст отображающий координаты точки вставки в world ucs?

Думаю что выход в field с прописаным в нем diesel expression! поможите! очень надо (вот дошел негуровкие надписи писать начал)
Просмотров: 8937
 
Непрочитано 15.12.2005, 22:27
#2
Startrek

AutoCAD/AutoLISP
 
Регистрация: 27.08.2003
Seattle/USA
Сообщений: 1,133


А ты не хочеш просто БЛОК с АТТРИБУТОЙ к примеру как этот - >
x POINT
и простенький лисп используя GETPOINT функцию и вставить блок (можно динамический для определения размера) в выбранную точку и закинуть значение координат (в нужном формате) в аттрибуту
Startrek вне форума  
 
Непрочитано 15.12.2005, 22:58
#3
Apelsinov

Проектировщик ВК. LISP-любитель.
 
Регистрация: 15.12.2003
Москва
Сообщений: 1,192
<phrase 1=


Что то типа этого в field:
Код:
[Выделить все]
%<\AcObjProp Object(%<\_ObjId 2066198552>%).Coordinates>%
Ну у меня так получилось.
(если честно - я в этом плохо понимаю, просто по аналогии вставил нужное свойство Coordinates)
Apelsinov на форуме  
 
Непрочитано 16.12.2005, 00:45
#4
Лентяй

Project Engineer
 
Регистрация: 05.01.2005
Лос Анджелес
Сообщений: 1,392


У меня по бедности 2005-й, потому предлагаю просто прогу:
Код:
[Выделить все]
(defun C:CoorTxt (/ bks ass ht pti inp om cmd)
  (vl-load-com) 
  (setq om (getvar "OSMODE") cmd (getvar "CMDECHO") 
        adoc (vla-get-activedocument (vlax-get-acad-object)) 
        ass (vla-get-ActiveSelectionSet adoc) 
   str "");setq 
  (if (/= (vla-get-count ass) 0) (vla-clear ass)) 
  (setvar "cmdecho" 0) 
  (prompt "\nSelect Blocks: ") 
  (vla-SelectOnScreen ass (vlax-safearray-fill (vlax-make-safearray vlax-vbinteger '(0 . 0)) '(0)) 
    (vlax-safearray-fill (vlax-make-safearray vlax-vbvariant '(0 . 0)) (list "*Insert"))) 
  (vlax-for bkr ass 
    (setq bkd (vla-item (vla-get-blocks adoc) (vla-get-name bkr)) 
          ipt (vlax-get bkr "InsertionPoint")) 
    (if (vl-catch-all-error-p (vl-catch-all-apply '(lambda (x y) (vlax-for el x 
     (and (vlax-property-available-p el "TagString") (= (vla-get-TagString el) y)))) (list bkr "INP"))) 
      (progn (vlax-for ent bkd 
     (if (and (= (vla-get-objectname ent) "AcDbAttributeDefinition") 
         (= (vla-get-Invisible ent) :vlax-false)) 
       (setq ht (if (null ht) (vla-get-height ent) ht) 
             pti (vlax-get ent "InsertionPoint") 
             pt (cond ((null pt) pti) 
                    (pt (if (< (cadr pt) (cadr pti)) pt pti))))
       (progn (vla-getboundingbox ent 'pt1 'pt2) 
         (setq pts (mapcar 'vlax-safearray->list (list pt1 pt2)) 
               ptn (if (apply 'and (mapcar '(lambda (x y) (<= x y)) (car pts) ptn)) (car pts) ptn) 
               ptx (if (apply 'and (mapcar '(lambda (x y) (>= x y)) (cadr pts) ptx)) (cadr pts) ptx))))) 
   (if (null ht) (setq ht (vla-get-LastHeight (vla-item (vla-get-TextStyles adoc) "Standard"))))
   (vla-addAttribute bkd ht acAttributeModeInvisible "BlockInsPoint" (vlax-3d-point 
      (list (* 0.5 (+ (car ptn) (car ptx)))
            (- (if (null pt) (cadr ptn) (min (cadr ptn) (cadr pt))) ht)
            (last ptn))) "INP" "") 
   (vla-update bkd)));if
    (while ipt (setq str (strcat str (rtos (car ipt)) " ") ipt (cdr ipt))) 
    (foreach at (vlax-safearray->list (vlax-variant-value (vla-getAttributes bkr))) 
      (if (= (vla-get-TagString at) "INP") 
   (progn (vla-put-TextString at str) (vla-put-Invisible at :vlax-false)))));vlax-for 
  (setvar "OSMODE" om) (setvar "CMDECHO" cmd) 
  (vla-update bkr) 
  (princ) 
);end
Повесь ее на кнопку и будет тебе щастье
Лентяй вне форума  
 
Непрочитано 16.12.2005, 09:48
#5
asys

архитектор
 
Регистрация: 10.08.2005
Ростов-на-Дону
Сообщений: 5,295


Вот мой вариант
[ATTACH]1134715694.dwg[/ATTACH]
asys вне форума  
 
Непрочитано 16.12.2005, 16:12
#6
Apelsinov

Проектировщик ВК. LISP-любитель.
 
Регистрация: 15.12.2003
Москва
Сообщений: 1,192
<phrase 1=


X-DeViL молчит, ну может ему недосуг... но интересно чтож ему надо?

Я невнимательно читал первый пост. Пардон. Оттого дал описание field не для блока, а для точки.

ИМХО динамический блок - это круто, но я невидел его, А2006 мимо меня пока. Однако - сдесь он вроде и не надо. Обойдемся обычным блоком.

Asys открыв твой файл - вижу блок с атрибутом в котором жестко забито значение координат - в чем смысл?
Возможно это что-то сглючило, возможно подразумевалась динамика, ибо я пытался подобное сделать, получилось, работает. Прикладываю файл.

О том как это сделано:
Делаем блок с атрибутом. вставляем.
далее команда field -> в окне выбираем свойство по объекту ->выбираем наш блок -> выбираем свойство Position (а на самом деле это свойство наз. InsertionPoint) - смотрим вниз на строку кода - копируем его в буфер -> выходим из диалога по cancel. команда attedit - редактируем атрибут в нашем блоке - вставляем значение з буфера.
Радуемся и вспоминаем Лентяя добрым словом, он-же вона какую пограммулину написал... пора ник менять [sm1631]
[ATTACH]1134738739.dwg[/ATTACH]
Apelsinov на форуме  
 
Непрочитано 16.12.2005, 16:30
#7
asys

архитектор
 
Регистрация: 10.08.2005
Ростов-на-Дону
Сообщений: 5,295


>Apelsinov
У меня вроде работает. Подвинул - реген - координаты изменились. Я немного по другому делал:
1 -Сделал блок с атрибутом
2 - в Редакторе блока (когда экран желтый) выбрал поле со свойством по объекту
3 - выбрал атрибут
4 - выбирал свойство Position атрибута
5 - вышел и сохранил изменения блока

Хотя я невнимательно прочел задание - нужна была точка вставки блока, а не атрибута :?
asys вне форума  
 
Автор темы   Непрочитано 16.12.2005, 20:13
#8
X-DeViL

Бизнес-шмизнес
 
Регистрация: 26.05.2004
Питер
Сообщений: 1,911


Извиняюсь что не отвечал... просто не откуда пока... новая работа... инета нет... пока... через недельку обещают... Пиши из дома...

Что я хочу в идеале...

Мне нужен блок для простановки отметок... (в архитектурных чертежах). При изменении координаты Y блока хочу чтобы отметка менялась...
X-DeViL вне форума  
 
Непрочитано 16.12.2005, 20:18
#9
Startrek

AutoCAD/AutoLISP
 
Регистрация: 27.08.2003
Seattle/USA
Сообщений: 1,133


Люди - всем хорш способ, да беда что нельзя (у меня никак не выходит по крайней мере) сохранить блок за пределами чертежа и вставлять в другие без повторения всей процедуры.
Я тут в припадке БАААЛЬШОЙ лени написал крохотульную програмку
которая вставляет блок COORD
Код:
[Выделить все]
(defun c:bs ()
(setq p (getpoint "\nSelect Point: "))
(setq m1 (rtos(car p)2 4))
(setq m2 (rtos(cadr p) 2 4))
(setq m12 (strcat m1 " , " m2))
(command"insert""coord" p "" "" "" m12)
(princ)
)
[ATTACH]1134754239.jpg[/ATTACH]
Startrek вне форума  
 
Непрочитано 16.12.2005, 20:46
#10
asys

архитектор
 
Регистрация: 10.08.2005
Ростов-на-Дону
Сообщений: 5,295


>X-DeViL
Такая устроит http://dwg.ru/dwl/333
Я на этом вопросе собаку наверное съел, пока сделал, пару лет меня эта отметка мучила и только в 2006 получилась нормало, как я хотел.
asys вне форума  
 
Непрочитано 16.12.2005, 21:30
#11
Лентяй

Project Engineer
 
Регистрация: 05.01.2005
Лос Анджелес
Сообщений: 1,392


Цитата:
X-DeViL: Мне нужен блок для простановки отметок... (в архитектурных чертежах). При изменении координаты Y блока хочу чтобы отметка менялась...
Так это вы мне "козу" учинили? Передрано из моего "слезного" поста:
Цитата:
Тут мне мой шанхайский 2005-й подарочек преподнес - сначала, подлец, рухнул, а после переустановки невозможно стало вставлять блоки с атрибутами при ATTREQ=0. Во все атрибуты автоматом записывается значение координаты Х. Причем, если блок двигать, то значение атрибута соответственно меняется, независимо от присвоенного Самое противное. что при ATTREQ=1, запрашиваются значения атрибутов, но в отображается все равно координата Х. И что бы это значило, и, главное, как от этого избавиться?
Да. вот еще интересная деталь. То же самое происходит по команде ATTSYNC.
Лентяй вне форума  
 
Автор темы   Непрочитано 16.12.2005, 23:24
#12
X-DeViL

Бизнес-шмизнес
 
Регистрация: 26.05.2004
Питер
Сообщений: 1,911


Asys

5 баллов... то что надо... )) спасибо...
X-DeViL вне форума  
 
Непрочитано 20.12.2005, 10:30
#13
Лентяй

Project Engineer
 
Регистрация: 05.01.2005
Лос Анджелес
Сообщений: 1,392


Блин! А решение-то было прямо под носом! Из ToolPak-9 Manual'а:
Reactors Tab
LiveAttributes: Automatically populates (when inserted) and updates (when moved) block attributes for X, Y, and Z coordinates. Users can specify tag names, numeric format, prefix/suffix.
[ATTACH]1135063807.gif[/ATTACH]
Лентяй вне форума  
 
Непрочитано 20.12.2005, 10:56
#14
VVA

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


Просто к слову. Наткнулся в инете вот на это
Цитата:
Auto XYZ Coordinates [general]

This utility will allow you to have smart coordinates that can be updated automatically, when a point is moved.

When the point block(s) are copied, the new points will become smart coordinates too!.

The routine requires a block with a single attribute [a sample is provided], and it is a source open code, have fun doing your own adaptations.
http://www.geometricad.com/free.php?p=3&lang=en
Вложения
Тип файла: dwg
DWG 2004
Zpoint.dwg (35.4 Кб, 1795 просмотров)

Последний раз редактировалось VVA, 09.03.2009 в 19:16. Причина: Добавлен блок с Z координатой
VVA вне форума  
 
Непрочитано 27.03.2008, 09:26
#15
smitt


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


Предлагаю решение проще, умножить на единичный вектор и получаем необходимую единственную координату. Например [1,0,0] дает координату только по х, [0,1,0] - по y и [0,0,1] - по z! Решение очень простое и эффективное!
smitt вне форума  
 
Непрочитано 27.03.2008, 09:28
#16
zenon

Остекляем!!! Алюминим!!!
 
Регистрация: 21.02.2005
Москва
Сообщений: 3,826
<phrase 1=


Вот это археолог
__________________
Мы можем делать быстро, качественно и недорого, выбирайте любые 2 условия.:search:
zenon вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > AutoCAD > Динамические блоки > Блок с координатой??

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