Примеры работ с переменными и функциями

Автор Alex_32RUS, 11.09.15, 11:37:07

« предыдущая - следующая »

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

Alex_32RUS

Всем привет! Кто может помочь? Есть у кого примеры файлов работы с переменными и функциями для изучения? Если не жалко, заранее благодарю всех откликнувшихся!) Недавно наткнулся на файл модели сетки рабицы, довольно интересно всё сделано. Вот и подумал может у кого что еще есть? Например просечной лист и т.п.

Алхимик

http://sapr-journal.ru/uroki-kompas-3d/sozdanie-diametralnoj-trubnoj-reshetki-v-kompas-3d/

Попробуйте сделать сами, а не искать готовое)) Если с параметризацией не особо знакомы то лучше попрактиковаться.
+ Благодарностей: 1

Vitalij Lysanov

11.09.15, 13:41:13 #2 Последнее редактирование: 11.09.15, 13:57:10 от Vitalij Lysanov
Если на Макро, сам код:


iSketch.Create()
import math
iDocument2D = iDefinition.BeginEdit()

for n in range(68):

    x=30*math.sin(n/20.0)
    y=40*math.cos(1*n/20.0)

    obj = iDocument2D.ksCircle(x, y, 0.75, 1)

obj = iDocument2D.ksCircle(0, 0, 1, 1)

iDefinition.EndEdit()


Остальное записывается в графическом режиме и корректируется.
Ниже полный код:


# -*- coding: cp1251 -*-
#|prim

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

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

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

iDocument3D = iKompasObject.ActiveDocument3D()

iDocument = iApplication.ActiveDocument
iKompasDocument3D = KAPI7.IKompasDocument3D(iDocument)

iDocument3D = iKompasObject.Document3D()
iDocument3D.Create(False, True)

iPart = iDocument3D.GetPart(LDefin3D.pTop_Part)
iSketch = iPart.NewEntity(LDefin3D.o3d_sketch)
iDefinition = iSketch.GetDefinition()
iPlane = iPart.GetDefaultEntity(LDefin3D.o3d_planeXOY)
iDefinition.SetPlane(iPlane)
iSketch.Create()

iDocument2D = iDefinition.BeginEdit()
obj = iDocument2D.ksCircle(0.0, 0.0, 51.0, 1)
iDefinition.EndEdit()

iPart = iDocument3D.GetPart(LDefin3D.pTop_Part)
obj = iPart.NewEntity(LDefin3D.o3d_bossExtrusion)
iDefinition = obj.GetDefinition()
iCollection = iPart.EntityCollection(LDefin3D.o3d_edge)
iCollection.SelectByPoint(-51.0, 0.0, 0.0)
iEdge = iCollection.First()
iEdgeDefinition = iEdge.GetDefinition()
iSketch = iEdgeDefinition.GetOwnerEntity()
iDefinition.SetSketch(iSketch)

iExtrusionParam = iDefinition.ExtrusionParam()
iExtrusionParam.depthNormal = 10.0
iExtrusionParam.depthReverse = 10.0
iExtrusionParam.direction = LDefin3D.dtNormal
iExtrusionParam.draftOutwardNormal = False
iExtrusionParam.draftOutwardReverse = False
iExtrusionParam.draftValueNormal = 0.0
iExtrusionParam.draftValueReverse = 0.0
iExtrusionParam.typeNormal = LDefin3D.etBlind
iExtrusionParam.typeReverse = LDefin3D.etBlind

iThinParam = iDefinition.ThinParam()
iThinParam.thin = False

obj.name = "Операция выдавливания:1"
iColorParam = obj.ColorParam()
iColorParam.ambient = 0.5
iColorParam.color = 9474192
iColorParam.diffuse = 0.6
iColorParam.emission = 0.5
iColorParam.shininess = 0.8
iColorParam.specularity = 0.8
iColorParam.transparency = 1.0

obj.Create()

