From 7092d13280820385f39cbf251d7f92ab9ac8b296 Mon Sep 17 00:00:00 2001 From: Paul Wolok Date: Mon, 15 Dec 2025 13:31:08 +0100 Subject: [PATCH] =?UTF-8?q?Einf=C3=BCgen=20von=20anderen=203D=20Elementen?= =?UTF-8?q?=20in=20dxf2lib=20(nicht=20getestet)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- data/block_libraries/test.dxf | 168 +++++++++++++++++----------------- lib/dxf2lib.py | 27 ++++++ 2 files changed, 111 insertions(+), 84 deletions(-) diff --git a/data/block_libraries/test.dxf b/data/block_libraries/test.dxf index b1d7a96..734dc97 100644 --- a/data/block_libraries/test.dxf +++ b/data/block_libraries/test.dxf @@ -493,7 +493,7 @@ $SKPOLY 9 $TDCREATE 40 -2461025.545625 +2461025.562314815 9 $TDUCREATE 40 @@ -501,7 +501,7 @@ $TDUCREATE 9 $TDUPDATE 40 -2461025.545740741 +2461025.5624421295 9 $TDUUPDATE 40 @@ -933,11 +933,11 @@ $PSTYLEMODE 9 $FINGERPRINTGUID 2 -{A5BF2429-D13D-445D-ACCA-55971E035CB3} +{FD8C48B3-88E2-4791-9E42-842F713A8FCA} 9 $VERSIONGUID 2 -{B7EFEE6E-5BCF-4C8C-89D4-7AB21D988E37} +{A2BCADBA-4C0F-4FAD-8417-A22B9DAD4BAC} 9 $EXTNAMES 290 @@ -1359,9 +1359,9 @@ ObjectDBX Classes 0 CLASS 1 -LAYOUT +ACDBPLACEHOLDER 2 -AcDbLayout +AcDbPlaceHolder 3 ObjectDBX Classes 90 @@ -1375,9 +1375,9 @@ ObjectDBX Classes 0 CLASS 1 -ACDBPLACEHOLDER +LAYOUT 2 -AcDbPlaceHolder +AcDbLayout 3 ObjectDBX Classes 90 @@ -89243,7 +89243,7 @@ AcDbModelerGeometry 290 1 2 -{BB00C0C3-7AEE-499F-8230-509E0E70F75C} +{F4B0A253-23C5-4BEB-8F28-E6C91AF44C4F} 100 AcDbSurface 71 @@ -89475,7 +89475,7 @@ AcDbModelerGeometry 290 1 2 -{794DF873-F5A6-4B74-9010-71F3F53E86F8} +{D60B38F5-628C-436C-8437-DE011EAC8601} 100 AcDbSurface 71 @@ -89707,7 +89707,7 @@ AcDbModelerGeometry 290 1 2 -{E15CB372-7685-42B3-B8CC-2BE4F76D7463} +{0819467A-12C1-439E-B79A-D4DE2768A6AE} 100 AcDbSurface 71 @@ -89939,7 +89939,7 @@ AcDbModelerGeometry 290 1 2 -{452FFC69-B40D-41F9-B72C-91136B90785A} +{2E516A8B-6193-4A07-B7C2-A478A032A067} 100 AcDbSurface 71 @@ -90171,7 +90171,7 @@ AcDbModelerGeometry 290 1 2 -{CCA84263-E7DF-48DB-AEF5-1B7F11A4F8A3} +{D71D0DD1-2140-4EBC-B8EE-637327DD00F0} 100 AcDbSurface 71 @@ -90403,7 +90403,7 @@ AcDbModelerGeometry 290 1 2 -{981251A0-0A42-4D9C-9A87-00C9A15BF067} +{DEBD75D6-CA6E-4857-B265-ACC080052299} 100 AcDbSurface 71 @@ -90635,7 +90635,7 @@ AcDbModelerGeometry 290 1 2 -{46659431-89A3-44A6-8728-2C0355577062} +{9C8D9B77-4456-4306-A8F4-7321E019D9CC} 100 AcDbSurface 71 @@ -90867,7 +90867,7 @@ AcDbModelerGeometry 290 1 2 -{10EF9893-6A60-41CD-987A-AF1E34A8FDC8} +{F6FB2A24-1C63-466D-92C4-F71DF2A953E7} 100 AcDbSurface 71 @@ -91099,7 +91099,7 @@ AcDbModelerGeometry 290 1 2 -{72196F94-CEA0-4AF8-A742-4D36C8D92FDF} +{B4468C8E-C1A3-41D1-B130-AE2F0D9E1267} 100 AcDbSurface 71 @@ -91331,7 +91331,7 @@ AcDbModelerGeometry 290 1 2 -{39A751E6-9051-4758-AD7A-E5C4A4324821} +{34E67387-2787-40CA-A669-F64BEA611B72} 100 AcDbSurface 71 @@ -91563,7 +91563,7 @@ AcDbModelerGeometry 290 1 2 -{9A6D0969-3A96-4719-9B73-280DC603D942} +{72C3307B-AC1A-4452-B0B6-3FDE3896EA5B} 100 AcDbSurface 71 @@ -91795,7 +91795,7 @@ AcDbModelerGeometry 290 1 2 -{CD33FD9C-4EBB-42C3-ABFF-8C5AA7AAF9AB} +{12C9285F-4BAE-443F-AB2A-83BE73BC8EB8} 100 AcDbSurface 71 @@ -92027,7 +92027,7 @@ AcDbModelerGeometry 290 1 2 -{39384474-5DD0-47EB-81B2-347A66CE20AD} +{12FCDD80-BBFC-4118-A13C-485810D91925} 100 AcDbSurface 71 @@ -92259,7 +92259,7 @@ AcDbModelerGeometry 290 1 2 -{DFBF41BF-E7D0-4314-95F8-29438A0D2B68} +{8F234596-B933-4667-A968-4EFC61EB5B7B} 100 AcDbSurface 71 @@ -92491,7 +92491,7 @@ AcDbModelerGeometry 290 1 2 -{D051A17D-1B6F-4BEC-9EBA-5487FDA65220} +{9B74A8FA-3175-44F7-9346-E88005909D3B} 100 AcDbSurface 71 @@ -92723,7 +92723,7 @@ AcDbModelerGeometry 290 1 2 -{1ADA6F0B-3527-4BFA-8148-C655092ED3E0} +{37DBD3EB-02A5-4B7C-92B2-976EB92A6A30} 100 AcDbSurface 71 @@ -92955,7 +92955,7 @@ AcDbModelerGeometry 290 1 2 -{3FC6BB2F-6B07-49EB-A09D-773F3FB04698} +{1B4FF93F-A1AD-42E9-9DC9-0B04D24A3D6F} 100 AcDbSurface 71 @@ -93187,7 +93187,7 @@ AcDbModelerGeometry 290 1 2 -{6364E587-4DDE-41F3-B884-FCE2E783D749} +{CB64E5CF-C316-420F-9F1B-5883C926981F} 100 AcDbSurface 71 @@ -93419,7 +93419,7 @@ AcDbModelerGeometry 290 1 2 -{5805003B-E8F3-4509-9C7E-944241590C4D} +{B485B361-C9BD-41EB-8AE3-391E8D395EB5} 100 AcDbSurface 71 @@ -93651,7 +93651,7 @@ AcDbModelerGeometry 290 1 2 -{A38AE99C-FBC4-4473-99AB-86FF0BBE57D6} +{208EC8B0-E93F-44C8-BEFD-C40F62FDE58B} 100 AcDbSurface 71 @@ -93883,7 +93883,7 @@ AcDbModelerGeometry 290 1 2 -{7084B784-8857-492D-992D-A5920D66DBE4} +{72285AE4-62D8-4511-A7B4-E12DD6B91E25} 100 AcDbSurface 71 @@ -94115,7 +94115,7 @@ AcDbModelerGeometry 290 1 2 -{AB9DC86D-D93F-47E5-B8D7-334A6698775F} +{76E1D9BE-23F8-4224-8D12-E2C80C03F89B} 100 AcDbSurface 71 @@ -94347,7 +94347,7 @@ AcDbModelerGeometry 290 1 2 -{32EB7307-4535-4586-94E8-EF7BAF411A8C} +{2F20B215-95BA-41A4-8F13-B58D2A9F4FCB} 100 AcDbSurface 71 @@ -94579,7 +94579,7 @@ AcDbModelerGeometry 290 1 2 -{A92D516C-DE8A-4467-8E6B-12A7E1A67542} +{9678D9FD-0118-49C5-9357-FEECE7F7F760} 100 AcDbSurface 71 @@ -94811,7 +94811,7 @@ AcDbModelerGeometry 290 1 2 -{52BDC869-9439-4970-85C7-923A1F9B4B47} +{E50DFEA5-866C-425D-8986-328B2AA21911} 100 AcDbSurface 71 @@ -95043,7 +95043,7 @@ AcDbModelerGeometry 290 1 2 -{4B9D9EB0-BF4C-4731-BE35-4DC9C7F233E8} +{FCA990A5-09C5-43BF-A78E-7B0780A313AD} 100 AcDbSurface 71 @@ -95275,7 +95275,7 @@ AcDbModelerGeometry 290 1 2 -{EEE45687-7782-4437-88F9-87AF594D9E7F} +{2E717AB8-5BAF-47C1-8840-9DAE1DA8224D} 100 AcDbSurface 71 @@ -95507,7 +95507,7 @@ AcDbModelerGeometry 290 1 2 -{30C30EAE-90C0-4044-A5FB-BD0269C2E9D8} +{2A3323F1-CCFB-485A-81D0-43F8AE941C80} 100 AcDbSurface 71 @@ -95739,7 +95739,7 @@ AcDbModelerGeometry 290 1 2 -{C87DF96D-CFF6-4AC7-93B8-E891DF81703C} +{2963548E-CB7D-4589-9A94-3C50455F8888} 100 AcDbSurface 71 @@ -95971,7 +95971,7 @@ AcDbModelerGeometry 290 1 2 -{DCA628D6-49D4-4B8D-87D2-7509553C6D1B} +{67E2D659-7C62-4002-A1CA-289669B7D8BD} 100 AcDbSurface 71 @@ -96203,7 +96203,7 @@ AcDbModelerGeometry 290 1 2 -{72BFA2D9-D10A-47BD-B451-1F2C86C66281} +{ACFAC0C6-84A6-47E4-9D0C-38FD2E2CB9E3} 100 AcDbSurface 71 @@ -96435,7 +96435,7 @@ AcDbModelerGeometry 290 1 2 -{F4412C12-E059-4BE3-8D75-DCC9B9490C53} +{BB6D565D-3914-47CE-81C7-1F0D743730BA} 100 AcDbSurface 71 @@ -96667,7 +96667,7 @@ AcDbModelerGeometry 290 1 2 -{C630E697-EB6F-4FD3-9284-948DA27EEC8E} +{7F435511-60E8-46D4-B629-40AEF050E8B1} 100 AcDbSurface 71 @@ -96899,7 +96899,7 @@ AcDbModelerGeometry 290 1 2 -{7DCDFC15-1314-412A-BBCE-EE5743F909DA} +{ED4F9D36-8748-4450-8077-6ACB086F68B8} 100 AcDbSurface 71 @@ -97131,7 +97131,7 @@ AcDbModelerGeometry 290 1 2 -{274052F7-D8F6-4CA2-B295-DC73A7391A3F} +{16872144-BF0A-443B-BFEF-B5E1E1A0DB07} 100 AcDbSurface 71 @@ -97363,7 +97363,7 @@ AcDbModelerGeometry 290 1 2 -{DCA49B31-B435-4BB6-9D74-8664EDC2CEA4} +{CAF381BA-BB70-4D9E-9239-EC6F7F684216} 100 AcDbSurface 71 @@ -97595,7 +97595,7 @@ AcDbModelerGeometry 290 1 2 -{5E3F3741-F77E-4667-8B30-E63E38C72709} +{433C827F-565E-4826-9C5B-7A9E8ED8AB8E} 100 AcDbSurface 71 @@ -97827,7 +97827,7 @@ AcDbModelerGeometry 290 1 2 -{FCCC6132-6E02-45D5-8BDA-B31C5E0F9AE5} +{EEFFED3E-EABF-4A72-B78A-CEF68A7FD5D3} 100 AcDbSurface 71 @@ -98059,7 +98059,7 @@ AcDbModelerGeometry 290 1 2 -{7CBAD519-6B2E-46C2-8797-A8F1AC0D4E51} +{E89971A4-593D-4AC5-917A-6105C272E6F2} 100 AcDbSurface 71 @@ -98291,7 +98291,7 @@ AcDbModelerGeometry 290 1 2 -{1BA6AE2C-50BD-4184-9BE1-B21A603717D5} +{BDED0BFA-653E-4FB0-B443-CAD85C59FC01} 100 AcDbSurface 71 @@ -98523,7 +98523,7 @@ AcDbModelerGeometry 290 1 2 -{B156CB86-CF22-4D6D-BD1D-B13346BE3C8A} +{E0EF2B32-451F-4A07-A72D-BC4FBF52B163} 100 AcDbSurface 71 @@ -98755,7 +98755,7 @@ AcDbModelerGeometry 290 1 2 -{D5457500-6F10-4D65-8FF1-91ACDED5E5B3} +{54361E51-28D2-419C-B321-E09C39C79F53} 100 AcDbSurface 71 @@ -98987,7 +98987,7 @@ AcDbModelerGeometry 290 1 2 -{96A87A3B-E5FF-4389-A75E-505C16B18200} +{B3B9F234-AEE6-47F3-B7EC-C70CA070AE77} 100 AcDbSurface 71 @@ -99219,7 +99219,7 @@ AcDbModelerGeometry 290 1 2 -{2D12E475-ECC4-4FAB-B6F9-658D37366C1F} +{6D113AE6-3E88-4792-B464-B370D683D400} 100 AcDbSurface 71 @@ -99451,7 +99451,7 @@ AcDbModelerGeometry 290 1 2 -{48F9E8B6-876D-4D1B-925F-01F0C6128C99} +{FE01131C-58BC-4685-AEEC-A35CE9144810} 100 AcDbSurface 71 @@ -99683,7 +99683,7 @@ AcDbModelerGeometry 290 1 2 -{03B67C3E-16C5-49D9-ADCC-5E399A971932} +{2A5149C9-5B89-4EC3-AEF8-4CD55D3BD16F} 100 AcDbSurface 71 @@ -99915,7 +99915,7 @@ AcDbModelerGeometry 290 1 2 -{ACF35792-D054-4AC6-8849-EDA02450F1EC} +{890EFCC7-1B77-434C-99BC-F6A1BB711068} 100 AcDbSurface 71 @@ -100147,7 +100147,7 @@ AcDbModelerGeometry 290 1 2 -{A1578818-69C8-47EA-B078-076862B14644} +{58EA78DA-BB81-400F-B6A9-8D62E7024897} 100 AcDbSurface 71 @@ -100379,7 +100379,7 @@ AcDbModelerGeometry 290 1 2 -{F15BE00F-8E8D-4724-900A-D15CEA3F8464} +{65FEC44F-23E5-489D-AE64-08BD11C50CC2} 100 AcDbSurface 71 @@ -100611,7 +100611,7 @@ AcDbModelerGeometry 290 1 2 -{E7D69CE5-3F11-4FD0-A979-3D0861E4CF0A} +{DD1B350B-9D3D-4595-9F97-EABB70C564F8} 100 AcDbSurface 71 @@ -100843,7 +100843,7 @@ AcDbModelerGeometry 290 1 2 -{18C949F1-F1AE-406F-9EE0-ADF8ADEE75A8} +{B82CF587-E17F-4659-BE61-4F585600C8D8} 100 AcDbSurface 71 @@ -101075,7 +101075,7 @@ AcDbModelerGeometry 290 1 2 -{CA941385-B822-4F51-A289-C72A550F06BA} +{D1154D4C-DB32-4597-9CB9-EEB50B2C236C} 100 AcDbSurface 71 @@ -101307,7 +101307,7 @@ AcDbModelerGeometry 290 1 2 -{7C2FC413-BFF8-43B8-B0DE-95DDE5CF3C65} +{E1159657-CF2F-4F24-9258-479BB9CB214F} 100 AcDbSurface 71 @@ -101539,7 +101539,7 @@ AcDbModelerGeometry 290 1 2 -{9B2A2C1E-8567-4364-A84E-3FB27BA6D3ED} +{B71FE0B1-81EC-4751-ABE8-08520A88F1D0} 100 AcDbSurface 71 @@ -101771,7 +101771,7 @@ AcDbModelerGeometry 290 1 2 -{78096423-8223-403E-80E0-BDF8E5BEADA0} +{BF05F145-DC48-4E7B-8EF7-99DAB6571CA3} 100 AcDbSurface 71 @@ -102003,7 +102003,7 @@ AcDbModelerGeometry 290 1 2 -{CAB779A8-CA32-4639-9953-81FF69987D7D} +{E1EB569C-90AC-457E-A24D-EA49BBFF42F0} 100 AcDbSurface 71 @@ -102235,7 +102235,7 @@ AcDbModelerGeometry 290 1 2 -{EFC03BC6-087B-4882-8D16-AFD7669C4BC2} +{EBF6A771-5804-4A0F-9B3A-4609A98C5191} 100 AcDbSurface 71 @@ -102467,7 +102467,7 @@ AcDbModelerGeometry 290 1 2 -{DF52E87E-CA22-4EDD-A0AF-5DD8B4ACB5A7} +{E4D5E7B0-0D1A-4E52-97FA-2C0E39B6CBEE} 100 AcDbSurface 71 @@ -102699,7 +102699,7 @@ AcDbModelerGeometry 290 1 2 -{AD26FA0C-EC25-41D4-A0D3-0CBEADCACBF3} +{B3145B94-95CA-4B98-9131-58EC732B374E} 100 AcDbSurface 71 @@ -102931,7 +102931,7 @@ AcDbModelerGeometry 290 1 2 -{89FF3696-2080-47D1-86DA-5EAB01AD654B} +{52DE83E3-6B2F-4FA1-9B07-6A322EAFFE00} 100 AcDbSurface 71 @@ -103163,7 +103163,7 @@ AcDbModelerGeometry 290 1 2 -{C4760BB7-2849-46B3-8A23-3F747FA58C2B} +{233A6F64-4365-4FFD-BE05-2F776765E947} 100 AcDbSurface 71 @@ -103395,7 +103395,7 @@ AcDbModelerGeometry 290 1 2 -{867B7263-D472-4A2B-88C0-9C0C9957C6D5} +{9EF12D67-A318-46FD-B059-E9255C9D5D6E} 100 AcDbSurface 71 @@ -103627,7 +103627,7 @@ AcDbModelerGeometry 290 1 2 -{496A88F4-3491-4538-9E53-A9E6B2B20874} +{BA4A0B5E-BBDD-4E32-8104-20ADA4E2187E} 100 AcDbSurface 71 @@ -103859,7 +103859,7 @@ AcDbModelerGeometry 290 1 2 -{19BF887A-BE99-4250-9481-699D2179AF45} +{A58435BE-3E38-49E6-AE9E-B4B71532BC55} 100 AcDbSurface 71 @@ -104091,7 +104091,7 @@ AcDbModelerGeometry 290 1 2 -{876B5751-48DA-4AF6-824F-95DC840E8AED} +{601426BC-586F-4E5F-B305-4DB6185194D7} 100 AcDbSurface 71 @@ -104323,7 +104323,7 @@ AcDbModelerGeometry 290 1 2 -{C279AD2C-ED1E-4CB7-A3DA-220BF7DD6716} +{890929ED-5C17-48D9-A3B5-81C5D93D2277} 100 AcDbSurface 71 @@ -104555,7 +104555,7 @@ AcDbModelerGeometry 290 1 2 -{4C4FAC50-9134-4F08-BE78-604DAD572FA5} +{44141BFF-686E-46F0-9789-67B7BC2CA7EF} 100 AcDbSurface 71 @@ -104787,7 +104787,7 @@ AcDbModelerGeometry 290 1 2 -{CD3C3717-5BDB-4ADE-89C1-1B350BEC4EF6} +{2785AB83-B49C-40B2-AEF4-81190A1D37AD} 100 AcDbSurface 71 @@ -105019,7 +105019,7 @@ AcDbModelerGeometry 290 1 2 -{40ECC079-07F4-475A-B02A-2ADC5CC3A749} +{754EF1B4-D287-44A8-8507-EE028AFD14D6} 100 AcDbSurface 71 @@ -105251,7 +105251,7 @@ AcDbModelerGeometry 290 1 2 -{E8A5FF67-91C2-41E6-8BE7-99F111ABDEB0} +{7479288F-8A24-4975-9774-8E690AF75B50} 100 AcDbSurface 71 @@ -105483,7 +105483,7 @@ AcDbModelerGeometry 290 1 2 -{8A187822-E5B0-496B-B70F-2F07D02D04C8} +{4C643274-967A-4E16-8D9A-72EFD8BDB118} 100 AcDbSurface 71 @@ -105715,7 +105715,7 @@ AcDbModelerGeometry 290 1 2 -{8F40117A-206E-40E0-811B-3B73F8830C4D} +{1A13EBE1-4A2D-4587-83AA-39B8301BCB37} 100 AcDbSurface 71 @@ -105947,7 +105947,7 @@ AcDbModelerGeometry 290 1 2 -{FE370746-3681-4921-9781-01E7586906BA} +{5E976A13-B452-4A81-B58D-AD3E68E0DB4C} 100 AcDbSurface 71 @@ -106179,7 +106179,7 @@ AcDbModelerGeometry 290 1 2 -{E07EC1E4-E56E-413B-AED7-86B90F55DD26} +{023BDA40-7B0C-4432-95BF-120A7B057BEE} 100 AcDbSurface 71 @@ -112589,7 +112589,7 @@ DictionaryVariables 280 0 1 -1.4.1 @ 2025-12-15T12:05:42.012548+00:00 +1.4.1 @ 2025-12-15T12:29:44.069952+00:00 0 DICTIONARYVAR 5 @@ -112601,7 +112601,7 @@ DictionaryVariables 280 0 1 -1.4.1 @ 2025-12-15T12:05:52.588800+00:00 +1.4.1 @ 2025-12-15T12:29:55.150467+00:00 0 ENDSEC 0 diff --git a/lib/dxf2lib.py b/lib/dxf2lib.py index aaa527b..7b41c75 100644 --- a/lib/dxf2lib.py +++ b/lib/dxf2lib.py @@ -64,6 +64,10 @@ def create_block_library(input_dir, output_file, config, logger=None): "ARC", "INSERT", "ATTDEF", + "3DFACE", + "MESH", + "POLYFACE", + "POLYFACEMESH", "SURFACE", "3DSURFACE", "EXTRUDEDSURFACE", @@ -490,6 +494,29 @@ def get_entity_bounding_box(e, doc,src_doc,filename,config, transform_matrix=Non ) if ve_bbox.has_data: bbox.extend(ve_bbox) + + elif e.dxftype() == '3DFACE': + # 3DFace: direkte Eckpunkte verwenden + pts = [] + try: + pts = [Vec3(p) for p in e.get_points()] # ezdxf API + except Exception: + try: + pts = [Vec3(v.dxf.location) for v in e.vertices] + except Exception: + pts = [] + if transform_matrix: + pts = [transform_matrix.transform(p) for p in pts] + if pts: + bbox.extend(pts) + + elif e.dxftype() in {'MESH', 'POLYFACE', 'POLYFACEMESH'}: + # Mesh/Polyface über virtuelle Geometrie auswerten + ve_bbox = _bbox_from_virtual_entities( + e, doc, src_doc, filename, config, transform_matrix + ) + if ve_bbox.has_data: + bbox.extend(ve_bbox) elif e.dxftype() == 'SPLINE': # Approximation der Spline-Kurve