Ë
    £èhw-  ã                  ó  — 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      ú6lib/python3.12/site-packages/ezdxf/sections/classes.pyÚ__init__zClassesSection.__init__¹   s0   € ô 9D»ˆŒØˆŒØÐØ�I‰I”d˜8“nÕ%ð  ó    c                óD   — d„ | j                   j                  «       D «       S )Nc              3  ó    K  — | ]  }|–— Œ y ­wr�   © )Ú.0Úclss     r–   Ú	<genexpr>z*ClassesSection.__iter__.<locals>.<genexpr>Ç   s   è ø€ Ð5Ñ4˜”Ñ4ùs   ‚)r�   Úvalues)r”   s    r–   Ú__iter__zClassesSection.__iter__Æ   s   € Ù5˜tŸ|™|×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‘   € ÜœM¬4°«>Ó:ˆà×ÑÓ! YÒ.°,×2IÑ2IÈ!Ñ2Lð Q
ò 3
ô $Ð$RÓSÐSã"ˆJÜ˜*¤hÔ/Ø—‘˜jÕ)ä—‘Ø7¸
×8JÑ8JÓ8LÐ7Mð 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Û   sJ   € ð ˆ?Øä�gœxÔ(Ø�jˆGãˆ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Ñ*ˆÜ�l‰l˜tŸx™xÔ(ˆØ)1Ñ&ˆˆS�%˜ Ø×ÑàØ"%ØØØ$Ø &ñô		
ð 	�‰�cÕr˜   c                ó�   — | j                   j                  «       D ]  }|j                  j                  |k(  sŒ|c S  t	        |«      ‚)záReturns 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ü   s=   € ð —<‘<×&Ñ&Ö(ˆCØ�w‰w�|‰|˜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Ø�N‰N˜4Õ ð ð �8‰8ÐØàŸ8™8×,Ñ,×=Ñ=Ó?ÐØÐ&Ñ&Ø�N‰N˜7Ô#Ø�N‰N˜:Ô&Ø�N‰NÐ-Ô.ØÐ,Ñ,Ø�N‰N˜?Ô+Ø�N‰N˜=Ô)ØÐ,Ñ,Ø�N‰N˜?Ô+Ø�N‰N˜=Ô)ØÐ,Ñ,Ø�N‰N˜?Ô+Ø�N‰N˜=Ô)ØÐ 0Ñ0Ø�N‰NÐ,Ô-Ø�N‰NÐ?Ô@ØÐ.Ñ.Ø�N‰N˜?Ô+Ø�N‰NÐ=Ô>ØÐ 0Ñ0Ø�N‰NÐ,Ô-Ø�N‰NÐ?Ô@ØÐ-Ñ-Ø�N‰N˜>Ô*Ø�N‰NÐ<Ô=ã'ˆGØ�N‰N˜7Õ#ñ (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  sD   € à×ÑÐ:Ô;ØŸ™×+Ñ+Ö-ˆ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˜   € ð �x‰xÐ#Ð#Ð#Ø�8‰8×Ñ¤Ò(ØÜ")£)ˆà—h‘h×'Ñ'×.Ñ.Ö0ˆFØ�F—N‘NÓ$Ó%¨Ñ*Ô%ð 1ð Ÿ™×+Ñ+Ö-ˆHØ*1°(·,±,×2CÑ2CÑ*DˆH�L‰LÕ'ñ .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 ÒCð5qð6 ÒGð7qð8 Ò>ð9qð: Ò9ñ;qð< ò ð=qðJ ò ðKqðX Ò6ðYqðZ Ò>ð[qð\ ÒEð]qð^ Ò3ð_qð` ÒKðaqðb ÒHðcqðd ÒKðeqðf ÒHðgqðh ÒKðiqðj ÒHðkqðl ò  ðmqðz ÒHð{qð| Ò:ð}qð~ Ò?ðqð@ ÒOòAqðB ÒHðCqðD ÒLðEqðF ÒFðGqðH ÒIðIqðJ ÒHðKqðL )ò +ðMqðZ 'ò )ð[qðh )ò +ðiqðv &ò (ðwqðD Ò;ðEqðF Ò4ðGqðH ÒDðIqðJ ÒCðKqðL Ò?ðMqðN ÒHðOqðP Ò@ðQqðR ÒJñSqðT ò ñUqÐ òf€	ò$€	ð" ˆYØˆYðÐ ÷LEò LEr˜   