
    Og3,                       d dl mZ d dlmZmZmZmZmZmZ d dl	m
Z
mZ d dlZd dlmZmZmZmZ d dlmZ d dlmZmZ erd dlmZ d d	lmZ  ej6                  d
      Zi dg ddg ddg ddg ddg ddg ddg ddg ddg ddg ddg d d!g d"d#g d$d%g d&d'g d(d)g d*d+g d,i d-g d.d/g d0d1g d2d3g d4d5g d6d7g d8d9g d:d;g d<d=g d>d?g d@dAg dBdCg dDdEg dFdGg dHdIg dJdKg dLdMg dNi dOg dPdQg dRdSg dTdUg dVdWg dXdYg dZd[g d\d]g d^d_g d`dag dbdcg dddeg dfdgg dhdig djdkg dldmg dndog dpdqg driZg dsZg dtZeeeeiZ  G du dv      Z!y)w    )annotations)TYPE_CHECKINGIteratorIterableUnioncastOptional)CounterOrderedDictN)DXFStructureErrorDXF2004DXF2000DXFKeyError)DXFClass)	DXFEntityDXFTagStorage)Drawing)AbstractTagWriterezdxfACDBDICTIONARYWDFLT)AcDbDictionaryWithDefaultObjectDBX Classesr   r   r   SUN)AcDbSunSCENEOE  r   r   DICTIONARYVAR)AcDbDictionaryVarr   r   r   r   