iPart = iDocument3D.GetPart(LDefin3D.pTop_Part)
iSketch = iPart.NewEntity(LDefin3D.o3d_sketch)
iDefinition = iSketch.GetDefinition()
iPlane = iPart.GetDefaultEntity(LDefin3D.o3d_planeXOY)
iDefinition.SetPlane(iPlane)
iSketch.Create()



import math
iDocument2D = iDefinition.BeginEdit()


for n in range(68):

    x=30*math.sin(n/20.0)
    y=40*math.cos(1*n/20.0)

    obj = iDocument2D.ksCircle(x, y, 0.75, 1)

obj = iDocument2D.ksCircle(0, 0, 1, 1)




iDefinition.EndEdit()






iPart = iDocument3D.GetPart(LDefin3D.pTop_Part)
obj = iPart.NewEntity(LDefin3D.o3d_cutExtrusion)
iDefinition = obj.GetDefinition()
iCollection = iPart.EntityCollection(LDefin3D.o3d_edge)
iCollection.SelectByPoint(0, 1, 0)
iEdge = iCollection.First()
iEdgeDefinition = iEdge.GetDefinition()
iSketch = iEdgeDefinition.GetOwnerEntity()
iDefinition.SetSketch(iSketch)
iDefinition.cut = True

iExtrusionParam = iDefinition.ExtrusionParam()
iExtrusionParam.depthNormal = 10.0
iExtrusionParam.depthReverse = 10.0
iExtrusionParam.direction = LDefin3D.dtNormal
iExtrusionParam.draftOutwardNormal = False
iExtrusionParam.draftOutwardReverse = False
iExtrusionParam.draftValueNormal = 0.0
iExtrusionParam.draftValueReverse = 0.0
iExtrusionParam.typeNormal = LDefin3D.etBlind
iExtrusionParam.typeReverse = LDefin3D.etBlind

iThinParam = iDefinition.ThinParam()
iThinParam.thin = False

obj.name = "Вырезать элемент выдавливания:1"
iColorParam = obj.ColorParam()
iColorParam.ambient = 0.5
iColorParam.color = 9474192
iColorParam.diffuse = 0.6
iColorParam.emission = 0.5
iColorParam.shininess = 0.8
iColorParam.specularity = 0.8
iColorParam.transparency = 1.0

obj.Create()

iPart = iDocument3D.GetPart(LDefin3D.pTop_Part)
obj = iPart.NewEntity(LDefin3D.o3d_cutExtrusion)
iDefinition = obj.GetDefinition()
iCollection = iPart.EntityCollection(LDefin3D.o3d_edge)
iCollection.SelectByPoint(0, 1, 0.0)
iEdge = iCollection.First()
iEdgeDefinition = iEdge.GetDefinition()
iSketch = iEdgeDefinition.GetOwnerEntity()
iDefinition.SetSketch(iSketch)
iDefinition.cut = True

iExtrusionParam = iDefinition.ExtrusionParam()
iExtrusionParam.depthNormal = 10.0
iExtrusionParam.depthReverse = 10.0
iExtrusionParam.direction = LDefin3D.dtBoth
iExtrusionParam.draftOutwardNormal = False
iExtrusionParam.draftOutwardReverse = False
iExtrusionParam.draftValueNormal = 0.0
iExtrusionParam.draftValueReverse = 0.0
iExtrusionParam.typeNormal = LDefin3D.etBlind
iExtrusionParam.typeReverse = LDefin3D.etBlind

iThinParam = iDefinition.ThinParam()
iThinParam.thin = False
a
obj.name = "Вырезать элемент выдавливания:2"
iColorParam = obj.ColorPaaram()
iColorParam.ambient = 0.5
iColorParam.color = 9474192
iColorParam.diffuse = 0.6
iColorParam.emission = 0.5
iColorParam.shininess = 0.8
iColorParam.specularity = 0.8
iColorParam.transparency = 1.0

obj.Create()





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

polpchelslav

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

semenkontorovskij

Цитата: Alex_32RUS от 11.09.15, 11:37:07
Всем привет! Кто может помочь? Есть у кого примеры файлов работы с переменными и функциями для изучения? Если не жалко, заранее благодарю всех откликнувшихся!) Недавно наткнулся на файл модели сетки рабицы, довольно интересно всё сделано. Вот и подумал может у кого что еще есть? Например просечной лист и т.п.


