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

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

*

Оффлайн nideKer

  • *****
  • 2603
  • Репутация: +121/-2
  • Пол: Мужской
  • freeRide 4ever
Предложение цикла FOR - TO - NEXT
« : Января 26, 2012, 21:22:35 »

Test

Есть 2Д элемент тиражированный скриптом:
FOR I=1 TO N
ADD2 A,0
FRAGMENT2 ALL,1
NEXT I
DEL N


Народ подскажите как сделать так чтоб когда тянешь за хотспотину на этаже:
1. мой фрагмент не растягивался пропорционально - а добавлялось количество этих самых фрагментов
2. растягивание происходило только вдоль одной оси (X соответственно)

За ранее спасибо!

*

Оффлайн lsr

  • *****
  • 1268
  • Репутация: +247/-6
  • Пол: Мужской
  • http://sl-gdl.com
Re: Предложение цикла FOR - TO - NEXT
« Ответ #1 : Января 27, 2012, 11:57:48 »
Возникает вопрос о размере фрагмента и с каким шагом его тиражировать, нужен ли зазор?
Приращение цикла =A? Ошибка? Ведь A - это максимум

Вероятно цикл должен быть равным символу, ну и плюс зазор если надо.
N= int(A/L) !L-длина символа
 И я бы поместил add2 после фрагмента, а так ты сразу сдвигаешь, хотя конечно смотря какой фрагмент

*

Оффлайн nideKer

  • *****
  • 2603
  • Репутация: +121/-2
  • Пол: Мужской
  • freeRide 4ever
Re: Предложение цикла FOR - TO - NEXT
« Ответ #2 : Января 27, 2012, 12:19:42 »
Возникает вопрос о размере фрагмента и с каким шагом его тиражировать, нужен ли зазор?
Приращение цикла =A? Ошибка? Ведь A - это максимум
:) А - это и есть ширина моего элемента (без зазора).
И я бы поместил add2 после фрагмента, а так ты сразу сдвигаешь, хотя конечно смотря какой фрагмент
Да - это однозначно - сенксЪ!

Сережа я собственно и хотел бы чтоб мой библ был по аналогу твоего ограждения,  когда тянешь за угловую хотспотину в плане чтоб мой библ состоящий из  фрагментов не растягивался пропорционально - "а добавлялось количество этих самых фрагментов" и растягивание происходило только вдоль одной оси (X соответственно)

*

Оффлайн lsr

  • *****
  • 1268
  • Репутация: +247/-6
  • Пол: Мужской
  • http://sl-gdl.com
Re: Предложение цикла FOR - TO - NEXT
« Ответ #3 : Января 27, 2012, 14:28:13 »
У тебя размер символа (то что сидит во фрагменте) не может быть больше габарита - A     число шагов - n=A/L 
Вот накидал разные варианты- с не фиксированным зазором, с фиксированным , без зазора. Думаю тебе нужен второй вариант, в библе он по умолччанию сохранен.

*

Оффлайн Sahasg552

  • ***
  • 153
  • Репутация: +43/-0
  • Пол: Мужской
  • Глупый кот
Re: Предложение цикла FOR - TO - NEXT
« Ответ #4 : Декабря 14, 2012, 08:39:13 »
возник еще такого рода вопрос. имеется определенный элемент, например цилиндр, за хотспот его можно увеличивать по длине и нужно сделать так, что после достижении определенной длины, возьмем например 100 мм, цилиндр смещается вправо на размер ширины, и при этом за хотспот его все еще можно тянуть увеличивая размер. я пробовал с помощью if размер циллиндра >100 then и дальше прописывал смещение, но из этого вышло то, что на втором скрине... буду рад любой помощи.
« Последнее редактирование: Декабря 14, 2012, 10:39:51 от Sahasg552 »

*

Оффлайн SABRUS

  • ***
  • 212
  • Репутация: +44/-1
  • лучше день потерять...
Re: Предложение цикла FOR - TO - NEXT
« Ответ #5 : Декабря 21, 2012, 12:28:22 »
некогда проверить, но IMHO:
1. размер цилиндра должен быть параметром(не переменной)
2. птом В основном скрипте
if GLOB_MODPAR_NAME = "длина_цилиндра" then
if "длина_цилиндра">100 then
offset="ширина_стержня"
endif
endif
3. В 2d(3d) скрипте:
Add2 0, +(-)offset
(AddY 0, +(-)offset)


*

Оффлайн Sahasg552

  • ***
  • 153
  • Репутация: +43/-0
  • Пол: Мужской
  • Глупый кот
Re: Предложение цикла FOR - TO - NEXT
« Ответ #6 : Декабря 22, 2012, 18:40:28 »
что-то не получается у меня..
видимо совсем еще зеленый я для таких дел.. я понимаю, конечно, это будет наглостью, но я хотел бы попросить Вас сделать по-возможности этот элемент, а я уже поковырялся/поразбирался бы в коде на примере. был бы Вам очень признателен!

*

