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

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

*

Оффлайн Durimar

  • **
  • 42
  • Репутация: +0/-0

Test

ux=1
   DO
      if gs_kx[ux+1]<gs_kx[ux]+0.1 then parameters gs_kx[ux+1]=gs_kx[ux]+0.1
      if gs_kx[ux+1]>gs_kx[ux]+0.606 then parameters gs_kx[ux+1]=gs_kx[ux]+0.606
      ux=ux+1
   while gs_kx[ux]<x2
вот такой вот цикл с условием. с каждой следующей итерацией, если не выполняются одно из 2х условий, вновь созданная ячейка массива должна принимать свое новое значение. параметр X2 задается пользователем. проблема в том, что цикл выполняется бесконечно, потому, что он первые 5 значений присваевает согласно условиям. т.е. gs_kx[1]=0, gs_kx[2]=100, gs_kx[3]=200, gs_kx[3]=300, gs_kx[4]=400, (тип переменной gs_kx - линейная величина, т.е. милиметры.) после первых 5ти итераций условия перестают выполняться и все следующие значения до бесконечности почему то присваиваются gs_kx[n]=400, а должны по нарастающей добираться до X2. в общем комп умирал. пришлось поставить ограничения
   DO
      if gs_kx[ux+1]<gs_kx[ux]+0.1 then parameters gs_kx[ux+1]=gs_kx[ux]+0.1
      if gs_kx[ux+1]>gs_kx[ux]+0.606 then parameters gs_kx[ux+1]=gs_kx[ux]+0.606
      ux=ux+1
      if ux>100 then end
   while gs_kx[ux]<x2
Таким образом у меня последующие 95 значений становились равными 400. если перезапустить скрипт, следующие 4 ячейки массива принимают значения соответствуя условию. т.е. при каждом перезапуске в цикле выполняется условие 4 раза, потом условия игнорируются. чтобы добиться необходимого результата, надо перезапускать скрипт по несколько раз, т.е. чтобы заполнить 20 ячеек скрипт нужно перезапустить 5 раз. В общем я с этим ничего не могу сделать, может это баг? кто знает, подскажите, может я чего упустил? ??? ??? ??? ???

*

Оффлайн ALAKK

  • *****
  • 625
  • Репутация: +55/-7
  • Пол: Мужской
  • Он спорил с модером...
Очень интересно.
А как ты определяешь массив?
Вообще - то вопрос достаточно сложный и хотелось бы видеть весь скрипт и понять задачу. По этому куску не определишь вкус всего блюда.
Так что пиши. Или сюда или в личку

*

Оффлайн Durimar

  • **
  • 42
  • Репутация: +0/-0
вот скрипт, только он не рабочий. если убрать ограничение "if ux>100 then end", то цикл уйдет в бесконечность и комп зависнет. я его еще не дописал. застрял вот на первом цикле.  в идеале скрипт должен строить сетку из хотспотов, в которой расстояние между ближайшими двумя вертикалями или горизонталями должно быть больше 100 мм и меньше 606 мм. В общем эта сетка - только начало. в итоге при помощи этой сетки можно будет делать раскладку для навесных вент фасадов для керамогранита, где размеры плитки 600x600. потом можно будет подогнать под любой размер, соответвенно с расчетом спецификации материалов, отображением на чертеже и т.д. В общем посмори плз, может найдешь в чем загвоздка.

*

Оффлайн Durimar

  • **
  • 42
  • Репутация: +0/-0
в общем задача этого цикла определить количество хотспотов в сетке в зависимости от координат этих хотспотов, и при изменении размеров ограничивающего прямоугольника, а также при изменении расстояния между двумя соседними хотспотами, добавить  новые или удалить старые хотспоты, т.е. найти количество gs_rx и gs_ry.
в скрипте параметров последние две строчки надо изменить на
parameters gs_rx=ux
parameters gs_ry=uy
а также надо написать такой же цикл, только для координат Y

*

Оффлайн ALAKK

  • *****
  • 625
  • Репутация: +55/-7
  • Пол: Мужской
  • Он спорил с модером...
Помни о свойстве арча копировать исходники
Не надо это делать. Используй внутренние св-ва
Пойми: надо заставить работать  скрипит, а не наоборот....

*

Оффлайн Durimar

  • **
  • 42
  • Репутация: +0/-0
Не совсем понял. что я делаю не так? как мне заставить работать скрипт? почему цикл выполняет только 4 итерации за раз? как это связано с исходниками? и какие внутренние свойства? я не программист, я архитектор.

*

Оффлайн ALAKK

  • *****
  • 625
  • Репутация: +55/-7
  • Пол: Мужской
  • Он спорил с модером...
Дружище. Я тоже не программист. И тем более не читатель мыслей.
Ты задаешь вопрос и не хочешь дать минимальные пояснения. Из твоего поста ничего не понятно. Я могу ответить так: ВСЕ РАВНО 2. Это тебе понятно? Так и задай вопрос правильно, чтоб на него можно было ответить внятно.

*

Оффлайн Durimar

  • **
  • 42
  • Репутация: +0/-0
