Перейти к содержимому


параметрические объекты СПДС


Сообщений в теме: 498

#441 dromandon

    Активист

  • Пользователи
  • PipPipPipPip
  • 157 сообщений
  • Пол:Мужчина
  • Город:Калининград

Отправлено 04 Сентябрь 2018 - 11:47

Просмотр сообщенияdoctorraz (04 Сентябрь 2018 - 11:38) писал:

кстате
=int((9,011-9)*1000) в таблице результат 10
как так то?
чет с математикой не очень у движка СПДС

Угу, а ещё если опять же поставить моё многостродальное 9,2, то выдаёт результат 9,199 по ващему способу)

Прикрепленные файлы

  • Прикрепленный файл  Бред.7z   13,83К   1 Количество загрузок:

Михаил Давтян. Проектирование общественных и жилых зданий.
Обладаю навыком упрощения долгой и скучной работы.

ткнуть тут

#442 Mитька

    Активист

  • Пользователи
  • PipPipPipPip
  • 289 сообщений
  • Пол:Мужчина
  • Город:Хабаровск

Отправлено 04 Сентябрь 2018 - 11:49

Где-то же что-то такое уже обсуждалось... :blink: Про кривой подсчёт при округлениях-обрезаниях...

#443 Mитька

    Активист

  • Пользователи
  • PipPipPipPip
  • 289 сообщений
  • Пол:Мужчина
  • Город:Хабаровск

Отправлено 04 Сентябрь 2018 - 11:51

Просмотр сообщенияdromandon (04 Сентябрь 2018 - 11:09) писал:

Ну так HD1 переменная, она может быть 9,214, тогда просто подставление нулей не поможет
я хотел сделать следующим образом

А если условием? Если число не делится на 10, 100 и 1000 нацело, то число, а если делится, то число + текст.
Вижу. Мож, конечно, бред, но если убрать переменную со значением по умолчанию -0,12345... Проблема остаётся..?

Сообщение отредактировал Mитька: 04 Сентябрь 2018 - 11:54


#444 dromandon

    Активист

  • Пользователи
  • PipPipPipPip
  • 157 сообщений
  • Пол:Мужчина
  • Город:Калининград

Отправлено 04 Сентябрь 2018 - 11:54

Просмотр сообщенияMитька (04 Сентябрь 2018 - 11:51) писал:


А если условием? Если число не делится на 10, 100 и 1000 нацело, то число, а если делится, то число + текст.
а как без выражений int и trunc сделать такую проверку?
Михаил Давтян. Проектирование общественных и жилых зданий.
Обладаю навыком упрощения долгой и скучной работы.

ткнуть тут

#445 doctorraz

    Активист

  • Пользователи
  • PipPipPipPip
  • 812 сообщений
  • Пол:Мужчина
  • Город:Волгоград
  • Интересы:всё понемногу

Отправлено 04 Сентябрь 2018 - 11:55

короч надо делать через round, он покорректнее работает
ЧИСЛО = 10,2558
HI=round((ЧИСЛО-0,5);0)
Lo=round((ЧИСЛО-Hi)*1000;0) тут надо проверку.. если Lo=0, то Lo="000", если Lo<10 то Lo="00"+str(Lo), если Lo<100 то Lo="0"+str(Lo)
СТРОКА=str(Hi)+"."+str(Lo)

#446 Mитька

    Активист

  • Пользователи
  • PipPipPipPip
  • 289 сообщений
  • Пол:Мужчина
  • Город:Хабаровск

Отправлено 04 Сентябрь 2018 - 11:59

Просмотр сообщенияMитька (04 Сентябрь 2018 - 11:49) писал:

Где-то же что-то такое уже обсуждалось... :blink: Про кривой подсчёт при округлениях-обрезаниях...
Вот тут: http://forum.nanocad...indpost&p=35758

#447 dromandon

    Активист

  • Пользователи
  • PipPipPipPip
  • 157 сообщений
  • Пол:Мужчина
  • Город:Калининград

Отправлено 04 Сентябрь 2018 - 12:04

Doctorraz, Mитька, спасибо за помощь)
Помогло это решение

Просмотр сообщенияdoctorraz (04 Сентябрь 2018 - 11:55) писал:

ЧИСЛО = 10,2558
HI=round((ЧИСЛО-0,5);0)
Lo=round((ЧИСЛО-Hi)*1000;0) тут надо проверку.. если Lo=0, то Lo="000", если Lo<10 то Lo="00"+str(Lo), если Lo<100 то Lo="0"+str(Lo)
СТРОКА=str(Hi)+"."+str(Lo)

Обновлю в сообщение с вопросом)
Михаил Давтян. Проектирование общественных и жилых зданий.
Обладаю навыком упрощения долгой и скучной работы.

ткнуть тут