Оффлайн SABRUS

  • ***
  • 212
  • Репутация: +44/-1
  • лучше день потерять...
Re: Предложение цикла FOR - TO - NEXT
« Ответ #7 : Декабря 22, 2012, 22:22:39 »
кагбе чтобы что то делать надо понимать что именно делать, иначе...
обьясните что именно вы хотите, а дальше посмотрим.
« Последнее редактирование: Марта 30, 2013, 18:58:18 от Valery W »

*

Оффлайн Sahasg552

  • ***
  • 153
  • Репутация: +43/-0
  • Пол: Мужской
  • Глупый кот
Re: Предложение цикла FOR - TO - NEXT
« Ответ #8 : Декабря 22, 2012, 23:43:46 »
сори за неясность =) в общем нужен элемент - цилиндр, с определенным диаметром. цилиндр должен увеличиваться в длине посредством хотспотов, причем по достижении рубежа в 100 мм цилиндр смещается вверх на ширину диаметра и продолжает увеличиваться дальше, пока не достигнет еще 100 мм рубежа, после чего цилиндр смещается на ширину диаметра вниз и т.д. 
должно получиться как на 1-м скрине, который я выложил. я так подозреваю, что нужно действовать при помощи функции FOR i и NEXT i, но как, пока не разобрался. Насчет offset искал в справке, нашел только про смещение штриховок, по теме ничего нужного не нашел. спасибо за отклик =)

*

Оффлайн ValeriyP

  • архитектор
  • ****
  • 498
  • Репутация: +64/-1
  • Пол: Мужской
  • ArchiCad Coral Draw Artlantis
Re: Предложение цикла FOR - TO - NEXT
« Ответ #9 : Декабря 23, 2012, 10:59:32 »
 .


сори за неясность =) в общем нужен элемент - цилиндр, с определенным диаметром. цилиндр должен увеличиваться в длине посредством хотспотов, причем по достижении рубежа в 100 мм цилиндр смещается вверх на ширину диаметра и продолжает увеличиваться дальше, пока не достигнет еще 100 мм рубежа, после чего цилиндр смещается на ширину диаметра вниз и т.д.
должно получиться как на 1-м скрине, который я выложил. я так подозреваю, что нужно действовать при помощи функции FOR i и NEXT i, но как, пока не разобрался. Насчет offset искал в справке, нашел только про смещение штриховок, по теме ничего нужного не нашел. спасибо за отклик =)


 ( FOR i и NEXT i,    )   =   FOR  Z=1  TO N  STEP 1

                                            ADDz   H  

                                             NEXT   Z  
           
 Попробую по прстому... для чайников без умных слов ( прошу извинения у многоуважаемой публики ) 
это нефункции.  Это команда  цикла.  Где 
  FOR......  - начало цикла... просто значит что начался цикл.  
  N -  параметр ( количество элементов в цикле ).... можно вставить функцию которая вычислит это количество- например из   " общей длинны". но число дожно получаться целым, иначе будет чёрте что.  Для  того чтою этого небыло, в мастер скрипт нужно ввести границы значений. ( построй профиль с помощью профелера и посмотри как это делается )
 STEP   -    шаг изменения переменной цикла. можно не писать- в этом случае он будет = 1
 H -             параметр ( " размер" цикла- то есть дистанция через которую он повторяется )  .... можно вставить функцию для его вычисления.
 NEXT   Z - конец цикла.... просто значит что закончился  цикл.  


 Исходя из вышеперечисленного можно сделать вывод- построить искомое весьма сложно- из за многих противоречий в функциях по вычислению значений параметров. ( для одного элемента это не очень сложно, для двух примитивов- пипец - смещаются координаты )
 Я проковырялся пол  часа   и плюнул. Можно поставить секущую плоскость с координатами значений параметра  "длинны"  и отсекать всё лишнее. Либо попробовать работать не с примитивами а с призмами-   координаты которых относительно нуля  заданны  при их построении.  В общем задачка на тему как высшей математике- поиграйтесь с  функциями. Я  вышку просто ненавидел.... может кто то любит больше и возьмётся. Для себя же какого то практического применения в решении данного  вопроса- просто не вижу.

    Спасибо за внимание

   

*

Оффлайн Valery W

  • *****
  • 5987
  • Репутация: +634/-14
  • Пол: Мужской
Re: Предложение цикла FOR - TO - NEXT
« Ответ #10 : Декабря 24, 2012, 10:09:09 »
Вот Вам пример.
Даю 2D-скрипт. Аналогично делается и 3D-скрипт.
  A - длина всего элемента.
_A - это длина отрезка.
  B - толщина отрезка
_________________________________________________________
_A = 0.1
n = INT (A/_A)

FOR i=1 TO n
   ADD2 0, -B*(i/2=INT(i/2))
      GOSUB 1
   ADD2 _A, 0
   DEL 1*(i/2=INT(i/2)), NTR() -1
NEXT i

ADD2 0, -B*(i/2=INT(i/2))