Вот Вашему вниманию одна из моделей геокупола V2.

Модель параметризована. Все построения "завязаны" на диаметре основания. Это единственная переменная, которая управляет всем построением.
+ Благодарностей: 1

Vitalij Lysanov

Есть формулы комплексные обеспечивающие расчет графики
Передача данных в школьный Компас 3D V12 эмуляцией мыши и клавиатуры на python 3.4.2

Работа с эскизом, a,b,c,d - координаты вершин прямоугольника
#____________________________________________________________________
a=-1111-2222*1j
b=-1111+2222*1j
c=1111+2222*1j
d=1111-2222*1j

Рисуем прямоугольник
#____________________________________________________________________
eskiz_linij(a,b)
eskiz_linij(b,c)
eskiz_linij(c,d)
eskiz_linij(d,a)

Рисуем второй прямоугольник с размером больше в 1.2 раз
#____________________________________________________________________
m=1.2
eskiz_linij(m*a,m*b)
eskiz_linij(m*b,m*c)
eskiz_linij(m*c,m*d)
eskiz_linij(m*d,m*a)

Уголок по точкам (пятая часть отрезка) 
ma=0.9999 отводит точки от отрезка, чтобы сработала многотельность
Сборок в школьном Компасе нет

#____________________________________________________________________
ma=0.9999
t1=ma*(a+(b-a)/5)
t2=ma*(a+(d-a)/5)
ta=a*ma

eskiz_linij(t2,t1)
eskiz_linij(ta,t1)
eskiz_linij(ta,t2)



Укосина. (Десятая часть отрезка)
#____________________________________________________________________
bL=ma*(b-(b-a)/10)
bp=ma*(b+(c-b)/10)


dL=ma*(d-(d-a)/10)
dp=ma*(d+(c-d)/10)

eskiz_linij(bL,ma*b)
eskiz_linij(ma*b,bp)
eskiz_linij(bp,dp)
eskiz_linij(dp,ma*d)
eskiz_linij(ma*d,dL)
eskiz_linij(dL,bL)


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

Vitalij Lysanov

Дополнительная информация:

Программа рассчитана на разрешение экрана 1280 на 720.

Файлы BMP c изображением кнопок в приложении.( Компас 3D LT12)

________
Методика программы позволяет производить также:

- пакетное пересохранение файлов

- пакетного сохранения спецификаций в Excel

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

Itat

Не понятно.... :)
а в примере http://sapr-journal.ru/uroki-kompas-3d/sozdanie-diametralnoj-trubnoj-reshetki-v-kompas-3d/ на втором рисунке у меня не получается проставить размер - система пишет, что "невозможно проставить размер. нет информации о привязке"

Itat

Вот только отправил предыдущее сообщениеи сразу всё получилось! Во она, всемогущая сила форума как себя проявляет :o:

Вот на этом же рисунке 2 автор, по-моему, допустил неточность: на рис. стрелка 2 направлена на линейный авторазмер, но использование этой команды вызовет сообщение системы "невозможно проставить размер. нет информации о привязке". А если воспользоваться командой "Диаметральный размер", то как раз и выскочит окошко "Установить значение размера", указанное стрелкой 4.

При этом должен быть включен параметрический режим.

Уважаемые спецы, я прав?


Sprinter500

Цитата: semenkontorovskij от 09.10.15, 15:51:26
Вот Вашему вниманию одна из моделей геокупола V2.

Модель параметризована. Все построения "завязаны" на диаметре основания. Это единственная переменная, которая управляет всем построением.


Можете в 15-й версии Компаса выложить то же самое? А то не у всех еще 16й :)  Заранее Спасибо!

Алхимик

Цитата: Itat от 11.10.15, 17:54:22
Вот на этом же рисунке 2 автор, по-моему, допустил неточность
По моему автор указывал на "Авторазмер". + все тот же автор, в 99% случаев использует только авторазмер.

По-умолчанию в 3д параметрический режим вроде включен.