TABLESTYLE)AcDbTableStyler     r   r   MATERIAL)AcDbMaterialr   r   r   r   VISUALSTYLE)AcDbVisualStyler   r!   r   r   SCALE)	AcDbScaler   r   r   r   MLEADERSTYLE)AcDbMLeaderStyleACDB_MLEADERSTYLE_CLASSr!   r   r   MLEADER)AcDbMLeaderACDB_MLEADER_CLASSi  r      MPOLYGON)AcDbMPolygonAcMPolygonObj15  r   r.   CELLSTYLEMAP)AcDbCellStyleMapr     r   r   EXACXREFPANELOBJECT)ExAcXREFPanelObjectEXAC_ESWr2   r   r   NPOCOLLECTION)%AcDbImpNonPersistentObjectsCollectionr   r   r   r   LAYER_INDEX)AcDbLayerIndexr   r   r   r   SPATIAL_INDEX)AcDbSpatialIndexr   r   r   r   IDBUFFER)AcDbIdBufferr   r   r   r   DIMASSOC)AcDbDimAssocrB   r   r   r   ACDBSECTIONVIEWSTYLE)AcDbSectionViewStyler   r2   r   r   ACDBDETAILVIEWSTYLE)AcDbDetailViewStyler   r2   r   r   IMAGEDEF)AcDbRasterImageDefISMr   r   r   RASTERVARIABLES)AcDbRasterVariablesrI   r   r   r   IMAGEDEF_REACTOR)AcDbRasterImageDefReactorrI   r.   r   r   IMAGE)AcDbRasterImagerI   i  r   r.   PDFDEFINITION)AcDbPdfDefinitionr   r   r   r   PDFUNDERLAY)AcDbPdfReferencer   r!   r   r.   DWFDEFINITION)AcDbDwfDefinitionr   r   r   r   DWFUNDERLAY)AcDbDwfReferencer   r   r   r.   DGNDEFINITION)AcDbDgnDefinitionr   r   r   r   DGNUNDERLAY)AcDbDgnReferencer   r   r   r.   MENTALRAYRENDERSETTINGS)AcDbMentalRayRenderSettingsr   i   r   r   ACDBPLACEHOLDER)AcDbPlaceHolderr   r   r   r   LAYOUT)
AcDbLayoutr   r   r   r   SURFACE)AcDbSurfacer   r!   r   r.   EXTRUDEDSURFACE)AcDbExtrudedSurfacer   r!   r   r.   LOFTEDSURFACE)AcDbLoftedSurfacer   r   r   r.   REVOLVEDSURFACE)AcDbRevolvedSurfacer   r   r   r.   SWEPTSURFACE)AcDbSweptSurfacer   r   r   r.   PLANESURFACE)AcDbPlaneSurfacer   r!   r   r.   NURBSSURFACE)AcDbNurbSurfacer   r!   r   r.   "ACDBASSOCEXTRUDEDSURFACEACTIONBODY)"AcDbAssocExtrudedSurfaceActionBodyr   r2   r   r    ACDBASSOCLOFTEDSURFACEACTIONBODY) AcDbAssocLoftedSurfaceActionBodyr   r2   r   r   "ACDBASSOCREVOLVEDSURFACEACTIONBODY)"AcDbAssocRevolvedSurfaceActionBodyr   r2   r   r   ACDBASSOCSWEPTSURFACEACTIONBODY)AcDbAssocSweptSurfaceActionBodyr   r2   r   r   HELIX)	AcDbHelixr   r!   r   r.   WIPEOUT)AcDbWipeoutWipeOut   r   r.   WIPEOUTVARIABLES)AcDbWipeoutVariablesr|   r   r   r   	FIELDLIST)AcDbFieldListr   r5   r   r   GEODATA)AcDbGeoDatar   r!   r   r   SORTENTSTABLE)AcDbSortentsTabler   r   r   r   
ACAD_TABLE)	AcDbTabler   r2   r   r.   ARC_DIMENSION)AcDbArcDimensionr   r2   r   r.   LARGE_RADIAL_DIMENSION)AcDbRadialDimensionLarger   r2   r   r.   )r   r   r$   r"   r&   r   r(   r   r3   r\   rE   rC   rJ   r^   r`   )r   r   r$   r"   r&   r   r(   r   r3   r\   rE   rC   rJ   c                  j    e Zd Z	 	 d	 	 	 ddZddZddZ	 d	 	 	 ddZddZddZddZ	dd	Z
dd
Zy)ClassesSectionNc                j    t               | _        || _        || j                  t	        |             y y N)r   classesdocloaditer)selfr   entitiess      [/var/www/html/public_html/myphp/venv/lib/python3.12/site-packages/ezdxf/sections/classes.py__init__zClassesSection.__init__   s0     9DIId8n%      c                D    d | j                   j                         D        S )Nc              3      K   | ]  }|  y wr    ).0clss     r   	<genexpr>z*ClassesSection.__iter__.<locals>.<genexpr>   s     55s   )r   values)r   s    r   __iter__zClassesSection.__iter__   s    5t||22455r   c                6   t        t        t        |            }|j                         dk7  s|j                  d   dk7  rt        d      |D ]K  }t        |t              r| j                  |       %t        j                  d|j                          d       M y )NSECTIONr.   )   CLASSESz,Critical structure error in CLASSES section.z!Ignored invalid DXF entity type 'z' in section CLASSES.)r   r   nextdxftype
base_classr   
isinstancer   registerloggerwarning)r   r   section_head
cls_entitys       r   r   zClassesSection.load   s    M4>:!Y.,2I2I!2L Q
 3
 $$RSS" 	J*h/j)7
