Python. Компас 3Д. Создать генератор текста с случайным числом в заданном интерв

Автор mrsmith12345, 17.06.19, 10:07:45

« назад - далее »

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

mrsmith12345

Добрый день.
Хочу сделать генератор случайного текста (в зад. интервале). Смысл такой. Имеется исполнительная схема на что-либо. Задача проставить отклонения, не превышающие проектные.
Если необходимо проставить отклонений, к примеру, 1000шт и 2000шт (это бывает на свайных полях) встроенный генератор случайных чисел, заложенный в коре головного мозга под конец дня начинает выдавать синий экран смерти и подвисает. И вообще возможно ли это именно в компас 3д?.

ТрындецЪ

+ Благодарностей: 1

DesignЯR

ЦитироватьА как же расчёт размерных цепей?
Это не размерные цепи, а исполнительная схема. Чтобы не нанимать геодезиста и не платить лишнюю денежку, нужно проставить размеры, которые отличаются от проектных в пределах допуска.
ЦитироватьИ вообще возможно ли это именно в компас 3д?.
Вы людям озвучьте сколько готовы выложить за такое, сразу найдутся желающие, а иначе этот пост умрет.

mrsmith12345

Ребята, я не ж не директор, а инженер.
Вознаграждение если и рассматривалось, то скорее очень не большое.
(Это не коммерческий проект, а скорее научный для меня).
Я думал, что это очень просто как когда-то в паскале (var x:integer; x:=random(15));
Если пост умрет, то ничего не изменится. Я также продолжу денно и нощно придумывать тысячи чисел в пределах от 1 до 15
и переименовывать их двойным нажатием мыши на скопированный текст.
На dwg.ru я уже спрашивал, результат нулевой.

(Я вот только не понял, здесь мне даже не могут ответить реально это вообще или нет? Я сам пробовал это сделать, но у меня получилось только что макрос добавляет число const в одну и ту же точку. Когда я попытался вместо числа подставить формулу для выдачи random чисел макрос переставал работать совсем)
 

DesignЯR

Цитировать....проект, а скорее научный для меня
В одной известной теории это называется "давление внешней среды" и направлено на Ваше саморазвитие. Лень - двигатель прогресса. Все кто утомился делать монотонные операции начинают изучать программирование, чтобы помочь себе в первую очередь...
Цитироватьреально это вообще или нет?
Насчет реально ли это в питоне - не скажу, а вот сделать библиотечку - вполне. Я из-за командировки освобожусь недели через три...
Но для этого надо будет нормальная постановка задачи:
1. Исходный объект (текст, размер, отметка высоты ....)
2. В каком виде должен выглядеть окончательный объект ( добавление к основному тексту сбоку/сверху/снизу нового значения в скобках (или взятие исходного в скобки),  или просто изменение исходного значения)
Лучше добавить картинку "было - стало".
Ну и имеет значение версия Компаса...
+ Благодарностей: 1

Вират Лакх

Цитата: mrsmith12345 от 18.06.19, 07:11:59
Я думал, что это очень просто как когда-то в паскале (var x:integer; x:=random(15));
Вторая ссылка в поисковике: https://python-scripts.com/random-data
Цитировать
Вы можете сгенерировать случайное целое число между двумя отметками в Python при помощи функции random.randint(). Таким образом охватывается целый интервал [x, y] и обе конечные точки могут быть включены:

import random
print random.randint(1, 15)
+ Благодарностей: 1

mrsmith12345

Вау круто! Работает!!!!!! Спасибо!!!
Но есть несколько нюансов :)
Текст создается в одном месте.
1) Возможно ли ли его как-то прилепить к курсору после вызова макроса?
2) Возможно ли вызывать макрос как-то через 1-ну кнопочку.

# -*- coding: cp1251 -*-
#|text random

import Kompas10API5 as KAPI
import Kompas10API7 as KAPI7
import pythoncom
from win32com.client import Dispatch
import LDefin2D
import LDefin3D
import ksConstants as CONST2D7
import ksConstants3D as CONST3D7
import MiscellaneousHelpers as MH
import random

iKompasObject = Dispatch('KOMPAS.Application.5')
iKompasObject = KAPI.KompasObject(iKompasObject)
MH.iKompasObject = iKompasObject

iApplication = Dispatch('KOMPAS.Application.7')
iApplication = KAPI7.IApplication(iApplication)
MH.iApplication = iApplication

iDocument2D = iKompasObject.ActiveDocument2D()
iDocument = iApplication.ActiveDocument
iKompasDocument2D = KAPI7.IKompasDocument2D(iDocument)


iParagraphParam = KAPI.ksParagraphParam(iKompasObject.GetParamStruct(LDefin2D.ko_ParagraphParam))
iParagraphParam.Init()
iParagraphParam.x = 112.5
iParagraphParam.y = 148.5
iParagraphParam.ang = 0.0
iParagraphParam.height = 4.21997213363
iParagraphParam.width = 4.79295825958
iParagraphParam.hFormat = 0
iParagraphParam.vFormat = 0
iParagraphParam.style = 1

iDocument2D.ksParagraph(iParagraphParam)

iTextLineParam = KAPI.ksTextLineParam(iKompasObject.GetParamStruct(LDefin2D.ko_TextLineParam))
iTextLineParam.Init()
iTextLineParam.style = 1

iTextItemArray = KAPI.ksDynamicArray(iKompasObject.GetDynamicArray(4))

iTextItemParam = KAPI.ksTextItemParam(iKompasObject.GetParamStruct(LDefin2D.ko_TextItemParam))
iTextItemParam.Init()
iTextItemParam.iSNumb = 0
iTextItemParam.s = random.randint(1, 15)
iTextItemParam.type = 0

iTextItemFontParam = KAPI.ksTextItemFont(iTextItemParam.GetItemFont())
iTextItemFontParam.Init()
iTextItemFontParam.bitVector = 4096
iTextItemFontParam.color = 0
iTextItemFontParam.fontName = "GOST type A"
iTextItemFontParam.height = 3.5
iTextItemFontParam.ksu = 1.0

iTextItemArray.ksAddArrayItem(-1, iTextItemParam)

iTextLineParam.SetTextItemArr(iTextItemArray)
iDocument2D.ksTextLine(iTextLineParam)

obj = iDocument2D.ksEndObj()

ТрындецЪ

Цитата: mrsmith12345 от 19.06.19, 06:31:38
Текст создается в одном месте.
1) Возможно ли ли его как-то прилепить к курсору после вызова макроса?
2) Возможно ли вызывать макрос как-то через 1-ну кнопочку.

1) Посмотрите мой макрос "Автотект", который запрашивает у пользователя точку для вставки текста. Выковыряйте из него нужный кусок кода. https://forum.ascon.ru/index.php/topic,31719
2) Добавить макрос как утилиту и вынести иконку на панель инструментов. Видеопример от Алхимика: https://www.youtube.com/watch?v=izUd-xzLvM0
+ Благодарностей: 1

mrsmith12345

все получилось. спасибо.
в приложении макрос