Перейти к публикации

Кто на Grip писал помогите!


Z-MAN

Рекомендованные сообщения

Каким образом можно удалить объеты на листе чертежа?

Пишу DELETE/ALL - удаляются объекты со всех листов. а надо бы, чтоб только с текущего.

Ссылка на сообщение
Поделиться на других сайтах


Если речь идёт об удалении объектов созданных в Modeling, это одни и те же объекты, несмотря на то, что в Drafting они отображаются на разных видах разных листов, поэтому результат выполнения DELETE/ALL вполне понятен. Если надо удалить с конкретного листа всё, можно удалить все виды:

VIEWD/'view name'[,IFERR,label:]

или весь лист:

DRAWD/'drawing name'[,IFERR,label:]

Ссылка на сообщение
Поделиться на других сайтах

Не плохо бы знать каким образом создаются объекты на чертеже. Если программно, то каждому объекту можно присвоить имя, которое пойдёт в его свойства и потом найти его по этому имени и удалить (причём разным объектам придать одно и то же имя)

Ссылка на сообщение
Поделиться на других сайтах

Объекты на листе создаются программно. Построение группы объектов может выполнятся как только лишь на первом листе, так и на втором, на третьем и т.д. При помощи этой же GRIP-программы можно изменить по выбору пользователя один набор объектов на другой. Для этого необходимо удалить ранее созданные объекты. Если в чертеже имеется только один лист команда DELETE/ALL работает превосходно. Однако, если в чертеже два или более листа эта команда удаляет объекты со всех листов. Вот если б можно было выбрать набор объектов только на текущем листе и их удалить, было бы оченно хорошо. :wallbash:

Ссылка на сообщение
Поделиться на других сайтах

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

Операторы для работы с группами:

obj = GROUP/obj list

GRPEDT/{ADD,{group object|group name|'groupname'}|REMOVE},obj list

UNGRP/[TOP,]obj list

Ссылка на сообщение
Поделиться на других сайтах

Спасибо. Это есть неплохой выход. А как получить номер текущего листа (или его название)?

Ссылка на сообщение
Поделиться на других сайтах

Большинство видимых объектов в файле (кривые, аннотация, тела и и т.д. ) имеют видозависимый статус (view dependend status) - или они принадлежат model - не видозависимы , или принадлежат виду (model view, drawing sheet, drawing member view) - видозависимы. Не путать с видозависимым редактированием (view dependend edit) - это разные вещи. Например, линия отрисованная на листе чертежа, или в expand drawing member view - видозависима. Т.е. надо перебирать базу файла (NEXT) в поисках видозависимых обектов (опрашивать их статус) и если они зависят от искомого листа чертежа - то запоминать в массив, потом удалять. Удалять при переборке нельзя. Я не помню, есть ли в GRIPe возможность опросить именно название вида для видозависимого объекта, а статус вроде как можно, - я очень давно не работал с GRIP. Такие вещи, как прямая работа с базой файла, наверное правильнее было-бы делать в Си (или там в Си++ и т.д.) - по сути поддержка GRIPa прекратилась еще на v10 - 11 UGII.

Ссылка на сообщение
Поделиться на других сайтах

ln=line/0,0,xmax,ymax

obj=group/ln

gr_name=&curdrw

&NAME(obj)=gr_name

Далее, используя NEXTE хочу из базы файла найти именно тот объект, который имеет имя gr_name. Подскажите как узнать что имя очередного объекта = gr_name.

Ссылка на сообщение
Поделиться на других сайтах

УРА! заработало.

Оцените:

string/gr_name(12)

entity/ln,obj

number/ymax,xmax,i,j

ENTITY/E(100)



gr_name=&curdrw

DO/A1:,j,1,1000000

E(j)=&ENAME(j,gr_name,IFERR,A2:)

A1:

A2:

j=j-1

IF/j==0,JUMP/A3:

DELETE/E(1..j)

A3:

drawv/,,,,ymax,xmax

ln=line/0,0,xmax,ymax

obj=group/ln

&NAME(obj)=gr_name

HALT
единственное не знаю как определить общее число обектов в файле, поэтому поставил мильён

DO/A1:,j,1,1000000
Ссылка на сообщение
Поделиться на других сайтах

никто не подскажет, как определить общее число объектов в файле?

Ссылка на сообщение
Поделиться на других сайтах

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

$$$$$$$$$$$$$$$$$$$$

$$ START

L10:

.........

Тело цикла

.........

IFTHEN / $$ Условие выхода

.........

JUMP / L20: $$ Выход

ENDIF

JUMP / L10: $$ Бесконечный цикл

$$ END

L20:

$$$$$$$$$$$$$$$$

Только, если здесь gr_name - наименование чертежа ( и / или объекта), то (12) - не есть хорошо. По крайней мере если в Си имя [30+1] символов, то в GRIPe - 30. Надо в доках посмотреть, а то потом будут чудеса.

Ссылка на сообщение
Поделиться на других сайтах

Присоединяйтесь к обсуждению

Вы можете опубликовать сообщение сейчас, а зарегистрироваться позже. Если у вас есть аккаунт, войдите в него для написания от своего имени.
Примечание: вашему сообщению потребуется утверждение модератора, прежде чем оно станет доступным.

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу.




×
×
  • Создать...