рассмотрим простой пример:

        for q=1 to 20
        parameters array[q+1]=array[q]+0.1
        next q

значения массива array[] должны  стать: array[1]=0; array[2]=100; array[3]=200; array[4]=300; array[5]=400; array[6]=500; array[7]=600; array[8]=700; array[9]=800; и вот в такой последовательности до
array[21]=2200.
что же происходит со значениями массива на самом деле.
array[1]=0; array[2]=100; array[3]=200; array[4]=300; array[5]=400; array[6]=400; array[7]=400; array[8]=400; array[9]=400; array[10]=400; array[11]=400; array[12]=400; array[13]=400; array[14]=400; и так до array[21]=400.
Внимание вопрос!!
ПОЧЕМУ?????
Аналогично и в описаным мною цикле происходит тоже самое, только у меня цикл с условием, что значение массива под номером [ux] должно стать равным X2, но для этого все предыдущие значения должны увеличиваться в арифметической прогрессии с шагом 100мм, а на самом деле начиная с 5того значения все остальные становяться равными ему, и значение никогда не увеличится до необходимого X2 (который равен например 1000мм) и поэтому мой цикл уходит в бесконечность и компьютер умирает. ВОПРОС тот же. ПОЧЕМУ в процессе выполнения цикла значения перестают присваиваться?
to ALAKK: приношу извинения за то, что невнятно сформулировал вопрос. уже 4тый день бьюсь с этим, ничего не могу сделать. ошибки в своем скрипте я не вижу, подозрения в том, что это баг.

*

Оффлайн BeArt

  • *****
  • 1016
  • Репутация: +94/-3
  • Пол: Мужской
Не знаю, как parameters array[...] определены в параметрах.
 
P.S. Вообще-то я бы посоветовал для навесных фасадов попробовать использовать инструмент "Перегородка" -Архикад 12 (панель=плитка). Должно получиться.

*

Оффлайн Durimar

  • **
  • 42
  • Репутация: +0/-0
ААААА спасибо тебе большое. разобрался кажись.
вот мой цикл, терь работает

     dim array[]
     array[1]=0
     for q=1 to 20
     array[q+1]=array[q]+0.1
     parameters array[q]=array[q]
     next q

я даже так спрошу. почему цикл, который приводил я не работал?

        for q=1 to 20
        parameters array[q+1]=array[q]+0.1
        next q

вот этот. ведь он проще в написании. т.е. я не понимаю для чего нужен dim array[] и скажи пожалуйста, как можно посмотреть отчет?
« Последнее редактирование: Апреля 20, 2009, 20:56:54 от Durimar »

*

Оффлайн Durimar

  • **
  • 42
  • Репутация: +0/-0
to BeArt: что касается инструмента Перегородка. там нельзя поставить ограничение на размер плитки и нельзя вывести с нее спецификацию на количество профиля, кляммеров, кронштейнов, заклепок и нельзя собрать спецификацию на плитку по ее высоте и ширине чтобы в дальнейшем посчитать сколько нужно целой плитки. я занимаюсь навесными вент фасадами. делаем проекты на них. нужно считать спецификацию на все, и вручную как то долго все это получается. вот и хочу сделать такой инструмент, чтобы им обвести фасад, подвинуть межплиточные швы к окнам и чтобы он посчитал сколько всего нужно. вплоть до оконных примыканий. у меня сейчас все эти инструменты по отдельности. раскладываю плитку, кляммеры, профили, кронштейны, расставляю окна. и он мне выдает спецификацию. еще приходится считать профиль на прочность. расчет несложный. хочу его тоже загнать в скрипт, чтобы он сам определял шаг кронштейнов в зависимости от высоты расположения профиля (ветровая нагрузка увеличивается) вот для этого мне нужна сетка хотспотов, о которой я уже писал. на ней я собственно и застрял. у каждого нового хотспота должны быть определены координаты в массиве. мне нужно, чтобы при изменении положении хотспота массив пересчитывался на случай увеличения или уменьшения межплиточных швов. когда доведу скрипт до ума, обещаю со всеми поделиться, думаю он не только мне будет необходим, к тому же когда я разберусь с плиткой, можно будет по аналогии сделать и композит и фиброцемент и гранит.

*

Оффлайн ALAKK

  • *****
  • 625
  • Репутация: +55/-7
  • Пол: Мужской
  • Он спорил с модером...
А где приращение в цикле?
q=q+1
И не надо давать переменным системные имена. Это может плохо кончиться

*

Оффлайн BeArt

  • *****
  • 1016
  • Репутация: +94/-3
  • Пол: Мужской
Durimar Изучайте "Справочное руководство GDL" -оно на русском языке. Для реализации Вашей затеи этот документ и Архикад Вам надо знать очень хорошо.

*

Оффлайн Durimar

  • **
  • 42
  • Репутация: +0/-0
изучаю уже давно, правда еще не все изучил, и в этом руководстве не полная информация по некоторым пунктам к сожалению

*

melky

сделал сетку для потолка и пола, но она только для прямоугольных комнат, сильно не пластался. Можно доработать при необходимости.

 

Похожие темы

  Тема / Автор