#448 Mитька

    Активист

  • Пользователи
  • PipPipPipPip
  • 289 сообщений
  • Пол:Мужчина
  • Город:Хабаровск

Отправлено 04 Сентябрь 2018 - 12:07

Мож мне кто про BreakCur расскажет заодно..? Раз уж все здесь. :wub:

#449 dromandon

    Активист

  • Пользователи
  • PipPipPipPip
  • 157 сообщений
  • Пол:Мужчина
  • Город:Калининград

Отправлено 04 Сентябрь 2018 - 12:10

Просмотр сообщенияMитька (04 Сентябрь 2018 - 12:07) писал:

Мож мне кто про BreakCur расскажет заодно..? Раз уж все здесь. :wub:

Я не вкурсе) для меня функция NPart так и осталась пока загадкой)) а про BreakCur услышал первый раз из вашего поста =)
Михаил Давтян. Проектирование общественных и жилых зданий.
Обладаю навыком упрощения долгой и скучной работы.

ткнуть тут

#450 dromandon

    Активист

  • Пользователи
  • PipPipPipPip
  • 157 сообщений
  • Пол:Мужчина
  • Город:Калининград

Отправлено 06 Сентябрь 2018 - 10:49

Может кому интересно будет, не знаю куда ещё скинуть можно)
Создал в АК динамический блок, должен работать корректно и в Нано (на данный момент, по крайней мере, я не встретил косяков).
Предназначен для добавления размеров и выносной отметки в параметрические объекты СПДС.
Установить в нужном месте эскиза, задать тип линии блоку и разбить.
Текст, правда, добавлять уже ручками надо будет с помощью Utext. Или, если кто подскажет, как выглядеть должен текст, чтобы его распознало для дополнения в исполнение, добавлю в дин. блок)

Прикрепленные файлы


Михаил Давтян. Проектирование общественных и жилых зданий.
Обладаю навыком упрощения долгой и скучной работы.

ткнуть тут

#451 doctorraz

    Активист

  • Пользователи
  • PipPipPipPip
  • 812 сообщений
  • Пол:Мужчина
  • Город:Волгоград
  • Интересы:всё понемногу

Отправлено 06 Сентябрь 2018 - 11:09

так
{Текст или переменная}

#452 dromandon

    Активист

  • Пользователи
  • PipPipPipPip
  • 157 сообщений
  • Пол:Мужчина
  • Город:Калининград

Отправлено 06 Сентябрь 2018 - 12:20

Просмотр сообщенияdoctorraz (06 Сентябрь 2018 - 11:09) писал:

так
{Текст или переменная}
Но при этом в исполнение он будет добавлятся как, условно:

UText(mp+oX*(75.5562)+oY*(-129.8715), 0.0000, 2.5000, 0.0000, -10.0000, переменная или текст);
Хотелось бы, конечно, чтобы была возможность задание сразу привязки текста к местности параметрически) да и высота текста тоже не помешала бы..
Как я понимаю - это нереально?
Михаил Давтян. Проектирование общественных и жилых зданий.
Обладаю навыком упрощения долгой и скучной работы.

ткнуть тут

#453 doctorraz

    Активист

  • Пользователи
  • PipPipPipPip
  • 812 сообщений
  • Пол:Мужчина
  • Город:Волгоград
  • Интересы:всё понемногу

Отправлено 06 Сентябрь 2018 - 12:27

Уважаемый MCAD уже озвучивал : UText-ДСП
графике графиково, а оформлению текстово
--------------
ручками потом не проблема привязать к грипсу по условию или сделать перемещаемым за доп. грипс

#454 dromandon

    Активист

  • Пользователи
  • PipPipPipPip
  • 157 сообщений
  • Пол:Мужчина
  • Город:Калининград

Отправлено 06 Сентябрь 2018 - 12:37

Просмотр сообщенияdoctorraz (06 Сентябрь 2018 - 12:27) писал:

ручками потом не проблема привязать к грипсу по условию или сделать перемещаемым за доп. грипс

Это да, но суть данного дин. блока, чтобы ручками было меньше надо делать)
Просто при первом распознавании исполнения ещё имеет смысл текст в таком виде в дин блоке, но при дальнейшем редактирование и добавлении каких-то моментов в исполнение, всё равно уже будет перекопировываться utext, а новый создаваемый будет только мешать, думаю..
Так что оставлю пока так)

Сообщение отредактировал dromandon: 06 Сентябрь 2018 - 12:37

Михаил Давтян. Проектирование общественных и жилых зданий.
Обладаю навыком упрощения долгой и скучной работы.

ткнуть тут

#455 dromandon

    Активист

  • Пользователи
  • PipPipPipPip
  • 157 сообщений
  • Пол:Мужчина
  • Город:Калининград

Отправлено 07 Сентябрь 2018 - 11:20

Просмотр сообщенияdromandon (04 Сентябрь 2018 - 12:04) писал:

