Поиск размеров, у которых отсутствуют привязки к примитивам чертежа.

Автор Vitalij Lysanov, 05.11.16, 16:09:19

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

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

Vitalij Lysanov

Записываем два массива.
     Массив точек привязок размеров.
     Массив координат примитивов, в данном примере, отрезков.

Осматриваем точки привязки массива размеров.
Если такие координаты  отсутствуют в массиве примитивов, отмечаем эту точку.

При работе программы, размеры поочередно подсвечиваются на 1 секунду.

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

# coding: cp1251
# 2D-API|step7
import time
import Kompas6API5, LDefin2D
Kompas, doc2d = start2d()
import cmath

#otrezok otrezok otrezok otrezok otrezok otrezok otrezok otrezok otrezok otrezok otrezok otrezok otrezok otrezok otrezok       
t_otr=[]

count = 0
iIter = Kompas6API5.ksIterator(Kompas.GetIterator())     # ksIterator
iIter.ksCreateIterator(LDefin2D.LINESEG_OBJ, 0)

if iIter.reference:
    obj = iIter.ksMoveIterator("F")
    if doc2d.ksExistObj(obj):
        while doc2d.ksExistObj(obj) <> 0:
            par_otrezka = Kompas6API5.ksLineSegParam(Kompas.GetParamStruct( LDefin2D.ko_LineSegParam ))
   
            t = doc2d.ksGetObjParam( obj, par_otrezka, LDefin2D.ALLPARAM )   # Получить параметры отрезка
            if t==1:

                print "otr",t,"=otrezok=",par_otrezka.x1,par_otrezka.y1,par_otrezka.x2,par_otrezka.y2,"st = ",par_otrezka.style

               
                t_otr.append(par_otrezka.x1+par_otrezka.y1*1j)
                t_otr.append(par_otrezka.x2+par_otrezka.y2*1j)


            obj = iIter.ksMoveIterator("N")

#   razm    razm    razm    razm    razm    razm    razm    razm    razm    razm    razm    razm    razm    razm         
razm=[]

count = 0
iIter = Kompas6API5.ksIterator(Kompas.GetIterator())            # ksIterator
                                                                #    iIter.ksCreateIterator(LDefin2D.MACRO_OBJ, 0)
iIter.ksCreateIterator(LDefin2D.LDIMENSION_OBJ, 0)


iParam = Kompas6API5.ksLDimParam(Kompas.GetParamStruct(LDefin2D.ko_LDimParam))           # ksLDimParam
isPar = Kompas6API5.ksLDimSourceParam(iParam.GetSPar())                                  # ksLDimSourceParam

if iIter.reference:
    ra = iIter.ksMoveIterator("F")
    if doc2d.ksExistObj(ra):
        while doc2d.ksExistObj(ra) <> 0:
            count = count + 1


            t = doc2d.ksGetObjParam( ra, iParam,  LDefin2D.ALLPARAM )   # Получить параметры
            iParam.GetSPar
            print isPar.x1,isPar.y1,isPar.x2,isPar.y2 

            razm.append(isPar.x1+ isPar.y1*1j)
            razm.append(isPar.x2+ isPar.y2*1j)
           
            doc2d.ksLightObj(ra, 1)
            time.sleep(1)
            doc2d.ksLightObj(ra, 0)

            ra = iIter.ksMoveIterator("N")

# oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo

for raz in razm:
    pr=0
    for otr in t_otr:
        if abs(otr-raz)<0.00001:
            pr=1

    if pr==0:
        doc2d.ksPoint (raz.real, raz.imag, 2)
        doc2d.ksPoint (raz.real, raz.imag, 3)
+ Благодарностей: 2