Jump to content

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


Recommended Posts

>>> Почему бы тогда не перевыложить только базу элементов..?

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

некогда проданной фигрей заниматься.. бим делают

  • Like 1
Link to comment
Share on other sites

с 32 битной много проще.. база та жэж, что и в 64х. утилитой администрирования, на раз

Link to comment
Share on other sites

Link to comment
Share on other sites

Да я пробовал с 8ки базу дёргать, но что-то пошло не так и я тогда забил

с приложенными выше профилями проблема сохраняется?

  • Like 1
Link to comment
Share on other sites

Только завтра доберусь, проверю. Про утилиту конфигурации - да, так и обновляемся. Но мой комп - как раз исходник для базы на сервере. =D Ну если проблема решается заменой профилей - чудно, хоть как-то решается, а технически, думаю, разберусь. Спасибо.

 

UPD: Проверил. Да, проблема уходит. Спасибо. Осталось менянные по нас профили ещё под этот стандарт переиначить. Там можно как-то более конкретно проблему обозначить, чуть поуже , чем "проблема с локализацией"? Так-то и сам найду, но если есть точный диагноз, это будет быстрей.

Edited by Mитька
Link to comment
Share on other sites

Там можно как-то более конкретно проблему обозначить, чуть поуже , чем "проблема с локализацией"?

со слов разработчика убрано свойство designation

  • Like 1
Link to comment
Share on other sites

Не могу понять что за ерунда.

формула

HD13=trunc(HD1*100)

При значение HD1=

9.2 выдаёт результат 919.

9.21 выдаёт результат 920.

9.22 выдаёт результат 921.

9.23 выдаёт результат 922.

9.24 выдаёт результат 923.

9.25 и выше - верный результат.

вплоть до

9.70, где снова выдатё на 1 сотую меньше.

У меня уже мозг кипит, что я делаю не так?

 

UPD: если изменить trunc на int - то же самое, на 1 меньше получается.

 

Нанокад СПДС 6.0, сборка 468

 

UPD2. Для чего мне это надо и может кто подскажет, как ещё решить.

Надо это для добавления отметки на параметрический объект. Отметка вводится как параметр и отображается в виде текста. Но программа автоматически отрезает нули после запятой и, поэтому, вместо нужного мне 9.200 отметка получается 9.2, что меня не очень устраивает.

PS попытка заменить trunc и int на round(HD1*100-0.5) тоже не увенчалась успехом(

 

Решено. Требовалось для создания 4 знаков после заметой в параметре Utext в объекте.

Решено заменой вычисления с int на перебор вариантов через if и переход на round(ЧИЛСО-0.5)

ЧИСЛО = 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)

Оно же, только частью мною используемого кода

 

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)

 

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

 

Предворотельно решено заменой этой части кода

HD11=round((HD1-0,5);0)

на

HD11=round((HD1*1000-500)/1000;0)

 

Все 0,5 и прочее заменить на 0.5

Бред.7z

Edited by dromandon
Link to comment
Share on other sites

PS попытка заменить trunc и int на round(HD1*100-0.5) тоже не увенчалась успехом(

А почему не +0.5? Оно же уменьшается, а надо увеличить. По основной проблеме не подскажу, не пользуюсь СПДС.

Link to comment
Share on other sites

А почему не +0.5? Оно же уменьшается, а надо увеличить.

 

Эм. Ну вроде как функции trunc и int выделяют целую часть чилса, т.е int(8.9)=trunc(8.9)=8. Поэтому и "-0.5", т.е round(8.9-0.5)=8

Link to comment
Share on other sites

если в лоб

HD13=HD1+"00 "

 

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

я хотел сделать следующим образом

 

HD11=int(HD1);
HD12=int(HD1*10)-int(HD1)*10;
HD13=int(HD1*100)-int(HD1)*100-HD12*10
HD14=int(HD1*1000)-int(HD1)*1000-HD12*100-HD13*10;

 

А потом в utext в значение прописать

 

string(HD11)+"."+string(HD12)+string(HD13)+string(HD14)

 

Т.е. разбить число в 3-мя знаками после запятой на 4 числа и записать их последовательно с точкой после первого, тогда нули конечно не сожрутся.

Но вот столкнулся с такой ерундой, вчера часа 2 голову ломал, что я не так делаю.

Link to comment
Share on other sites

ЧИСЛО = 10,2558

HI=int(ЧИСЛО)

Lo=int((ЧИСЛО-Hi)*1000) upd тут надо проверку.. если Lo=0, то Lo="000"

СТРОКА=Hi+"."+Lo

не не покатит если например 10,001 (((

Edited by doctorraz
Link to comment
Share on other sites

кстате

=int((9,011-9)*1000) в таблице результат 10

как так то?

чет с математикой не очень у движка СПДС

ребята напомнили, было жэж.. не у движка СПДС, а Win(((

эксель =ЦЕЛОЕ((9,011-9)*1000) тоже думает, что результат =10 (((

Edited by doctorraz
Link to comment
Share on other sites

кстате

=int((9,011-9)*1000) в таблице результат 10

как так то?

чет с математикой не очень у движка СПДС

 

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

Бред.7z

Link to comment
Share on other sites

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

я хотел сделать следующим образом

 

А если условием? Если число не делится на 10, 100 и 1000 нацело, то число, а если делится, то число + текст.

Вижу. Мож, конечно, бред, но если убрать переменную со значением по умолчанию -0,12345... Проблема остаётся..?

Edited by Mитька
Link to comment
Share on other sites

 

А если условием? Если число не делится на 10, 100 и 1000 нацело, то число, а если делится, то число + текст.

а как без выражений int и trunc сделать такую проверку?

Link to comment
Share on other sites

короч надо делать через 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)

  • Like 1
Link to comment
Share on other sites

Doctorraz, Mитька, спасибо за помощь)

Помогло это решение

ЧИСЛО = 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)

 

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

Link to comment
Share on other sites

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

 

Я не вкурсе) для меня функция NPart так и осталась пока загадкой)) а про BreakCur услышал первый раз из вашего поста =)

Link to comment
Share on other sites

Может кому интересно будет, не знаю куда ещё скинуть можно)

Создал в АК динамический блок, должен работать корректно и в Нано (на данный момент, по крайней мере, я не встретил косяков).

Предназначен для добавления размеров и выносной отметки в параметрические объекты СПДС.

Установить в нужном месте эскиза, задать тип линии блоку и разбить.

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

Размеры динамические.dwg

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
 Share

  • Tell a friend

    Love Официальный форум компании Нанософт? Tell a friend!
×
×
  • Create New...