Doctorraz, Mитька, спасибо за помощь)
Помогло это решение

Просмотр сообщенияdoctorraz (04 Сентябрь 2018 - 11:55) писал:

ЧИСЛО = 10,2558
HI=round((ЧИСЛО-0,5);0)
Lo=round((ЧИСЛО-Hi)*1000;0) тут надо проверку.. если Lo=0, то Lo="000", если Lo<10 то Lo="00"+str(Lo), если Lo<100 то Lo="0"+str(Lo)
СТРОКА=str(Hi)+"."+str(Lo)

Обновлю в сообщение с вопросом)

При значениях 1,5 - 1,9999.. выдаёт бредовое решение

HD11=round((HD1-0,5);0)
HD12=round((HD1-HD11)*1000;0)
if(HD12==0) {HD12="000"};
if(HD12<10) {HD12="00"+string(HD12)};
if(HD12<100) {HD12="0"+string(HD12)};
HD13 = string(HD11)+"."+string(HD12)

Скрытый текст

Сообщение отредактировал dromandon: 07 Сентябрь 2018 - 11:21

Михаил Давтян. Проектирование общественных и жилых зданий.
Обладаю навыком упрощения долгой и скучной работы.

ткнуть тут

#456 doctorraz

    Активист

  • Пользователи
  • PipPipPipPip
  • 812 сообщений
  • Пол:Мужчина
  • Город:Волгоград
  • Интересы:всё понемногу

Отправлено 07 Сентябрь 2018 - 11:30

>>HD12=round((HD1-HD11)*1000;0)
пробуй так
HD12=round((HD1-HD11)*1000-0,5;0)
upd млин если целое, то тогда косяк(((

Сообщение отредактировал doctorraz: 07 Сентябрь 2018 - 11:33


#457 dromandon

    Активист

  • Пользователи
  • PipPipPipPip
  • 157 сообщений
  • Пол:Мужчина
  • Город:Калининград

Отправлено 07 Сентябрь 2018 - 11:41

Вроде решил..
HD11=round((HD1-0,5);0) заменить на
HD11=round((HD1*1000-500)/1000;0)
Михаил Давтян. Проектирование общественных и жилых зданий.
Обладаю навыком упрощения долгой и скучной работы.

ткнуть тут

#458 doctorraz

    Активист

  • Пользователи
  • PipPipPipPip
  • 812 сообщений
  • Пол:Мужчина
  • Город:Волгоград
  • Интересы:всё понемногу

Отправлено 07 Сентябрь 2018 - 11:58

с другой стороны 1,999999 при округлении до третьего знака это все же 2,000, а не 1,999

#459 dromandon

    Активист

  • Пользователи
  • PipPipPipPip
  • 157 сообщений
  • Пол:Мужчина
  • Город:Калининград

Отправлено 07 Сентябрь 2018 - 12:06

Просмотр сообщенияdoctorraz (07 Сентябрь 2018 - 11:58) писал:

с другой стороны 1,999999 при округлении до третьего знака это все же 2,000, а не 1,999
Не спорю, но сейчас хотя бы решить задачку с корректным выводом трёх знаков после запятой, при условии, что у числа не больше трёх знаков после запятой)
Просто такая фигня портит весь процесс работы, я затормозил на рабочий день где-то из-за всего этого)
Да и функцию int я использовал раньше достаточно часто, ща чёт стрёмно за правильность работы предыдущих моих параметрических объектов.
Михаил Давтян. Проектирование общественных и жилых зданий.
Обладаю навыком упрощения долгой и скучной работы.

ткнуть тут

#460 doctorraz

    Активист

  • Пользователи
  • PipPipPipPip
  • 812 сообщений
  • Пол:Мужчина
  • Город:Волгоград
  • Интересы:всё понемногу

Отправлено 07 Сентябрь 2018 - 12:14

Просмотр сообщенияdromandon (07 Сентябрь 2018 - 12:06) писал:

.....
Да и функцию int я использовал раньше достаточно часто, ща чёт стрёмно за правильность работы предыдущих моих параметрических объектов.
функция целое в эксель ведет себя аналогично, это косяк винды.
----------

>>>При значениях 1,5 - 1,9999.. выдаёт бредовое решение
чессно говоря не совсем понял в чем бредовое...
в таблице СПДС у меня все работает корректно..
-----------
в порядке очередного бреда попробуй так..
if(HD12==0) {HD12=".000"};
if(HD12<10) {HD12=".00"+string(HD12)};
if(HD12<100) {HD12=".0"+string(HD12)};
HD13 = string(HD11)+string(HD12)
------

Сообщение отредактировал doctorraz: 07 Сентябрь 2018 - 12:14






Количество пользователей, читающих эту тему: 5

4 пользователей, 1 гостей, 0 скрытых пользователей