8J8J8L7M N+ ,		r   c                    |y t        |t              r|f}|D ],  }|j                  }|| j                  vs|| j                  |<   . y r   )r   r   keyr   )r   r   dxfclassr   s       r   r   zClassesSection.register   sO     ?gx(jG 	-H,,C$,,&$,S!	-r   c           	         |t         vryt         |   }t        j                  | j                        }|\  }}}}}|j	                  ||||||d       | j                  |       y)z!Register a known class by `name`.N)r   )namecpp_class_nameapp_nameflagswas_a_proxyis_an_entity)CLASS_DEFINITIONSr   newr   update_dxf_attribsr   )	r   r   cls_datar   cppappr   proxyentitys	            r   	add_classzClassesSection.add_class   sm    (($T*lltxx()1&S%"%$ &		
 	cr   c                    | j                   j                         D ]  }|j                  j                  |k(  s|c S  t	        |      )zReturns the first class matching `name`.

        Storage key is the ``(name, cpp_class_name)`` tuple, because there are
        some classes with the same :attr:`name` but different
        :attr:`cpp_class_names`.

        )r   r   dxfr   r   )r   r   r   s      r   getzClassesSection.get   sB     <<&&( 	Cww||t#
	 $r   c                |   t         j                  |t              }|D ]  }| j                  |        | j                  y| j                  j
                  j                         }d|v r3| j                  d       | j                  d       | j                  d       d|v r"| j                  d       | j                  d       d|v r"| j                  d       | j                  d       d	|v r"| j                  d
       | j                  d	       d|v r"| j                  d       | j                  d       d|v r"| j                  d       | j                  d       d|v r"| j                  d       | j                  d       d|v r"| j                  d       | j                  d       |D ]  }| j                  |        y)zAAdd all required CLASS definitions for the specified DXF version.NrN   rG   rL   rR   rP   rV   rT   rZ   rX   rd   rp   rf   rr   rh   rt   rj   rv   )REQUIRED_CLASSESr   	REQ_R2004r   r   entitydbdxf_types_in_use)r   
dxfversionnamesr   r   r   s         r   add_required_classesz#ClassesSection.add_required_classes	  s    $$Z; 	!DNN4 	! 8888,,==?&&NN7#NN:&NN-.,,NN?+NN=),,NN?+NN=),,NN?+NN=) 00NN,-NN?@..NN?+NN=> 00NN,-NN?@--NN>*NN<=' 	$GNN7#	$r   c                    |j                  d       | j                  j                         D ]  }|j                  |        |j                  d       y)zExport DXF tags. (internal API)z  0
SECTION
  2
CLASSES
z  0
ENDSEC
N)	write_strr   r   
export_dxf)r   	tagwriterr   s      r   r   zClassesSection.export_dxf0  sI    :;++- 	+H	*	+O,r   c                   | j                   J | j                   j                  t        k  ryt               }| j                   j                  j                         D ]  }||j                         xx   dz  cc<    | j                  j                         D ]*  }||j                  j                     |j                  _
        , y)z_Update CLASS instance counter for all registered classes, requires
        DXF R2004+.
        Nr.   )r   r   r   r
   r   r   r   r   r   r   instance_count)r   counterr   r   s       r   update_instance_countersz'ClassesSection.update_instance_counters7  s     xx###88("))hh''..0 	+FFNN$%*%	+ ++- 	EH*1(,,2C2C*DHLL'	Er   )NN)r   zOptional[Drawing]r   zOptional[Iterable[DXFEntity]])returnzIterator[DXFClass])r   zIterator[DXFEntity]r   Noner   )r   z-Optional[Union[DXFClass, Iterable[DXFClass]]]r   r   )r   str)r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   )__name__
__module____qualname__r   r   r   r   r   r   r   r   r   r   r   r   r   r      sb     "&26&& 0&6& HL-D-	-& %$N-Er   r   )"
__future__r   typingr   r   r   r   r   r	   collectionsr
   r   loggingezdxf.lldxf.constr   r   r   r   ezdxf.entities.dxfclassr   ezdxf.entities.dxfentityr   r   ezdxf.documentr   ezdxf.lldxf.tagwriterr   	getLoggerr   r   	REQ_R2000r   r   r   r   r   r   <module>r      s   # K K ,  N N , =&7			7	#q q 
-q Hq Eq Aq Gq ;q Oq @q  ?!q" I#q$ J%q&  'q4 C5q6 G7q8 >9q: 9;q<  =qJ  KqX 6YqZ >[q\ E]q^ 3_q` Kaqb Hcqd Keqf Hgqh Kiqj Hkql   mqz H{q| :}q~ ?q@ OAqB HCqD LEqF FGqH IIqJ HKqL ) +MqZ ' )[qh ) +iqv & (wqD ;EqF 4GqH DIqJ CKqL ?MqN HOqP @QqR JSqT  Uq f	$	" YY LE LEr   