Тема: Набор по координате Z

Сразу скажу я новичок в этом деле.Всё что пишу-всё с учебником в руках и с помощью форума.Задача такая:Хотелось бы выбрать одну точку в чертеже,и чтобы вследствие этого сформировался набор из точек с такой же координатой Z,как у выбранной точки.
Всё на что меня хватило это (setq t (cadddr (assoc 10 (entget(car(entsel))))))
                            (setq s (ssget "_X" '((-4 . "*,*,=") (10 2 2 t)))),
но естественно не работает.Скажите можно ли это сделать как-то,или всё не так просто?
Спасибо за внимание.

Re: Набор по координате Z

Попробуй так, например выбрать точки :

(setq z (getreal "\nВведи значение Z: "))
(setq ss (ssget "x" (list (cons 0 "point")(cons -4 "*,*,=")(cons 10 (list 0.0 0.0 
z)))));_без проверки

[FONT=Arial]~'J'~[/FONT]

Re: Набор по координате Z

fixo, так получается,а хотелось бы выбрать точку,а не вводить значение какой-либо высоты.

(изменено: fixo, 20 августа 2012г. 23:50:15)

Re: Набор по координате Z

Проверил в АвтокадуБ у меня выбирает правильно

(setq point_set (ssget "_:S" (list (cons 0 "point"))))

(setq z (last (cdr (assoc 10 (entget (ssname point_set 0))))))

(setq ss (ssget    "x"
        (list (cons 0 "point")
              (cons -4 "*,*,=")
              (cons 10
                (list 0.0
                  0.0
                  z)))))

[FONT=Arial]~'J'~[/FONT]

Re: Набор по координате Z

Думаю, что так будет правильнее и надёжней:

(setq deltaZ 1e-6) ;; Предел погрешности
(setq ss (ssget "_X"
      (list (cons 0 "point")
            (cons -4 "<and")
                (cons -4 "*,*,>=")
                (cons 10 (list 0.0 0.0 (- z deltaZ)))
                (cons -4 "*,*,<=")
                (cons 10 (list 0.0 0.0 (+ z deltaZ)))
            (cons -4 "and>")            
       )    
))

Re: Набор по координате Z

Всем спасибо большое,в автокаде работает,но мне это нужно для работы в Autodesk Land Desktop,там видимо всё не так просто.Но всё равно спасибо большое за помощь!

Re: Набор по координате Z

Там вроде вместо Point есть другой объект
TopoPoint кажется, нет ?

Re: Набор по координате Z

fixo,
Если в автокаде это просто Точка,то в лэнде это Объект-точка Civil (так написано в свойсвах объекта).Причём если просто (без фильтров) создавать набор из таких точек (Объект-точка Civil) с помощью функции ssget, то он нормально создаётся.

Re: Набор по координате Z

Жаль ничем не могу помочь,
попробуй поискать в свойствах этого объекта-точки
с помощью лиспа:
в командной строке набери (скопируй отсюда):

(vl-load-com)
(vlax-dum-object
 (setq point_ent(vlax-ename->vla-object
 (ssname (ssget "_:S" (list (cons 0 "point")))) 0))T)

Может там есть особое свойство указывающее координаты

Проверь скобки

Re: Набор по координате Z

Объект называется "AECC_COGO_POINT", но его DXF описание особо полезного ни чего не содержит:

((-1 . <Имя объекта: 7ffffa25d00>)
 (0 . AECC_COGO_POINT)
 (330 . <Имя объекта: 7ffffa039f0>)
 (5 . 5140)
 (100 . AcDbEntity)
 (67 . 0)
 (410 . Model)
 (8 . 0)
 (100 . AeccDbCogoPoint))

А вот у VLA-объекта есть свойство "Elevation", по нему уже можно отсортировать по высоте(отметке)

Re: Набор по координате Z

Disney,
С elevation то я разобрался,но в activeX я не шарю совсем.Если не трудно помогите.

Re: Набор по координате Z

Павел Артемьев пишет:

но в activeX я не шарю совсем

Там на самом деле всё просто, ты же наверняка сам хочешь разобраться, а не чтоб тебе готовый код написали  ;)
Справка по VBA - AutoCAD объектная модель
Как пользоваться справкой по VBA, для AutoLISP Четыре правила для работы с ActiveX в Visual Lisp
Ну а там уже чего не понятно спрашивай.