Пожалуйста, не блокируйте рекламу!

0 Пользователей и 1 Гость просматривают эту тему.

*

Оффлайн SABRUS

  • ***
  • 212
  • Репутация: +44/-1
  • лучше день потерять...

Test

1.В руководстве по АС есть описание способа как создать символьный тип линии ч/з "параметры->реквизиты->типы линий", в том числе есть описание процедуры создания линий смещенных отн-но линии расположения хотспотов начала и конца создаваемых прямых/проще скрин посмотреть чем понять че я тут написал)))

2. Хочу описать в скрипте свой символьный тип "смещенной" линии(как это сделать вышеописанным способом(1) я знаю), не могу найти/понять как добиться этого поведения в скрипте...сорц(АС16) и скрин прилагаю...
(прямые линии на скрине - для понимания сути вопроса, вопрос непосредственно о символьных линиях)

Речь идет о команде: DEFINE SYMBOL_LINE name dash, gap, macro_name PARAMETERS [name1 = value1,
...
namen = valuen]
(стр.228 стандартного пдф руководства по ГДЛ АС16)
Пишу макрос, пытаюсь совместить Origin с глобальным началом(а-ля "повторяю действия из 1-го пункта"), итог не радует.
« Последнее редактирование: Ноября 22, 2012, 00:14:58 от SergeyAB »

*

Оффлайн lsr

  • *****
  • 1268
  • Репутация: +247/-6
  • Пол: Мужской
  • http://sl-gdl.com
Обдурить не удалось даже с помощью штриховки, все равно центрируется. А в примечании 2 на той же 228(210)стр. написано что с помощью команды Define symbol_line нельзя сделать символьную, только простую.

Частичное решение - создать точку- линию длиной=0 , но точку видно.

LINE2 0,offset,0,offset
line2 0,0,h,h
line2 0,h,h,0

!!! Ну или любая закорючка из штриховки
POLY2_ 3,1,
0,0,1,
A/2,0,900,
A/2,180,4000

*

Оффлайн SABRUS

  • ***
  • 212
  • Репутация: +44/-1
  • лучше день потерять...
ок, буду искать дальше.

*

Оффлайн Valery W

  • *****
  • 5987
  • Репутация: +634/-14
  • Пол: Мужской
А в примечании 2 на той же 228(210)стр. написано что с помощью команды Define symbol_line нельзя сделать символьную, только простую.
Так сказано в Справочном руководстве GDL к 16 версии. И это опечатка. Если посмотреть руководства к предыдущим версиям, то там написано:
"Примечание: В предложении DEFINE LINE_TYPE можно определить только простой тип линии, т.е. линии, состоящие только из отрезков и пробелов. С помощью этой команды нельзя определить символьные типы линий."


*

Оффлайн SABRUS

  • ***
  • 212
  • Репутация: +44/-1
  • лучше день потерять...
да речь не про define line_type, речь краз о расширении этой команды - define symbol_line...

вот интопик этого вопроса (этим летом)  -
http://archicad-talk.graphisoft.com/viewtopic.php?p=206282

тут советуют другую хитрость, по "ту сторону"&"равноудаленно" ))) от необходимого символа, тыкать фальш-хотспот, не знаю будет ли он виден в результате, щас попробую...

Цитата:
You need to use a Hotspot.
Place it to the opposite side of the intended center.

В аттаче результат, этого фокуса ))) следующий вопрос - как рисовать бесцветные хотспоты)))

PS: написал разработчикам...

PSS: еще не много поколдовал, так сказать чтобы закрыть пока тему  - чтобы использовать свою символьную линию со смещенным сердечником, в 2D скрипте можно поступать так:
msv= IND(Line_type,"msv1")    ! где msv1 - имя линии созданной ч/з интерфейс, способом из п.1,
ну и далее
line_type msv
...
результат - скрин "PSS image"

из минусов этого способа - необходимо таскать файл *.aat, вместе с библ.элементом, иначе - если такого типа линии в проекте не будет, запрос IND вернет 1, и линия будет просто сплошной...
« Последнее редактирование: Ноября 22, 2012, 22:27:09 от SergeyAB »

*

Оффлайн Valery W

  • *****
  • 5987
  • Репутация: +634/-14
  • Пол: Мужской
да речь не про define line_type, речь краз о расширении этой команды - define symbol_line...
Да ясен хрен. Просто довел до сведения.

А с хоспотом давно уже попробовал и увидел результат, поэтому молчу про него.
Если же хоспот делать невидимым, то и результат будет как будто его нет и базовая линия опять идет через центр символа.

*

Оффлайн SABRUS

  • ***
  • 212
  • Репутация: +44/-1
  • лучше день потерять...
как сделать я в принципе понял, осталось сделать.
Вся фигня в том что в руководстве по ГДЛ не описаны ADDITIONAL_DATA исп. в команде Define Symbol_line, и примеров использования этих аттрибутов я тоже найти не смог...в ADK нашел раздел по теме, но какие имена у этих полей при вызове из скрипта...неизвестно...

There are additional data assigned to line type attributes in the API_AttributeDef structure; the definition of a line type dash pattern or symbol is passed through the ltype_dashItems and ltype_lineItems fields, respectively. Refer to the API_DashItems and API_LineItems structures to get more details on them.

Сама структура:

API_LineItems

Describes the details of a symbol line.

    typedef struct {
        API_LtypItemID    itemType; / нужно это поле

! itemType -    The symbol line item type.

        Int32              filler_1;
        double             itemCenterOffs; / и вот это поле

! itemCenterOffs -    The vertical distance from the origin of the symbol line. Used in separator, centerdot, and centerline item types.

        double             itemLength;
        API_Coord          itemBegPos;
        API_Coord          itemEndPos;
        double             itemRadius;
        double             itemBegAngle;
        double             itemEndAngle;
    } API_LineItems;

===================================

 typedef enum {
        APILine_IllegalItemType,
       APILine_SeparatorItemType,
        APILine_CenterDotItemType,
        APILine_CenterLineItemType,
        APILine_DotItemType,
        APILine_RightAngleItemType,
        APILine_ParallelItemType,
        APILine_LineItemType,
        APILine_CircItemType,
        APILine_ArcItemType
    } API_LtypItemID;

APILine_SeparatorItemType -     Separator line item type. It is described with a center offset (vertical distance from the origin).

=============================================

Так что вопрос уперся в псевдонимы этих двух полей при установке аттрибутов в ADDITIONAL_DATA...интересно что разработчики ответят...вообще кроме как по LightWorks эти самые ADD_Data не публикуются...хотя команд с их использованием с десяток...
Хоть бы примеры объектов найти где исп. ADDITIONAL_DATA, но почему то мне кажется что не найти...

 

Похожие темы