_A = A-(n*_A)
IF _A > 0 THEN GOSUB 1
END

1:
FILL gs_Fill_type
   POLY2_B 5, 2, gs_fill_pen, gs_back_pen,
             0, B/2, 1,
            _A, B/2, 1,
            _A,-B/2, 1,
             0,-B/2, 1,
             0, B/2,-1
RETURN
_________________________________________________________

Это был "аскетичный" вид скрипта.
Ниже более простой.
_________________________________________________________
FILL gs_Fill_type
_A = 0.1
n = INT (A/_A)

FOR i=1 TO n
   IF i/2=INT(i/2) THEN
      ADD2 0, -B
   ENDIF

      POLY2_B 5, 2, gs_fill_pen, gs_back_pen,
                0, B/2, 1,
               _A, B/2, 1,
               _A,-B/2, 1,
                0,-B/2, 1,
                0, B/2,-1
  
   ADD2 _A, 0
   IF i/2=INT(i/2) THEN
      DEL 2
      ADD2 _A, 0
   ENDIF
NEXT i

IF i/2=INT(i/2) THEN
   ADD2 0, -B
ENDIF

_A = A-(n*_A)

IF _A > 0 THEN
   POLY2_B 5, 2, gs_fill_pen, gs_back_pen,
             0, B/2, 1,
            _A, B/2, 1,
            _A,-B/2, 1,
             0,-B/2, 1,
             0, B/2,-1
ENDIF

_________________________________________________________
« Последнее редактирование: Марта 30, 2013, 19:00:04 от Valery W »

*

Оффлайн ValeriyP

  • архитектор
  • ****
  • 498
  • Репутация: +64/-1
  • Пол: Мужской
  • ArchiCad Coral Draw Artlantis
Re: Предложение цикла FOR - TO - NEXT
« Ответ #11 : Декабря 24, 2012, 10:35:33 »
Цитировать
Вот Вам пример как это сделать без секущих плоскостей.
Даю 2D-скрипт. Аналогично делается и 3D-скрипт.
Подход   научный- спасибо пригодится.
 

*

Оффлайн SIMFF

  • *****
  • 2299
  • Репутация: +194/-4
  • Пол: Мужской
Re: Предложение цикла FOR - TO - NEXT
« Ответ #12 : Марта 17, 2013, 14:36:10 »
Коллеги, прошу помощи:
Пишу для себя Таблицу в GDL, хотелось бы сделать выделение строк таблицы штриховкой, через одну строку.
Как применить цикл приращения с шагом через строку, желание выразил картинкой (см. под кнопкой)
 
Извините, вам запрещён просмотр содержимого спойлеров.
Использовал следующую команду (см. под кнопкой), но результата не получил, посмотрите, подскажите... что дописать, что изменить
 
Извините, вам запрещён просмотр содержимого спойлеров.
Чтобы Вам не "ковыряться" с самого начала, прикладываю свой файл GDL
https://www.dropbox.com/s/sjr0w0zm87yj748/TABL_SH.rar
« Последнее редактирование: Марта 18, 2013, 18:21:46 от SIMFF »

*

Оффлайн Valery W

  • *****
  • 5987
  • Репутация: +634/-14
  • Пол: Мужской
Re: Предложение цикла FOR - TO - NEXT
« Ответ #13 : Марта 17, 2013, 19:42:09 »
Если нужно, чтобы цикл выполнялся через два шага, то зачем писать STEP 1 вместо STEP 2?
Если нужно, чтобы штриховка начиналась со строки соответствующей шагу, то зачем задавать у нее начальные точки по координате Y равные 0?
Скопируйте свой результат из окна "Полный 2D-вид" в окно "2D-символ" и растащите штриховку, чтобы увидеть какие габариты у них вы получили. Или можно задать процентный тип штриховки, чтобы увидеть их послойно. Кстати, в параметрах для штриховки вы задали перо 0, что не допустимо, если не хотите постоянно получать сообщение об ошибке.

Если мне не удалось своими вопросами привести вас к правильному решению, то можете его подсмотреть в скрытом тексте.
Извините, вам запрещён просмотр содержимого спойлеров.

*

Оффлайн SIMFF

  • *****
  • 2299
  • Репутация: +194/-4
  • Пол: Мужской
Re: Предложение цикла FOR - TO - NEXT
« Ответ #14 : Марта 17, 2013, 21:52:00 »
Valery W, спасибо за помощь. Все получилось.
Но понять, из ваших вопросов - НЕ понял, сделал все механически, потом вник и разобрался..
А вот это -
Скопируйте свой
результат из окна "Полный 2D-вид" в окно "2D-символ" и растащите
штриховку, чтобы увидеть какие габариты у них вы получили. Или можно
задать процентный тип штриховки, чтобы увидеть их послойно.
.....совсем не понятно
Если можно, более развернуто поясните.
« Последнее редактирование: Марта 18, 2013, 18:20:44 от SIMFF »

 

Похожие темы

  Тема / Автор