Записываем два массива.
Массив точек привязок размеров.
Массив координат примитивов, в данном примере, отрезков.
Осматриваем точки привязки массива размеров.
Если такие координаты отсутствуют в массиве примитивов, отмечаем эту точку.
При работе программы, размеры поочередно подсвечиваются на 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)