diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml
index dd9fc93536..02f45386c9 100644
--- a/.github/FUNDING.yml
+++ b/.github/FUNDING.yml
@@ -1,3 +1,4 @@
# These are supported funding model platforms
github: [aothms]
+open_collective: opensourcebim
diff --git a/.github/workflows/ci-blenderbim-matrix.yml b/.github/workflows/ci-blenderbim-matrix.yml
index c586db179a..cca06ce15e 100644
--- a/.github/workflows/ci-blenderbim-matrix.yml
+++ b/.github/workflows/ci-blenderbim-matrix.yml
@@ -59,8 +59,8 @@ jobs:
uses: svenstaro/upload-release-action@v2
with:
repo_token: ${{ secrets.GITHUB_TOKEN }}
- file: src/blenderbim_${{ matrix.config.short_name }}_${{ matrix.pyver }}/dist/blender28-bim-${{steps.date.outputs.date}}-${{ matrix.pyver }}-${{ matrix.config.short_name }}.zip
- asset_name: blender28-bim-${{steps.date.outputs.date}}-${{ matrix.pyver }}-${{ matrix.config.short_name }}.zip
+ file: src/blenderbim_${{ matrix.config.short_name }}_${{ matrix.pyver }}/dist/blenderbim-${{steps.date.outputs.date}}-${{ matrix.pyver }}-${{ matrix.config.short_name }}.zip
+ asset_name: blenderbim-${{steps.date.outputs.date}}-${{ matrix.pyver }}-${{ matrix.config.short_name }}.zip
tag: "blenderbim-${{steps.date.outputs.date}}"
overwrite: true
body: "Daily developer testing build blenderbim-${{steps.date.outputs.date}}"
diff --git a/.gitignore b/.gitignore
index 28aaec9013..9485fddea2 100644
--- a/.gitignore
+++ b/.gitignore
@@ -31,4 +31,21 @@ Pipfile.lock
# Vim
*.swp
+# Flask
+instance/*
+!instance/.gitignore
+.webassets-cache
+.env
+*.db
+
+# Byte-compiled / optimized / DLL files
+*.py[cod]
+*$py.class
+
+# pipenv
+Pipfile
+Pipfile.lock
+
+# Database
+*.db
diff --git a/COPYING b/COPYING
index e587591e14..810fce6e9b 100644
--- a/COPYING
+++ b/COPYING
@@ -1,7 +1,7 @@
GNU GENERAL PUBLIC LICENSE
Version 3, 29 June 2007
- Copyright (C) 2007 Free Software Foundation, Inc.
+ Copyright (C) 2007 Free Software Foundation, Inc.
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
@@ -618,4 +618,4 @@ an absolute waiver of all civil liability in connection with the
Program, unless a warranty or assumption of liability accompanies a
copy of the Program in return for a fee.
- END OF TERMS AND CONDITIONS
\ No newline at end of file
+ END OF TERMS AND CONDITIONS
diff --git a/COPYING.LESSER b/COPYING.LESSER
index 65c5ca88a6..0a041280bd 100644
--- a/COPYING.LESSER
+++ b/COPYING.LESSER
@@ -1,7 +1,7 @@
GNU LESSER GENERAL PUBLIC LICENSE
Version 3, 29 June 2007
- Copyright (C) 2007 Free Software Foundation, Inc.
+ Copyright (C) 2007 Free Software Foundation, Inc.
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
diff --git a/README.md b/README.md
index 0cdd3b2653..a28b3a58df 100644
--- a/README.md
+++ b/README.md
@@ -217,7 +217,44 @@ Usage examples
>>> # Writing IFC-SPF files to disk:
>>> f.write("out.ifc")
-[LGPL]: https://github.com/IfcOpenShell/IfcOpenShell/tree/master/COPYING "LGPL"
+Extra tools
+-----------
+
+Also available are a series of utilities that are based on or related to IfcOpenShell.
+
+Those marked with an asterisk are part of IfcOpenShell.
+
+Name | License
+--- | ---
+bcf | LGPL-3.0-or-later
+blenderbim | GPL-3.0-or-later
+bsdd | LGPL-3.0-or-later
+ifc2ca | LGPL-3.0-or-later
+ifc4d | LGPL-3.0-or-later
+ifc5d | LGPL-3.0-or-later
+ifcbimtester | LGPL-3.0-or-later
+ifcblender | LGPL-3.0-or-later\*
+ifccityjson | LGPL-3.0-or-later
+ifcclash | LGPL-3.0-or-later
+ifccobie | LGPL-3.0-or-later
+ifcconvert | LGPL-3.0-or-later\*
+ifccsv | LGPL-3.0-or-later
+ifcdiff | LGPL-3.0-or-later
+ifcfm | LGPL-3.0-or-later
+ifcgeom | LGPL-3.0-or-later\*
+ifcgeom\_schema\_agnostic | LGPL-3.0-or-later\*
+ifcgeomserver | LGPL-3.0-or-later\*
+ifcjni | LGPL-3.0-or-later\*
+ifcmax | LGPL-3.0-or-later\*
+ifcopenshell-python | LGPL-3.0-or-later\*
+ifcparse | LGPL-3.0-or-later\*
+ifcpatch | LGPL-3.0-or-later
+ifcsverchok | GPL-3.0-or-later
+ifcwrap | LGPL-3.0-or-later\*
+qtviewer | LGPL-3.0-or-later\*
+serializers | LGPL-3.0-or-later\*
+
+[LGPL]: https://github.com/IfcOpenShell/IfcOpenShell/tree/master/COPYING.LESSER "LGPL-3.0-or-later"
[IFC]: https://technical.buildingsmart.org/standards/ifc/ "IFC"
[IFC2x3 TC1]: https://standards.buildingsmart.org/IFC/RELEASE/IFC2x3/TC1/HTML/ "IFC2x3 TC1"
[IFC4 Add2 TC1]: https://standards.buildingsmart.org/IFC/RELEASE/IFC4/ADD2_TC1/HTML/ "IFC4 Add2 TC1"
diff --git a/src/bcf/COPYING b/src/bcf/COPYING
new file mode 100644
index 0000000000..810fce6e9b
--- /dev/null
+++ b/src/bcf/COPYING
@@ -0,0 +1,621 @@
+ GNU GENERAL PUBLIC LICENSE
+ Version 3, 29 June 2007
+
+ Copyright (C) 2007 Free Software Foundation, Inc.
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+ Preamble
+
+ The GNU General Public License is a free, copyleft license for
+software and other kinds of works.
+
+ The licenses for most software and other practical works are designed
+to take away your freedom to share and change the works. By contrast,
+the GNU General Public License is intended to guarantee your freedom to
+share and change all versions of a program--to make sure it remains free
+software for all its users. We, the Free Software Foundation, use the
+GNU General Public License for most of our software; it applies also to
+any other work released this way by its authors. You can apply it to
+your programs, too.
+
+ When we speak of free software, we are referring to freedom, not
+price. Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+them if you wish), that you receive source code or can get it if you
+want it, that you can change the software or use pieces of it in new
+free programs, and that you know you can do these things.
+
+ To protect your rights, we need to prevent others from denying you
+these rights or asking you to surrender the rights. Therefore, you have
+certain responsibilities if you distribute copies of the software, or if
+you modify it: responsibilities to respect the freedom of others.
+
+ For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must pass on to the recipients the same
+freedoms that you received. You must make sure that they, too, receive
+or can get the source code. And you must show them these terms so they
+know their rights.
+
+ Developers that use the GNU GPL protect your rights with two steps:
+(1) assert copyright on the software, and (2) offer you this License
+giving you legal permission to copy, distribute and/or modify it.
+
+ For the developers' and authors' protection, the GPL clearly explains
+that there is no warranty for this free software. For both users' and
+authors' sake, the GPL requires that modified versions be marked as
+changed, so that their problems will not be attributed erroneously to
+authors of previous versions.
+
+ Some devices are designed to deny users access to install or run
+modified versions of the software inside them, although the manufacturer
+can do so. This is fundamentally incompatible with the aim of
+protecting users' freedom to change the software. The systematic
+pattern of such abuse occurs in the area of products for individuals to
+use, which is precisely where it is most unacceptable. Therefore, we
+have designed this version of the GPL to prohibit the practice for those
+products. If such problems arise substantially in other domains, we
+stand ready to extend this provision to those domains in future versions
+of the GPL, as needed to protect the freedom of users.
+
+ Finally, every program is threatened constantly by software patents.
+States should not allow patents to restrict development and use of
+software on general-purpose computers, but in those that do, we wish to
+avoid the special danger that patents applied to a free program could
+make it effectively proprietary. To prevent this, the GPL assures that
+patents cannot be used to render the program non-free.
+
+ The precise terms and conditions for copying, distribution and
+modification follow.
+
+ TERMS AND CONDITIONS
+
+ 0. Definitions.
+
+ "This License" refers to version 3 of the GNU General Public License.
+
+ "Copyright" also means copyright-like laws that apply to other kinds of
+works, such as semiconductor masks.
+
+ "The Program" refers to any copyrightable work licensed under this
+License. Each licensee is addressed as "you". "Licensees" and
+"recipients" may be individuals or organizations.
+
+ To "modify" a work means to copy from or adapt all or part of the work
+in a fashion requiring copyright permission, other than the making of an
+exact copy. The resulting work is called a "modified version" of the
+earlier work or a work "based on" the earlier work.
+
+ A "covered work" means either the unmodified Program or a work based
+on the Program.
+
+ To "propagate" a work means to do anything with it that, without
+permission, would make you directly or secondarily liable for
+infringement under applicable copyright law, except executing it on a
+computer or modifying a private copy. Propagation includes copying,
+distribution (with or without modification), making available to the
+public, and in some countries other activities as well.
+
+ To "convey" a work means any kind of propagation that enables other
+parties to make or receive copies. Mere interaction with a user through
+a computer network, with no transfer of a copy, is not conveying.
+
+ An interactive user interface displays "Appropriate Legal Notices"
+to the extent that it includes a convenient and prominently visible
+feature that (1) displays an appropriate copyright notice, and (2)
+tells the user that there is no warranty for the work (except to the
+extent that warranties are provided), that licensees may convey the
+work under this License, and how to view a copy of this License. If
+the interface presents a list of user commands or options, such as a
+menu, a prominent item in the list meets this criterion.
+
+ 1. Source Code.
+
+ The "source code" for a work means the preferred form of the work
+for making modifications to it. "Object code" means any non-source
+form of a work.
+
+ A "Standard Interface" means an interface that either is an official
+standard defined by a recognized standards body, or, in the case of
+interfaces specified for a particular programming language, one that
+is widely used among developers working in that language.
+
+ The "System Libraries" of an executable work include anything, other
+than the work as a whole, that (a) is included in the normal form of
+packaging a Major Component, but which is not part of that Major
+Component, and (b) serves only to enable use of the work with that
+Major Component, or to implement a Standard Interface for which an
+implementation is available to the public in source code form. A
+"Major Component", in this context, means a major essential component
+(kernel, window system, and so on) of the specific operating system
+(if any) on which the executable work runs, or a compiler used to
+produce the work, or an object code interpreter used to run it.
+
+ The "Corresponding Source" for a work in object code form means all
+the source code needed to generate, install, and (for an executable
+work) run the object code and to modify the work, including scripts to
+control those activities. However, it does not include the work's
+System Libraries, or general-purpose tools or generally available free
+programs which are used unmodified in performing those activities but
+which are not part of the work. For example, Corresponding Source
+includes interface definition files associated with source files for
+the work, and the source code for shared libraries and dynamically
+linked subprograms that the work is specifically designed to require,
+such as by intimate data communication or control flow between those
+subprograms and other parts of the work.
+
+ The Corresponding Source need not include anything that users
+can regenerate automatically from other parts of the Corresponding
+Source.
+
+ The Corresponding Source for a work in source code form is that
+same work.
+
+ 2. Basic Permissions.
+
+ All rights granted under this License are granted for the term of
+copyright on the Program, and are irrevocable provided the stated
+conditions are met. This License explicitly affirms your unlimited
+permission to run the unmodified Program. The output from running a
+covered work is covered by this License only if the output, given its
+content, constitutes a covered work. This License acknowledges your
+rights of fair use or other equivalent, as provided by copyright law.
+
+ You may make, run and propagate covered works that you do not
+convey, without conditions so long as your license otherwise remains
+in force. You may convey covered works to others for the sole purpose
+of having them make modifications exclusively for you, or provide you
+with facilities for running those works, provided that you comply with
+the terms of this License in conveying all material for which you do
+not control copyright. Those thus making or running the covered works
+for you must do so exclusively on your behalf, under your direction
+and control, on terms that prohibit them from making any copies of
+your copyrighted material outside their relationship with you.
+
+ Conveying under any other circumstances is permitted solely under
+the conditions stated below. Sublicensing is not allowed; section 10
+makes it unnecessary.
+
+ 3. Protecting Users' Legal Rights From Anti-Circumvention Law.
+
+ No covered work shall be deemed part of an effective technological
+measure under any applicable law fulfilling obligations under article
+11 of the WIPO copyright treaty adopted on 20 December 1996, or
+similar laws prohibiting or restricting circumvention of such
+measures.
+
+ When you convey a covered work, you waive any legal power to forbid
+circumvention of technological measures to the extent such circumvention
+is effected by exercising rights under this License with respect to
+the covered work, and you disclaim any intention to limit operation or
+modification of the work as a means of enforcing, against the work's
+users, your or third parties' legal rights to forbid circumvention of
+technological measures.
+
+ 4. Conveying Verbatim Copies.
+
+ You may convey verbatim copies of the Program's source code as you
+receive it, in any medium, provided that you conspicuously and
+appropriately publish on each copy an appropriate copyright notice;
+keep intact all notices stating that this License and any
+non-permissive terms added in accord with section 7 apply to the code;
+keep intact all notices of the absence of any warranty; and give all
+recipients a copy of this License along with the Program.
+
+ You may charge any price or no price for each copy that you convey,
+and you may offer support or warranty protection for a fee.
+
+ 5. Conveying Modified Source Versions.
+
+ You may convey a work based on the Program, or the modifications to
+produce it from the Program, in the form of source code under the
+terms of section 4, provided that you also meet all of these conditions:
+
+ a) The work must carry prominent notices stating that you modified
+ it, and giving a relevant date.
+
+ b) The work must carry prominent notices stating that it is
+ released under this License and any conditions added under section
+ 7. This requirement modifies the requirement in section 4 to
+ "keep intact all notices".
+
+ c) You must license the entire work, as a whole, under this
+ License to anyone who comes into possession of a copy. This
+ License will therefore apply, along with any applicable section 7
+ additional terms, to the whole of the work, and all its parts,
+ regardless of how they are packaged. This License gives no
+ permission to license the work in any other way, but it does not
+ invalidate such permission if you have separately received it.
+
+ d) If the work has interactive user interfaces, each must display
+ Appropriate Legal Notices; however, if the Program has interactive
+ interfaces that do not display Appropriate Legal Notices, your
+ work need not make them do so.
+
+ A compilation of a covered work with other separate and independent
+works, which are not by their nature extensions of the covered work,
+and which are not combined with it such as to form a larger program,
+in or on a volume of a storage or distribution medium, is called an
+"aggregate" if the compilation and its resulting copyright are not
+used to limit the access or legal rights of the compilation's users
+beyond what the individual works permit. Inclusion of a covered work
+in an aggregate does not cause this License to apply to the other
+parts of the aggregate.
+
+ 6. Conveying Non-Source Forms.
+
+ You may convey a covered work in object code form under the terms
+of sections 4 and 5, provided that you also convey the
+machine-readable Corresponding Source under the terms of this License,
+in one of these ways:
+
+ a) Convey the object code in, or embodied in, a physical product
+ (including a physical distribution medium), accompanied by the
+ Corresponding Source fixed on a durable physical medium
+ customarily used for software interchange.
+
+ b) Convey the object code in, or embodied in, a physical product
+ (including a physical distribution medium), accompanied by a
+ written offer, valid for at least three years and valid for as
+ long as you offer spare parts or customer support for that product
+ model, to give anyone who possesses the object code either (1) a
+ copy of the Corresponding Source for all the software in the
+ product that is covered by this License, on a durable physical
+ medium customarily used for software interchange, for a price no
+ more than your reasonable cost of physically performing this
+ conveying of source, or (2) access to copy the
+ Corresponding Source from a network server at no charge.
+
+ c) Convey individual copies of the object code with a copy of the
+ written offer to provide the Corresponding Source. This
+ alternative is allowed only occasionally and noncommercially, and
+ only if you received the object code with such an offer, in accord
+ with subsection 6b.
+
+ d) Convey the object code by offering access from a designated
+ place (gratis or for a charge), and offer equivalent access to the
+ Corresponding Source in the same way through the same place at no
+ further charge. You need not require recipients to copy the
+ Corresponding Source along with the object code. If the place to
+ copy the object code is a network server, the Corresponding Source
+ may be on a different server (operated by you or a third party)
+ that supports equivalent copying facilities, provided you maintain
+ clear directions next to the object code saying where to find the
+ Corresponding Source. Regardless of what server hosts the
+ Corresponding Source, you remain obligated to ensure that it is
+ available for as long as needed to satisfy these requirements.
+
+ e) Convey the object code using peer-to-peer transmission, provided
+ you inform other peers where the object code and Corresponding
+ Source of the work are being offered to the general public at no
+ charge under subsection 6d.
+
+ A separable portion of the object code, whose source code is excluded
+from the Corresponding Source as a System Library, need not be
+included in conveying the object code work.
+
+ A "User Product" is either (1) a "consumer product", which means any
+tangible personal property which is normally used for personal, family,
+or household purposes, or (2) anything designed or sold for incorporation
+into a dwelling. In determining whether a product is a consumer product,
+doubtful cases shall be resolved in favor of coverage. For a particular
+product received by a particular user, "normally used" refers to a
+typical or common use of that class of product, regardless of the status
+of the particular user or of the way in which the particular user
+actually uses, or expects or is expected to use, the product. A product
+is a consumer product regardless of whether the product has substantial
+commercial, industrial or non-consumer uses, unless such uses represent
+the only significant mode of use of the product.
+
+ "Installation Information" for a User Product means any methods,
+procedures, authorization keys, or other information required to install
+and execute modified versions of a covered work in that User Product from
+a modified version of its Corresponding Source. The information must
+suffice to ensure that the continued functioning of the modified object
+code is in no case prevented or interfered with solely because
+modification has been made.
+
+ If you convey an object code work under this section in, or with, or
+specifically for use in, a User Product, and the conveying occurs as
+part of a transaction in which the right of possession and use of the
+User Product is transferred to the recipient in perpetuity or for a
+fixed term (regardless of how the transaction is characterized), the
+Corresponding Source conveyed under this section must be accompanied
+by the Installation Information. But this requirement does not apply
+if neither you nor any third party retains the ability to install
+modified object code on the User Product (for example, the work has
+been installed in ROM).
+
+ The requirement to provide Installation Information does not include a
+requirement to continue to provide support service, warranty, or updates
+for a work that has been modified or installed by the recipient, or for
+the User Product in which it has been modified or installed. Access to a
+network may be denied when the modification itself materially and
+adversely affects the operation of the network or violates the rules and
+protocols for communication across the network.
+
+ Corresponding Source conveyed, and Installation Information provided,
+in accord with this section must be in a format that is publicly
+documented (and with an implementation available to the public in
+source code form), and must require no special password or key for
+unpacking, reading or copying.
+
+ 7. Additional Terms.
+
+ "Additional permissions" are terms that supplement the terms of this
+License by making exceptions from one or more of its conditions.
+Additional permissions that are applicable to the entire Program shall
+be treated as though they were included in this License, to the extent
+that they are valid under applicable law. If additional permissions
+apply only to part of the Program, that part may be used separately
+under those permissions, but the entire Program remains governed by
+this License without regard to the additional permissions.
+
+ When you convey a copy of a covered work, you may at your option
+remove any additional permissions from that copy, or from any part of
+it. (Additional permissions may be written to require their own
+removal in certain cases when you modify the work.) You may place
+additional permissions on material, added by you to a covered work,
+for which you have or can give appropriate copyright permission.
+
+ Notwithstanding any other provision of this License, for material you
+add to a covered work, you may (if authorized by the copyright holders of
+that material) supplement the terms of this License with terms:
+
+ a) Disclaiming warranty or limiting liability differently from the
+ terms of sections 15 and 16 of this License; or
+
+ b) Requiring preservation of specified reasonable legal notices or
+ author attributions in that material or in the Appropriate Legal
+ Notices displayed by works containing it; or
+
+ c) Prohibiting misrepresentation of the origin of that material, or
+ requiring that modified versions of such material be marked in
+ reasonable ways as different from the original version; or
+
+ d) Limiting the use for publicity purposes of names of licensors or
+ authors of the material; or
+
+ e) Declining to grant rights under trademark law for use of some
+ trade names, trademarks, or service marks; or
+
+ f) Requiring indemnification of licensors and authors of that
+ material by anyone who conveys the material (or modified versions of
+ it) with contractual assumptions of liability to the recipient, for
+ any liability that these contractual assumptions directly impose on
+ those licensors and authors.
+
+ All other non-permissive additional terms are considered "further
+restrictions" within the meaning of section 10. If the Program as you
+received it, or any part of it, contains a notice stating that it is
+governed by this License along with a term that is a further
+restriction, you may remove that term. If a license document contains
+a further restriction but permits relicensing or conveying under this
+License, you may add to a covered work material governed by the terms
+of that license document, provided that the further restriction does
+not survive such relicensing or conveying.
+
+ If you add terms to a covered work in accord with this section, you
+must place, in the relevant source files, a statement of the
+additional terms that apply to those files, or a notice indicating
+where to find the applicable terms.
+
+ Additional terms, permissive or non-permissive, may be stated in the
+form of a separately written license, or stated as exceptions;
+the above requirements apply either way.
+
+ 8. Termination.
+
+ You may not propagate or modify a covered work except as expressly
+provided under this License. Any attempt otherwise to propagate or
+modify it is void, and will automatically terminate your rights under
+this License (including any patent licenses granted under the third
+paragraph of section 11).
+
+ However, if you cease all violation of this License, then your
+license from a particular copyright holder is reinstated (a)
+provisionally, unless and until the copyright holder explicitly and
+finally terminates your license, and (b) permanently, if the copyright
+holder fails to notify you of the violation by some reasonable means
+prior to 60 days after the cessation.
+
+ Moreover, your license from a particular copyright holder is
+reinstated permanently if the copyright holder notifies you of the
+violation by some reasonable means, this is the first time you have
+received notice of violation of this License (for any work) from that
+copyright holder, and you cure the violation prior to 30 days after
+your receipt of the notice.
+
+ Termination of your rights under this section does not terminate the
+licenses of parties who have received copies or rights from you under
+this License. If your rights have been terminated and not permanently
+reinstated, you do not qualify to receive new licenses for the same
+material under section 10.
+
+ 9. Acceptance Not Required for Having Copies.
+
+ You are not required to accept this License in order to receive or
+run a copy of the Program. Ancillary propagation of a covered work
+occurring solely as a consequence of using peer-to-peer transmission
+to receive a copy likewise does not require acceptance. However,
+nothing other than this License grants you permission to propagate or
+modify any covered work. These actions infringe copyright if you do
+not accept this License. Therefore, by modifying or propagating a
+covered work, you indicate your acceptance of this License to do so.
+
+ 10. Automatic Licensing of Downstream Recipients.
+
+ Each time you convey a covered work, the recipient automatically
+receives a license from the original licensors, to run, modify and
+propagate that work, subject to this License. You are not responsible
+for enforcing compliance by third parties with this License.
+
+ An "entity transaction" is a transaction transferring control of an
+organization, or substantially all assets of one, or subdividing an
+organization, or merging organizations. If propagation of a covered
+work results from an entity transaction, each party to that
+transaction who receives a copy of the work also receives whatever
+licenses to the work the party's predecessor in interest had or could
+give under the previous paragraph, plus a right to possession of the
+Corresponding Source of the work from the predecessor in interest, if
+the predecessor has it or can get it with reasonable efforts.
+
+ You may not impose any further restrictions on the exercise of the
+rights granted or affirmed under this License. For example, you may
+not impose a license fee, royalty, or other charge for exercise of
+rights granted under this License, and you may not initiate litigation
+(including a cross-claim or counterclaim in a lawsuit) alleging that
+any patent claim is infringed by making, using, selling, offering for
+sale, or importing the Program or any portion of it.
+
+ 11. Patents.
+
+ A "contributor" is a copyright holder who authorizes use under this
+License of the Program or a work on which the Program is based. The
+work thus licensed is called the contributor's "contributor version".
+
+ A contributor's "essential patent claims" are all patent claims
+owned or controlled by the contributor, whether already acquired or
+hereafter acquired, that would be infringed by some manner, permitted
+by this License, of making, using, or selling its contributor version,
+but do not include claims that would be infringed only as a
+consequence of further modification of the contributor version. For
+purposes of this definition, "control" includes the right to grant
+patent sublicenses in a manner consistent with the requirements of
+this License.
+
+ Each contributor grants you a non-exclusive, worldwide, royalty-free
+patent license under the contributor's essential patent claims, to
+make, use, sell, offer for sale, import and otherwise run, modify and
+propagate the contents of its contributor version.
+
+ In the following three paragraphs, a "patent license" is any express
+agreement or commitment, however denominated, not to enforce a patent
+(such as an express permission to practice a patent or covenant not to
+sue for patent infringement). To "grant" such a patent license to a
+party means to make such an agreement or commitment not to enforce a
+patent against the party.
+
+ If you convey a covered work, knowingly relying on a patent license,
+and the Corresponding Source of the work is not available for anyone
+to copy, free of charge and under the terms of this License, through a
+publicly available network server or other readily accessible means,
+then you must either (1) cause the Corresponding Source to be so
+available, or (2) arrange to deprive yourself of the benefit of the
+patent license for this particular work, or (3) arrange, in a manner
+consistent with the requirements of this License, to extend the patent
+license to downstream recipients. "Knowingly relying" means you have
+actual knowledge that, but for the patent license, your conveying the
+covered work in a country, or your recipient's use of the covered work
+in a country, would infringe one or more identifiable patents in that
+country that you have reason to believe are valid.
+
+ If, pursuant to or in connection with a single transaction or
+arrangement, you convey, or propagate by procuring conveyance of, a
+covered work, and grant a patent license to some of the parties
+receiving the covered work authorizing them to use, propagate, modify
+or convey a specific copy of the covered work, then the patent license
+you grant is automatically extended to all recipients of the covered
+work and works based on it.
+
+ A patent license is "discriminatory" if it does not include within
+the scope of its coverage, prohibits the exercise of, or is
+conditioned on the non-exercise of one or more of the rights that are
+specifically granted under this License. You may not convey a covered
+work if you are a party to an arrangement with a third party that is
+in the business of distributing software, under which you make payment
+to the third party based on the extent of your activity of conveying
+the work, and under which the third party grants, to any of the
+parties who would receive the covered work from you, a discriminatory
+patent license (a) in connection with copies of the covered work
+conveyed by you (or copies made from those copies), or (b) primarily
+for and in connection with specific products or compilations that
+contain the covered work, unless you entered into that arrangement,
+or that patent license was granted, prior to 28 March 2007.
+
+ Nothing in this License shall be construed as excluding or limiting
+any implied license or other defenses to infringement that may
+otherwise be available to you under applicable patent law.
+
+ 12. No Surrender of Others' Freedom.
+
+ If conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot convey a
+covered work so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you may
+not convey it at all. For example, if you agree to terms that obligate you
+to collect a royalty for further conveying from those to whom you convey
+the Program, the only way you could satisfy both those terms and this
+License would be to refrain entirely from conveying the Program.
+
+ 13. Use with the GNU Affero General Public License.
+
+ Notwithstanding any other provision of this License, you have
+permission to link or combine any covered work with a work licensed
+under version 3 of the GNU Affero General Public License into a single
+combined work, and to convey the resulting work. The terms of this
+License will continue to apply to the part which is the covered work,
+but the special requirements of the GNU Affero General Public License,
+section 13, concerning interaction through a network will apply to the
+combination as such.
+
+ 14. Revised Versions of this License.
+
+ The Free Software Foundation may publish revised and/or new versions of
+the GNU General Public License from time to time. Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+ Each version is given a distinguishing version number. If the
+Program specifies that a certain numbered version of the GNU General
+Public License "or any later version" applies to it, you have the
+option of following the terms and conditions either of that numbered
+version or of any later version published by the Free Software
+Foundation. If the Program does not specify a version number of the
+GNU General Public License, you may choose any version ever published
+by the Free Software Foundation.
+
+ If the Program specifies that a proxy can decide which future
+versions of the GNU General Public License can be used, that proxy's
+public statement of acceptance of a version permanently authorizes you
+to choose that version for the Program.
+
+ Later license versions may give you additional or different
+permissions. However, no additional obligations are imposed on any
+author or copyright holder as a result of your choosing to follow a
+later version.
+
+ 15. Disclaimer of Warranty.
+
+ THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
+APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
+HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
+OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
+THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
+IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
+ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+ 16. Limitation of Liability.
+
+ IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
+THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
+GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
+USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
+DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
+PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
+EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGES.
+
+ 17. Interpretation of Sections 15 and 16.
+
+ If the disclaimer of warranty and limitation of liability provided
+above cannot be given local legal effect according to their terms,
+reviewing courts shall apply local law that most closely approximates
+an absolute waiver of all civil liability in connection with the
+Program, unless a warranty or assumption of liability accompanies a
+copy of the Program in return for a fee.
+
+ END OF TERMS AND CONDITIONS
diff --git a/src/bcf/COPYING.LESSER b/src/bcf/COPYING.LESSER
new file mode 100644
index 0000000000..0a041280bd
--- /dev/null
+++ b/src/bcf/COPYING.LESSER
@@ -0,0 +1,165 @@
+ GNU LESSER GENERAL PUBLIC LICENSE
+ Version 3, 29 June 2007
+
+ Copyright (C) 2007 Free Software Foundation, Inc.
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+
+ This version of the GNU Lesser General Public License incorporates
+the terms and conditions of version 3 of the GNU General Public
+License, supplemented by the additional permissions listed below.
+
+ 0. Additional Definitions.
+
+ As used herein, "this License" refers to version 3 of the GNU Lesser
+General Public License, and the "GNU GPL" refers to version 3 of the GNU
+General Public License.
+
+ "The Library" refers to a covered work governed by this License,
+other than an Application or a Combined Work as defined below.
+
+ An "Application" is any work that makes use of an interface provided
+by the Library, but which is not otherwise based on the Library.
+Defining a subclass of a class defined by the Library is deemed a mode
+of using an interface provided by the Library.
+
+ A "Combined Work" is a work produced by combining or linking an
+Application with the Library. The particular version of the Library
+with which the Combined Work was made is also called the "Linked
+Version".
+
+ The "Minimal Corresponding Source" for a Combined Work means the
+Corresponding Source for the Combined Work, excluding any source code
+for portions of the Combined Work that, considered in isolation, are
+based on the Application, and not on the Linked Version.
+
+ The "Corresponding Application Code" for a Combined Work means the
+object code and/or source code for the Application, including any data
+and utility programs needed for reproducing the Combined Work from the
+Application, but excluding the System Libraries of the Combined Work.
+
+ 1. Exception to Section 3 of the GNU GPL.
+
+ You may convey a covered work under sections 3 and 4 of this License
+without being bound by section 3 of the GNU GPL.
+
+ 2. Conveying Modified Versions.
+
+ If you modify a copy of the Library, and, in your modifications, a
+facility refers to a function or data to be supplied by an Application
+that uses the facility (other than as an argument passed when the
+facility is invoked), then you may convey a copy of the modified
+version:
+
+ a) under this License, provided that you make a good faith effort to
+ ensure that, in the event an Application does not supply the
+ function or data, the facility still operates, and performs
+ whatever part of its purpose remains meaningful, or
+
+ b) under the GNU GPL, with none of the additional permissions of
+ this License applicable to that copy.
+
+ 3. Object Code Incorporating Material from Library Header Files.
+
+ The object code form of an Application may incorporate material from
+a header file that is part of the Library. You may convey such object
+code under terms of your choice, provided that, if the incorporated
+material is not limited to numerical parameters, data structure
+layouts and accessors, or small macros, inline functions and templates
+(ten or fewer lines in length), you do both of the following:
+
+ a) Give prominent notice with each copy of the object code that the
+ Library is used in it and that the Library and its use are
+ covered by this License.
+
+ b) Accompany the object code with a copy of the GNU GPL and this license
+ document.
+
+ 4. Combined Works.
+
+ You may convey a Combined Work under terms of your choice that,
+taken together, effectively do not restrict modification of the
+portions of the Library contained in the Combined Work and reverse
+engineering for debugging such modifications, if you also do each of
+the following:
+
+ a) Give prominent notice with each copy of the Combined Work that
+ the Library is used in it and that the Library and its use are
+ covered by this License.
+
+ b) Accompany the Combined Work with a copy of the GNU GPL and this license
+ document.
+
+ c) For a Combined Work that displays copyright notices during
+ execution, include the copyright notice for the Library among
+ these notices, as well as a reference directing the user to the
+ copies of the GNU GPL and this license document.
+
+ d) Do one of the following:
+
+ 0) Convey the Minimal Corresponding Source under the terms of this
+ License, and the Corresponding Application Code in a form
+ suitable for, and under terms that permit, the user to
+ recombine or relink the Application with a modified version of
+ the Linked Version to produce a modified Combined Work, in the
+ manner specified by section 6 of the GNU GPL for conveying
+ Corresponding Source.
+
+ 1) Use a suitable shared library mechanism for linking with the
+ Library. A suitable mechanism is one that (a) uses at run time
+ a copy of the Library already present on the user's computer
+ system, and (b) will operate properly with a modified version
+ of the Library that is interface-compatible with the Linked
+ Version.
+
+ e) Provide Installation Information, but only if you would otherwise
+ be required to provide such information under section 6 of the
+ GNU GPL, and only to the extent that such information is
+ necessary to install and execute a modified version of the
+ Combined Work produced by recombining or relinking the
+ Application with a modified version of the Linked Version. (If
+ you use option 4d0, the Installation Information must accompany
+ the Minimal Corresponding Source and Corresponding Application
+ Code. If you use option 4d1, you must provide the Installation
+ Information in the manner specified by section 6 of the GNU GPL
+ for conveying Corresponding Source.)
+
+ 5. Combined Libraries.
+
+ You may place library facilities that are a work based on the
+Library side by side in a single library together with other library
+facilities that are not Applications and are not covered by this
+License, and convey such a combined library under terms of your
+choice, if you do both of the following:
+
+ a) Accompany the combined library with a copy of the same work based
+ on the Library, uncombined with any other library facilities,
+ conveyed under the terms of this License.
+
+ b) Give prominent notice with the combined library that part of it
+ is a work based on the Library, and explaining where to find the
+ accompanying uncombined form of the same work.
+
+ 6. Revised Versions of the GNU Lesser General Public License.
+
+ The Free Software Foundation may publish revised and/or new versions
+of the GNU Lesser General Public License from time to time. Such new
+versions will be similar in spirit to the present version, but may
+differ in detail to address new problems or concerns.
+
+ Each version is given a distinguishing version number. If the
+Library as you received it specifies that a certain numbered version
+of the GNU Lesser General Public License "or any later version"
+applies to it, you have the option of following the terms and
+conditions either of that published version or of any later version
+published by the Free Software Foundation. If the Library as you
+received it does not specify a version number of the GNU Lesser
+General Public License, you may choose any version of the GNU Lesser
+General Public License ever published by the Free Software Foundation.
+
+ If the Library as you received it specifies that a proxy can decide
+whether future versions of the GNU Lesser General Public License shall
+apply, that proxy's public statement of acceptance of any version is
+permanent authorization for you to choose that version for the
+Library.
diff --git a/src/bcf/README.md b/src/bcf/README.md
index 1ce991d97f..5a7b66c03e 100644
--- a/src/bcf/README.md
+++ b/src/bcf/README.md
@@ -7,13 +7,13 @@ is available via `bcfapi.py`.
- BCF-XML version 2.1: Fully supported
- BCF-API version 2.1: Not supported, will probably tackle this after BCF-API v3.0
- BCF-XML version 3.0: Almost fully supported, except for the documents module
- - BCF-API version 3.0: Not supported, but work underway to support it
+ - BCF-API version 3.0: Almost fully supported, except for two requests.
## bcfxml
The `bcfxml` module lets you interact with the BCF-XML standard.
-```
+```python
from bcf import bcfxml
@@ -60,3 +60,41 @@ topic = bcfxml.get_topic(guid)
topic.title = "New title"
bcfxml.edit_topic(topic)
```
+
+## bcfapi
+
+The `bcfapi` module lets you interact with the BCF-API standard.
+
+```python
+from bcf.v3.bcfapi import FoundationClient, BcfClient
+
+foundation_client = FoundationClient("YOUR_CLIENT_ID", "YOUR_CLIENT_SECRET", "OPENCDE_BASEURL")
+auth_methods = foundation_client.get_auth_methods()
+
+# Our library currently only implements the authorization_code flow
+if "authorization_code" in auth_methods:
+ auth_client.login()
+
+bcf_client = BcfClient()
+
+versions = foundation_client.get_versions()
+for version in versions:
+if "3.0" in versions:
+ if version["api_id"] == "bcf" and version["version_id"] == "3.0":
+ bcf_client.set_version(version)
+
+data = bcf_client.get_projects()
+print(data)
+project_id = data[0]["project_id"]
+print(project_id)
+data = bcf_client.get_project(project_id)
+print(data)
+data = bcf_client.get_extensions(project_id)
+print(data)
+```
+
+## Todo List
+The remaining work that needs to be completed in `bcfxml.py` and `bcfapi.py`.
+ * For `bcfxml.py` two xsds support is remaining namely 'documents.xsd` and `extensions.xsd`.
+ * For `bcfapi.py` two requests that are `get_topics` and `get_comments` are remaining.
+
diff --git a/src/bcf/bcf/v3/bcfapi.py b/src/bcf/bcf/v3/bcfapi.py
index e69de29bb2..b2571573f8 100644
--- a/src/bcf/bcf/v3/bcfapi.py
+++ b/src/bcf/bcf/v3/bcfapi.py
@@ -0,0 +1,536 @@
+import uuid
+import time
+import json
+import urllib
+import requests
+import webbrowser
+import http.server
+import base64
+
+
+client_id, client_secret = "", ""
+
+
+class OAuthReceiver(http.server.BaseHTTPRequestHandler):
+ def do_GET(self):
+ query = urllib.parse.parse_qs(urllib.parse.urlparse(self.path).query)
+ self.server.auth_code = query.get("code", [""])[0]
+ self.server.auth_state = query.get("state", [""])[0]
+ self.send_response(200)
+ self.send_header("Content-type", "text/plain")
+ self.end_headers()
+ self.wfile.write("You have now authenticated :) You may now close this browser window.".encode("utf-8"))
+
+
+class FoundationClient:
+ def __init__(self, client_id, client_secret, base_url=None, redirect_subdir=None):
+ self.baseurl = base_url
+ self.access_token = ""
+ self.refresh_token = ""
+ self.access_token_expires_on = time.time()
+ self.refresh_token_expires_on = float("inf")
+ self.auth_endpoint = None
+ self.token_endpoint = None
+ self.client_id = client_id
+ self.client_secret = client_secret
+ self.auth_method = None
+ self.redirect_subdir = redirect_subdir
+
+ def get_access_token(self):
+ if self.access_token and self.access_token_expires_on > time.time():
+ return self.access_token
+ elif self.refresh_token and self.refresh_token_expires_on > time.time():
+ self.get_refresh_token()
+ else:
+ self.login()
+ return self.access_token
+
+ def get_auth_methods(self):
+ resp = requests.get(f"{self.baseurl}foundation/1.0/auth")
+ return resp.json()["supported_oauth2_flows"]
+
+ def get_versions(self):
+ resp = requests.get(f"{self.baseurl}foundation/versions")
+ return resp.json()["versions"]
+
+ def login(self):
+ resp = requests.get(f"{self.baseurl}foundation/1.0/auth")
+ values = resp.json()
+ self.auth_endpoint = values["oauth2_auth_url"]
+ self.token_endpoint = values["oauth2_token_url"]
+
+ with http.server.HTTPServer(("", 8080), OAuthReceiver) as server:
+ state = str(uuid.uuid4())
+ query = urllib.parse.urlencode(
+ {
+ "client_id": self.client_id,
+ "response_type": "code",
+ "state": state,
+ "redirect_uri": f"http://localhost:{server.server_address[1]}/{self.redirect_subdir}",
+ }
+ )
+ if "?" in self.auth_endpoint:
+ webbrowser.open(f"{self.auth_endpoint}&{query}")
+ else:
+ webbrowser.open(f"{self.auth_endpoint}?{query}")
+ server.timeout = 100
+ server.state = state
+ server.handle_request()
+ if server.auth_code and server.auth_state == state:
+ data = {
+ "grant_type": "authorization_code",
+ "code": server.auth_code,
+ "redirect_uri": f"http://localhost:{server.server_address[1]}/{self.redirect_subdir}",
+ }
+ auth_string = f"{self.client_id}:{self.client_secret}"
+ header_string = base64.b64encode(auth_string.encode("utf-8")).decode("utf-8")
+ headers = {"Authorization": f"Basic {header_string}"}
+ self.set_tokens_from_response(requests.post(self.token_endpoint, data=data, headers=headers))
+
+ def get_refresh_token(self):
+ self.set_tokens_from_response(
+ requests.post(
+ self.token_endpoint,
+ params={
+ "grant_type": "refresh_token",
+ "refresh_token": self.refresh_token,
+ },
+ ).json()
+ )
+
+ def get_new_access_token(self):
+ auth_string = f"{self.client_id}:{self.client_secret}"
+ header_string = base64.b64encode(auth_string.encode("utf-8")).decode("utf-8")
+ headers = {"Authorization": f"Basic {header_string}"}
+ self.set_tokens_from_response(
+ requests.post(
+ self.token_endpoint,
+ data={
+ "grant_type": "refresh_token",
+ "refresh_token": self.refresh_token,
+ },
+ headers=headers,
+ ).json()
+ )
+
+ def set_auth_method(self, method="authorization_code_grant"):
+ if method != "authorization_code_grant":
+ raise NotImplementedError(f"{method} not supported")
+ else:
+ self.auth_method = method
+
+ def set_tokens_from_response(self, response):
+ response = response.json()
+ self.access_token = response["access_token"]
+ self.refresh_token = response["refresh_token"]
+ self.access_token_expires_on = time.time() + response["expires_in"]
+ if "refresh_token_expires_in" in response:
+ self.refresh_token_expires_on = time.time() + response["refresh_token_expires_in"]
+
+
+class BcfClient:
+ def __init__(self, foundation_client):
+ self.foundation_client = foundation_client
+ self.version_id = None
+ self.baseurl = None
+
+ def set_version(self, version):
+ self.version_id = version["version_id"]
+ self.baseurl = version["api_base_url"]
+
+ def get(self, endpoint, params=None, is_auth_required=False):
+ headers = {"Authorization": "Bearer " + self.foundation_client.get_access_token()}
+ return requests.get(f"{self.baseurl}{endpoint}", headers=headers, params=params or None).json()
+
+ def post(self, endpoint, data=None, params=None):
+ headers = {
+ "Authorization": "Bearer " + self.foundation_client.get_access_token(),
+ "Content-type": "application/json",
+ }
+ resp = requests.post(
+ f"{self.baseurl}{endpoint}",
+ headers=headers,
+ params=params or None,
+ data=data or None,
+ )
+ return resp.status_code, resp.text
+
+ def put(self, endpoint, data=None, params=None):
+ headers = {
+ "Authorization": "Bearer " + self.foundation_client.get_access_token(),
+ "Content-type": "application/json",
+ }
+ resp = requests.put(
+ f"{self.baseurl}{endpoint}",
+ headers=headers,
+ params=params or None,
+ data=data or None,
+ )
+ return resp.status_code, resp.text
+
+ def delete(self, endpoint, params=None):
+ headers = {"Authorization": "Bearer " + self.foundation_client.get_access_token()}
+ resp = requests.put(
+ f"{self.baseurl}{endpoint}",
+ headers=headers,
+ params=params or None,
+ )
+ return resp.status_code
+
+ def get_projects(self) -> list:
+ return self.get(
+ f"/projects",
+ )
+
+ def get_project(
+ self,
+ project_id="",
+ ) -> dict:
+ return self.get(
+ f"/projects/{project_id}",
+ {
+ "project_id": project_id,
+ },
+ )
+
+ def update_project(self, project_id="", data=None) -> dict:
+ url = f"{self.baseurl}/projects/{project_id}"
+ headers = {"Authorization": "Bearer " + self.foundation_client.get_access_token()}
+ resp = requests.put(url, headers=headers, data=data)
+ return resp.status_code, resp.text
+
+ def get_extensions(
+ self,
+ project_id="",
+ ) -> dict:
+ return self.get(
+ f"/projects/{project_id}/extensions",
+ {
+ "project_id": project_id,
+ },
+ )
+
+ def get_topics(
+ self,
+ project_id="",
+ topics="",
+ query_string=None,
+ ) -> list:
+ # return self.get(
+ # f"/projects/{project_id}/topics",
+ # {
+ # "project_id": project_id,
+ # "topics": topics,
+ # "query_string": query_string,
+ # },
+ # )
+ pass
+
+ def get_topic(self, project_id="", topic_id="") -> dict:
+ return self.get(
+ f"/projects/{project_id}/topics/{topic_id}",
+ {
+ "project_id": project_id,
+ "topic_id": topic_id,
+ },
+ )
+
+ def create_topic(self, project_id="", data=None):
+ return self.post(f"/projects/{project_id}/topics", data=data)
+
+ def update_topic(self, project_id="", topic_id="", data=None) -> dict:
+ return self.put(f"/projects/{project_id}/topics/{topic_id}", data=data)
+
+ def delete_topic(self, project_id="", topic_id=""):
+ return self.delete(f"/projects/{project_id}/topics/{topic_id}")
+
+ def get_snippet(self, project_id="", topic_id="") -> str:
+ return self.get(
+ f"/projects/{project_id}/topics/{topic_id}/snippet",
+ {
+ "project_id": project_id,
+ "topic_id": topic_id,
+ },
+ )
+
+ def update_snippet(self, project_id="", topic_id="", data=None):
+ return self.put(f"/projects/{project_id}/topics", data=data)
+
+ def get_files_information(self, project_id="") -> list:
+ return self.get(
+ f"/projects/{project_id}/files_information",
+ {
+ "project_id": project_id,
+ },
+ )
+
+ def get_files(self, project_id="", topic_id="") -> list:
+ return self.get(
+ f"/projects/{project_id}/topics/{topic_id}/files",
+ {
+ "project_id": project_id,
+ "topic_id": topic_id,
+ },
+ )
+
+ def update_files(
+ self,
+ project_id="",
+ topic_id="",
+ data=None,
+ params=None,
+ ):
+ return self.put(
+ f"/projects/{project_id}/topics/{topic_id}/files",
+ data=data,
+ )
+
+ def get_comments(self, project_id="", topic_id="") -> list:
+ pass
+
+ def create_comments(
+ self,
+ project_id="",
+ topic_id="",
+ data=None,
+ params=None,
+ ):
+ return self.post(
+ f"/projects/{project_id}/topics/{topic_id}/comments",
+ data=data,
+ )
+
+ def get_comment(self, project_id="", topic_id="", comment_id="") -> dict:
+ return self.get(
+ f"/projects/{project_id}/topics/{topic_id}/comments/{comment_id}",
+ {
+ "project_id": project_id,
+ "topic_id": topic_id,
+ "comment_id": comment_id,
+ },
+ )
+
+ def delete_comment(self, project_id="", topic_id="", comment_id=""):
+ return self.delete(f"/projects/{project_id}/topics/{topic_id}/comments/{comment_id}")
+
+ def update_comment(
+ self,
+ project_id="",
+ topic_id="",
+ comment_id="",
+ data=None,
+ ):
+ return self.put(
+ f"/projects/{project_id}/topics/{topic_id}/comments/{comment_id}",
+ data=data,
+ )
+
+ def get_viewpoints(self, project_id="", topic_id="") -> list:
+ return self.get(
+ f"/projects/{project_id}/topics/{topic_id}/viewpoints",
+ {
+ "project_id": project_id,
+ "topic_id": topic_id,
+ },
+ )
+
+ def create_viewpoints(self, project_id="", topic_id="", data=None):
+ return self.post(
+ f"/projects/{project_id}/topics/{topic_id}/viewpoints",
+ data=data,
+ )
+
+ def get_viewpoint(self, project_id="", topic_id="", viewpoint_id="") -> dict:
+ return self.get(
+ f"/projects/{project_id}/topics/{topic_id}/viewpoints/{viewpoint_id}",
+ {
+ "project_id": project_id,
+ "topic_id": topic_id,
+ "viewpoint_id": viewpoint_id,
+ },
+ )
+
+ def delete_viewpoint(
+ self,
+ project_id="",
+ topic_id="",
+ viewpoint_id="",
+ ):
+ return self.delete(
+ f"/projects/{project_id}/topics/{topic_id}/viewpoints/{viewpoint_id}",
+ )
+
+ def get_snapshot(self, project_id="", topic_id="", viewpoint_id="") -> str:
+ return self.get(
+ f"/projects/{project_id}/topics/{topic_id}/viewpoints/{viewpoint_id}/snapshot",
+ {
+ "project_id": project_id,
+ "topic_id": topic_id,
+ "viewpoint_id": viewpoint_id,
+ },
+ )
+
+ def get_bitmap(self, project_id="", topic_id="", viewpoint_id="", bitmap_id="") -> str:
+ return self.get(
+ f"/projects/{project_id}/topics/{topic_id}/viewpoints/{viewpoint_id}/bitmaps/{bitmap_id}",
+ {
+ "project_id": project_id,
+ "topic_id": topic_id,
+ "viewpoint_id": viewpoint_id,
+ "bitmap_id": bitmap_id,
+ },
+ )
+
+ def get_selection(self, project_id="", topic_id="", viewpoint_id="") -> dict:
+ return self.get(
+ f"/projects/{project_id}/topics/{topic_id}/viewpoints/{viewpoint_id}/selection",
+ {
+ "project_id": project_id,
+ "topic_id": topic_id,
+ "viewpoint_id": viewpoint_id,
+ },
+ )
+
+ def get_coloring(self, project_id="", topic_id="", viewpoint_id="") -> dict:
+ return self.get(
+ f"/projects/{project_id}/topics/{topic_id}/viewpoints/{viewpoint_id}/coloring",
+ {
+ "project_id": project_id,
+ "topic_id": topic_id,
+ "viewpoint_id": viewpoint_id,
+ },
+ )
+
+ def get_visibility(self, project_id="", topic_id="", viewpoint_id="") -> dict:
+ return self.get(
+ f"/projects/{project_id}/topics/{topic_id}/viewpoints/{viewpoint_id}/visibility",
+ {
+ "project_id": project_id,
+ "topic_id": topic_id,
+ "viewpoint_id": viewpoint_id,
+ },
+ )
+
+ def get_related_topics(self, project_id="", topic_id="") -> list:
+ return self.get(
+ f"/projects/{project_id}/topics/{topic_id}/related_topics",
+ {
+ "project_id": project_id,
+ "topic_id": topic_id,
+ },
+ )
+
+ def update_related_topics(
+ self,
+ project_id="",
+ topic_id="",
+ data=None,
+ ):
+ return self.put(
+ f"/projects/{project_id}/topics/{topic_id}/related_topics",
+ data=data,
+ )
+
+ def get_document_references(self, project_id="", topic_id="") -> list:
+ return self.get(
+ f"/projects/{project_id}/topics/{topic_id}/document_references",
+ {
+ "project_id": project_id,
+ "topic_id": topic_id,
+ },
+ )
+
+ def create_document_reference(
+ self,
+ project_id="",
+ topic_id="",
+ data=None,
+ ):
+ return self.post(
+ f"/projects/{project_id}/topics/{topic_id}/document_references",
+ data=data,
+ )
+
+ def update_document_references(
+ self,
+ project_id="",
+ topic_id="",
+ document_reference_id="",
+ data=None,
+ ):
+ return self.put(
+ f"/projects/{project_id}/topics/{topic_id}/document_references/{document_reference_id}",
+ data=data,
+ )
+
+ def get_documents(self, project_id="", topic_id="") -> list:
+ return self.get(
+ f"/projects/{project_id}/topics/{topic_id}/documents",
+ {
+ "project_id": project_id,
+ "topic_id": topic_id,
+ },
+ )
+
+ def create_document(
+ self,
+ project_id="",
+ topic_id="",
+ guid=None,
+ data=None,
+ ):
+ headers = {
+ "Authorization": "Bearer " + self.foundation_client.get_access_token(),
+ "Content-type": "application/octet-stream",
+ }
+ response = requests.post(
+ f"/projects/{project_id}/topics/{topic_id}/documents",
+ data=data,
+ params={guid},
+ headers=headers,
+ )
+
+ def get_document(self, project_id="", topic_id="", document_id="") -> str:
+ return self.get(
+ f"/projects/{project_id}/topics/{topic_id}/documents/{document_id}",
+ {
+ "project_id": project_id,
+ "topic_id": topic_id,
+ "document_id": document_id,
+ },
+ )
+
+ def get_topics_events(self, project_id="") -> list:
+ return self.get(
+ f"/projects/{project_id}/topics/events",
+ {
+ "project_id": project_id,
+ },
+ )
+
+ def get_topic_events(self, project_id="", topic_id="") -> list:
+ return self.get(
+ f"/projects/{project_id}/topics/{topic_id}/events",
+ {
+ "project_id": project_id,
+ "topic_id": topic_id,
+ },
+ )
+
+ def get_comments_events(self, project_id="") -> list:
+ return self.get(
+ f"/projects/{project_id}/topics/comments/events",
+ {
+ "project_id": project_id,
+ },
+ )
+
+ def get_comment_events(self, project_id="", topic_id="", comment_id="") -> list:
+ return self.get(
+ f"/projects/{project_id}/topics/{topic_id}/comments/{comment_id}/events",
+ {
+ "project_id": project_id,
+ "topic_id": topic_id,
+ "comment_id": comment_id,
+ },
+ )
diff --git a/src/bcfserver/README.md b/src/bcfserver/README.md
new file mode 100644
index 0000000000..b34b68c9a3
--- /dev/null
+++ b/src/bcfserver/README.md
@@ -0,0 +1,30 @@
+# Server-Test
+
+1. Cd to the server directory i.e cd `IfcOpenShell\src\bcfserver`
+
+2. Set up the server by installing the dependencies
+
+3. Run `pip install -r requirements.txt` to install the dependencies
+
+4. In Python Shell, do the following
+
+ - from run import db
+ - db.create_all() to setup the database table
+
+5. Run `set FLASK_APP=run.py`
+6. Run `flask run` to start the server
+7. Go to [http://localhost:5000](http://localhost:5000) to see the server
+
+# Register the user
+
+1. Go to http://localhost:5000/register to register the user
+2. Create the client
+3. For grant type enter authorization_code
+4. For response_type enter code secret
+5. Enter the scope and create the client
+
+### You will be redirected to the page with the details of your client id and secret
+
+# Foundation API
+
+- Set the Base URL will be `http://127.0.0.1:5000/`
diff --git a/src/bcfserver/bcf/routes.py b/src/bcfserver/bcf/routes.py
new file mode 100644
index 0000000000..9e3230d8af
--- /dev/null
+++ b/src/bcfserver/bcf/routes.py
@@ -0,0 +1,51 @@
+from flask import jsonify, url_for, redirect, render_template, request, session, flash
+from flask_login import login_user, logout_user, login_required, current_user
+from flask.blueprints import Blueprint
+from website.models import User, OAuth2AuthorizationCode, OAuth2Token, OAuth2Client
+from run import app, db
+import json
+
+bcf = Blueprint("bcf", __name__, template_folder="templates", url_prefix="/bcf/3.0")
+
+
+@bcf.route("/projects")
+def projects():
+ Headers = str.split(request.headers["Authorization"])
+ token = Headers[1]
+ access_token = OAuth2Token.query.filter_by(access_token=token).first()
+ print(access_token)
+ if access_token:
+ Body = {
+ "project_id": "F445F4F2-4D02-4B2A-B612-5E456BEF9137",
+ "name": "Example project 1",
+ "authorization": {"project_actions": ["createTopic", "createDocument"]},
+ }, {
+ "project_id": "A233FBB2-3A3B-EFF4-C123-DE22ABC8414",
+ "name": "Example project 2",
+ "authorization": {"project_actions": []},
+ }
+ response = app.response_class(
+ response=json.dumps(Body),
+ status=200,
+ mimetype="application/json",
+ )
+ return response
+ else:
+ message = {"error": "User not recognized"}
+ response = app.response_class(
+ response=jsonify(message),
+ status=200,
+ mimetype="application/json",
+ )
+ return response
+
+
+@bcf.route("/")
+@login_required
+def bcf_3():
+ return "
+
+{% endblock %}
diff --git a/src/blenderbim/COPYING b/src/blenderbim/COPYING
new file mode 100644
index 0000000000..810fce6e9b
--- /dev/null
+++ b/src/blenderbim/COPYING
@@ -0,0 +1,621 @@
+ GNU GENERAL PUBLIC LICENSE
+ Version 3, 29 June 2007
+
+ Copyright (C) 2007 Free Software Foundation, Inc.
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+ Preamble
+
+ The GNU General Public License is a free, copyleft license for
+software and other kinds of works.
+
+ The licenses for most software and other practical works are designed
+to take away your freedom to share and change the works. By contrast,
+the GNU General Public License is intended to guarantee your freedom to
+share and change all versions of a program--to make sure it remains free
+software for all its users. We, the Free Software Foundation, use the
+GNU General Public License for most of our software; it applies also to
+any other work released this way by its authors. You can apply it to
+your programs, too.
+
+ When we speak of free software, we are referring to freedom, not
+price. Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+them if you wish), that you receive source code or can get it if you
+want it, that you can change the software or use pieces of it in new
+free programs, and that you know you can do these things.
+
+ To protect your rights, we need to prevent others from denying you
+these rights or asking you to surrender the rights. Therefore, you have
+certain responsibilities if you distribute copies of the software, or if
+you modify it: responsibilities to respect the freedom of others.
+
+ For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must pass on to the recipients the same
+freedoms that you received. You must make sure that they, too, receive
+or can get the source code. And you must show them these terms so they
+know their rights.
+
+ Developers that use the GNU GPL protect your rights with two steps:
+(1) assert copyright on the software, and (2) offer you this License
+giving you legal permission to copy, distribute and/or modify it.
+
+ For the developers' and authors' protection, the GPL clearly explains
+that there is no warranty for this free software. For both users' and
+authors' sake, the GPL requires that modified versions be marked as
+changed, so that their problems will not be attributed erroneously to
+authors of previous versions.
+
+ Some devices are designed to deny users access to install or run
+modified versions of the software inside them, although the manufacturer
+can do so. This is fundamentally incompatible with the aim of
+protecting users' freedom to change the software. The systematic
+pattern of such abuse occurs in the area of products for individuals to
+use, which is precisely where it is most unacceptable. Therefore, we
+have designed this version of the GPL to prohibit the practice for those
+products. If such problems arise substantially in other domains, we
+stand ready to extend this provision to those domains in future versions
+of the GPL, as needed to protect the freedom of users.
+
+ Finally, every program is threatened constantly by software patents.
+States should not allow patents to restrict development and use of
+software on general-purpose computers, but in those that do, we wish to
+avoid the special danger that patents applied to a free program could
+make it effectively proprietary. To prevent this, the GPL assures that
+patents cannot be used to render the program non-free.
+
+ The precise terms and conditions for copying, distribution and
+modification follow.
+
+ TERMS AND CONDITIONS
+
+ 0. Definitions.
+
+ "This License" refers to version 3 of the GNU General Public License.
+
+ "Copyright" also means copyright-like laws that apply to other kinds of
+works, such as semiconductor masks.
+
+ "The Program" refers to any copyrightable work licensed under this
+License. Each licensee is addressed as "you". "Licensees" and
+"recipients" may be individuals or organizations.
+
+ To "modify" a work means to copy from or adapt all or part of the work
+in a fashion requiring copyright permission, other than the making of an
+exact copy. The resulting work is called a "modified version" of the
+earlier work or a work "based on" the earlier work.
+
+ A "covered work" means either the unmodified Program or a work based
+on the Program.
+
+ To "propagate" a work means to do anything with it that, without
+permission, would make you directly or secondarily liable for
+infringement under applicable copyright law, except executing it on a
+computer or modifying a private copy. Propagation includes copying,
+distribution (with or without modification), making available to the
+public, and in some countries other activities as well.
+
+ To "convey" a work means any kind of propagation that enables other
+parties to make or receive copies. Mere interaction with a user through
+a computer network, with no transfer of a copy, is not conveying.
+
+ An interactive user interface displays "Appropriate Legal Notices"
+to the extent that it includes a convenient and prominently visible
+feature that (1) displays an appropriate copyright notice, and (2)
+tells the user that there is no warranty for the work (except to the
+extent that warranties are provided), that licensees may convey the
+work under this License, and how to view a copy of this License. If
+the interface presents a list of user commands or options, such as a
+menu, a prominent item in the list meets this criterion.
+
+ 1. Source Code.
+
+ The "source code" for a work means the preferred form of the work
+for making modifications to it. "Object code" means any non-source
+form of a work.
+
+ A "Standard Interface" means an interface that either is an official
+standard defined by a recognized standards body, or, in the case of
+interfaces specified for a particular programming language, one that
+is widely used among developers working in that language.
+
+ The "System Libraries" of an executable work include anything, other
+than the work as a whole, that (a) is included in the normal form of
+packaging a Major Component, but which is not part of that Major
+Component, and (b) serves only to enable use of the work with that
+Major Component, or to implement a Standard Interface for which an
+implementation is available to the public in source code form. A
+"Major Component", in this context, means a major essential component
+(kernel, window system, and so on) of the specific operating system
+(if any) on which the executable work runs, or a compiler used to
+produce the work, or an object code interpreter used to run it.
+
+ The "Corresponding Source" for a work in object code form means all
+the source code needed to generate, install, and (for an executable
+work) run the object code and to modify the work, including scripts to
+control those activities. However, it does not include the work's
+System Libraries, or general-purpose tools or generally available free
+programs which are used unmodified in performing those activities but
+which are not part of the work. For example, Corresponding Source
+includes interface definition files associated with source files for
+the work, and the source code for shared libraries and dynamically
+linked subprograms that the work is specifically designed to require,
+such as by intimate data communication or control flow between those
+subprograms and other parts of the work.
+
+ The Corresponding Source need not include anything that users
+can regenerate automatically from other parts of the Corresponding
+Source.
+
+ The Corresponding Source for a work in source code form is that
+same work.
+
+ 2. Basic Permissions.
+
+ All rights granted under this License are granted for the term of
+copyright on the Program, and are irrevocable provided the stated
+conditions are met. This License explicitly affirms your unlimited
+permission to run the unmodified Program. The output from running a
+covered work is covered by this License only if the output, given its
+content, constitutes a covered work. This License acknowledges your
+rights of fair use or other equivalent, as provided by copyright law.
+
+ You may make, run and propagate covered works that you do not
+convey, without conditions so long as your license otherwise remains
+in force. You may convey covered works to others for the sole purpose
+of having them make modifications exclusively for you, or provide you
+with facilities for running those works, provided that you comply with
+the terms of this License in conveying all material for which you do
+not control copyright. Those thus making or running the covered works
+for you must do so exclusively on your behalf, under your direction
+and control, on terms that prohibit them from making any copies of
+your copyrighted material outside their relationship with you.
+
+ Conveying under any other circumstances is permitted solely under
+the conditions stated below. Sublicensing is not allowed; section 10
+makes it unnecessary.
+
+ 3. Protecting Users' Legal Rights From Anti-Circumvention Law.
+
+ No covered work shall be deemed part of an effective technological
+measure under any applicable law fulfilling obligations under article
+11 of the WIPO copyright treaty adopted on 20 December 1996, or
+similar laws prohibiting or restricting circumvention of such
+measures.
+
+ When you convey a covered work, you waive any legal power to forbid
+circumvention of technological measures to the extent such circumvention
+is effected by exercising rights under this License with respect to
+the covered work, and you disclaim any intention to limit operation or
+modification of the work as a means of enforcing, against the work's
+users, your or third parties' legal rights to forbid circumvention of
+technological measures.
+
+ 4. Conveying Verbatim Copies.
+
+ You may convey verbatim copies of the Program's source code as you
+receive it, in any medium, provided that you conspicuously and
+appropriately publish on each copy an appropriate copyright notice;
+keep intact all notices stating that this License and any
+non-permissive terms added in accord with section 7 apply to the code;
+keep intact all notices of the absence of any warranty; and give all
+recipients a copy of this License along with the Program.
+
+ You may charge any price or no price for each copy that you convey,
+and you may offer support or warranty protection for a fee.
+
+ 5. Conveying Modified Source Versions.
+
+ You may convey a work based on the Program, or the modifications to
+produce it from the Program, in the form of source code under the
+terms of section 4, provided that you also meet all of these conditions:
+
+ a) The work must carry prominent notices stating that you modified
+ it, and giving a relevant date.
+
+ b) The work must carry prominent notices stating that it is
+ released under this License and any conditions added under section
+ 7. This requirement modifies the requirement in section 4 to
+ "keep intact all notices".
+
+ c) You must license the entire work, as a whole, under this
+ License to anyone who comes into possession of a copy. This
+ License will therefore apply, along with any applicable section 7
+ additional terms, to the whole of the work, and all its parts,
+ regardless of how they are packaged. This License gives no
+ permission to license the work in any other way, but it does not
+ invalidate such permission if you have separately received it.
+
+ d) If the work has interactive user interfaces, each must display
+ Appropriate Legal Notices; however, if the Program has interactive
+ interfaces that do not display Appropriate Legal Notices, your
+ work need not make them do so.
+
+ A compilation of a covered work with other separate and independent
+works, which are not by their nature extensions of the covered work,
+and which are not combined with it such as to form a larger program,
+in or on a volume of a storage or distribution medium, is called an
+"aggregate" if the compilation and its resulting copyright are not
+used to limit the access or legal rights of the compilation's users
+beyond what the individual works permit. Inclusion of a covered work
+in an aggregate does not cause this License to apply to the other
+parts of the aggregate.
+
+ 6. Conveying Non-Source Forms.
+
+ You may convey a covered work in object code form under the terms
+of sections 4 and 5, provided that you also convey the
+machine-readable Corresponding Source under the terms of this License,
+in one of these ways:
+
+ a) Convey the object code in, or embodied in, a physical product
+ (including a physical distribution medium), accompanied by the
+ Corresponding Source fixed on a durable physical medium
+ customarily used for software interchange.
+
+ b) Convey the object code in, or embodied in, a physical product
+ (including a physical distribution medium), accompanied by a
+ written offer, valid for at least three years and valid for as
+ long as you offer spare parts or customer support for that product
+ model, to give anyone who possesses the object code either (1) a
+ copy of the Corresponding Source for all the software in the
+ product that is covered by this License, on a durable physical
+ medium customarily used for software interchange, for a price no
+ more than your reasonable cost of physically performing this
+ conveying of source, or (2) access to copy the
+ Corresponding Source from a network server at no charge.
+
+ c) Convey individual copies of the object code with a copy of the
+ written offer to provide the Corresponding Source. This
+ alternative is allowed only occasionally and noncommercially, and
+ only if you received the object code with such an offer, in accord
+ with subsection 6b.
+
+ d) Convey the object code by offering access from a designated
+ place (gratis or for a charge), and offer equivalent access to the
+ Corresponding Source in the same way through the same place at no
+ further charge. You need not require recipients to copy the
+ Corresponding Source along with the object code. If the place to
+ copy the object code is a network server, the Corresponding Source
+ may be on a different server (operated by you or a third party)
+ that supports equivalent copying facilities, provided you maintain
+ clear directions next to the object code saying where to find the
+ Corresponding Source. Regardless of what server hosts the
+ Corresponding Source, you remain obligated to ensure that it is
+ available for as long as needed to satisfy these requirements.
+
+ e) Convey the object code using peer-to-peer transmission, provided
+ you inform other peers where the object code and Corresponding
+ Source of the work are being offered to the general public at no
+ charge under subsection 6d.
+
+ A separable portion of the object code, whose source code is excluded
+from the Corresponding Source as a System Library, need not be
+included in conveying the object code work.
+
+ A "User Product" is either (1) a "consumer product", which means any
+tangible personal property which is normally used for personal, family,
+or household purposes, or (2) anything designed or sold for incorporation
+into a dwelling. In determining whether a product is a consumer product,
+doubtful cases shall be resolved in favor of coverage. For a particular
+product received by a particular user, "normally used" refers to a
+typical or common use of that class of product, regardless of the status
+of the particular user or of the way in which the particular user
+actually uses, or expects or is expected to use, the product. A product
+is a consumer product regardless of whether the product has substantial
+commercial, industrial or non-consumer uses, unless such uses represent
+the only significant mode of use of the product.
+
+ "Installation Information" for a User Product means any methods,
+procedures, authorization keys, or other information required to install
+and execute modified versions of a covered work in that User Product from
+a modified version of its Corresponding Source. The information must
+suffice to ensure that the continued functioning of the modified object
+code is in no case prevented or interfered with solely because
+modification has been made.
+
+ If you convey an object code work under this section in, or with, or
+specifically for use in, a User Product, and the conveying occurs as
+part of a transaction in which the right of possession and use of the
+User Product is transferred to the recipient in perpetuity or for a
+fixed term (regardless of how the transaction is characterized), the
+Corresponding Source conveyed under this section must be accompanied
+by the Installation Information. But this requirement does not apply
+if neither you nor any third party retains the ability to install
+modified object code on the User Product (for example, the work has
+been installed in ROM).
+
+ The requirement to provide Installation Information does not include a
+requirement to continue to provide support service, warranty, or updates
+for a work that has been modified or installed by the recipient, or for
+the User Product in which it has been modified or installed. Access to a
+network may be denied when the modification itself materially and
+adversely affects the operation of the network or violates the rules and
+protocols for communication across the network.
+
+ Corresponding Source conveyed, and Installation Information provided,
+in accord with this section must be in a format that is publicly
+documented (and with an implementation available to the public in
+source code form), and must require no special password or key for
+unpacking, reading or copying.
+
+ 7. Additional Terms.
+
+ "Additional permissions" are terms that supplement the terms of this
+License by making exceptions from one or more of its conditions.
+Additional permissions that are applicable to the entire Program shall
+be treated as though they were included in this License, to the extent
+that they are valid under applicable law. If additional permissions
+apply only to part of the Program, that part may be used separately
+under those permissions, but the entire Program remains governed by
+this License without regard to the additional permissions.
+
+ When you convey a copy of a covered work, you may at your option
+remove any additional permissions from that copy, or from any part of
+it. (Additional permissions may be written to require their own
+removal in certain cases when you modify the work.) You may place
+additional permissions on material, added by you to a covered work,
+for which you have or can give appropriate copyright permission.
+
+ Notwithstanding any other provision of this License, for material you
+add to a covered work, you may (if authorized by the copyright holders of
+that material) supplement the terms of this License with terms:
+
+ a) Disclaiming warranty or limiting liability differently from the
+ terms of sections 15 and 16 of this License; or
+
+ b) Requiring preservation of specified reasonable legal notices or
+ author attributions in that material or in the Appropriate Legal
+ Notices displayed by works containing it; or
+
+ c) Prohibiting misrepresentation of the origin of that material, or
+ requiring that modified versions of such material be marked in
+ reasonable ways as different from the original version; or
+
+ d) Limiting the use for publicity purposes of names of licensors or
+ authors of the material; or
+
+ e) Declining to grant rights under trademark law for use of some
+ trade names, trademarks, or service marks; or
+
+ f) Requiring indemnification of licensors and authors of that
+ material by anyone who conveys the material (or modified versions of
+ it) with contractual assumptions of liability to the recipient, for
+ any liability that these contractual assumptions directly impose on
+ those licensors and authors.
+
+ All other non-permissive additional terms are considered "further
+restrictions" within the meaning of section 10. If the Program as you
+received it, or any part of it, contains a notice stating that it is
+governed by this License along with a term that is a further
+restriction, you may remove that term. If a license document contains
+a further restriction but permits relicensing or conveying under this
+License, you may add to a covered work material governed by the terms
+of that license document, provided that the further restriction does
+not survive such relicensing or conveying.
+
+ If you add terms to a covered work in accord with this section, you
+must place, in the relevant source files, a statement of the
+additional terms that apply to those files, or a notice indicating
+where to find the applicable terms.
+
+ Additional terms, permissive or non-permissive, may be stated in the
+form of a separately written license, or stated as exceptions;
+the above requirements apply either way.
+
+ 8. Termination.
+
+ You may not propagate or modify a covered work except as expressly
+provided under this License. Any attempt otherwise to propagate or
+modify it is void, and will automatically terminate your rights under
+this License (including any patent licenses granted under the third
+paragraph of section 11).
+
+ However, if you cease all violation of this License, then your
+license from a particular copyright holder is reinstated (a)
+provisionally, unless and until the copyright holder explicitly and
+finally terminates your license, and (b) permanently, if the copyright
+holder fails to notify you of the violation by some reasonable means
+prior to 60 days after the cessation.
+
+ Moreover, your license from a particular copyright holder is
+reinstated permanently if the copyright holder notifies you of the
+violation by some reasonable means, this is the first time you have
+received notice of violation of this License (for any work) from that
+copyright holder, and you cure the violation prior to 30 days after
+your receipt of the notice.
+
+ Termination of your rights under this section does not terminate the
+licenses of parties who have received copies or rights from you under
+this License. If your rights have been terminated and not permanently
+reinstated, you do not qualify to receive new licenses for the same
+material under section 10.
+
+ 9. Acceptance Not Required for Having Copies.
+
+ You are not required to accept this License in order to receive or
+run a copy of the Program. Ancillary propagation of a covered work
+occurring solely as a consequence of using peer-to-peer transmission
+to receive a copy likewise does not require acceptance. However,
+nothing other than this License grants you permission to propagate or
+modify any covered work. These actions infringe copyright if you do
+not accept this License. Therefore, by modifying or propagating a
+covered work, you indicate your acceptance of this License to do so.
+
+ 10. Automatic Licensing of Downstream Recipients.
+
+ Each time you convey a covered work, the recipient automatically
+receives a license from the original licensors, to run, modify and
+propagate that work, subject to this License. You are not responsible
+for enforcing compliance by third parties with this License.
+
+ An "entity transaction" is a transaction transferring control of an
+organization, or substantially all assets of one, or subdividing an
+organization, or merging organizations. If propagation of a covered
+work results from an entity transaction, each party to that
+transaction who receives a copy of the work also receives whatever
+licenses to the work the party's predecessor in interest had or could
+give under the previous paragraph, plus a right to possession of the
+Corresponding Source of the work from the predecessor in interest, if
+the predecessor has it or can get it with reasonable efforts.
+
+ You may not impose any further restrictions on the exercise of the
+rights granted or affirmed under this License. For example, you may
+not impose a license fee, royalty, or other charge for exercise of
+rights granted under this License, and you may not initiate litigation
+(including a cross-claim or counterclaim in a lawsuit) alleging that
+any patent claim is infringed by making, using, selling, offering for
+sale, or importing the Program or any portion of it.
+
+ 11. Patents.
+
+ A "contributor" is a copyright holder who authorizes use under this
+License of the Program or a work on which the Program is based. The
+work thus licensed is called the contributor's "contributor version".
+
+ A contributor's "essential patent claims" are all patent claims
+owned or controlled by the contributor, whether already acquired or
+hereafter acquired, that would be infringed by some manner, permitted
+by this License, of making, using, or selling its contributor version,
+but do not include claims that would be infringed only as a
+consequence of further modification of the contributor version. For
+purposes of this definition, "control" includes the right to grant
+patent sublicenses in a manner consistent with the requirements of
+this License.
+
+ Each contributor grants you a non-exclusive, worldwide, royalty-free
+patent license under the contributor's essential patent claims, to
+make, use, sell, offer for sale, import and otherwise run, modify and
+propagate the contents of its contributor version.
+
+ In the following three paragraphs, a "patent license" is any express
+agreement or commitment, however denominated, not to enforce a patent
+(such as an express permission to practice a patent or covenant not to
+sue for patent infringement). To "grant" such a patent license to a
+party means to make such an agreement or commitment not to enforce a
+patent against the party.
+
+ If you convey a covered work, knowingly relying on a patent license,
+and the Corresponding Source of the work is not available for anyone
+to copy, free of charge and under the terms of this License, through a
+publicly available network server or other readily accessible means,
+then you must either (1) cause the Corresponding Source to be so
+available, or (2) arrange to deprive yourself of the benefit of the
+patent license for this particular work, or (3) arrange, in a manner
+consistent with the requirements of this License, to extend the patent
+license to downstream recipients. "Knowingly relying" means you have
+actual knowledge that, but for the patent license, your conveying the
+covered work in a country, or your recipient's use of the covered work
+in a country, would infringe one or more identifiable patents in that
+country that you have reason to believe are valid.
+
+ If, pursuant to or in connection with a single transaction or
+arrangement, you convey, or propagate by procuring conveyance of, a
+covered work, and grant a patent license to some of the parties
+receiving the covered work authorizing them to use, propagate, modify
+or convey a specific copy of the covered work, then the patent license
+you grant is automatically extended to all recipients of the covered
+work and works based on it.
+
+ A patent license is "discriminatory" if it does not include within
+the scope of its coverage, prohibits the exercise of, or is
+conditioned on the non-exercise of one or more of the rights that are
+specifically granted under this License. You may not convey a covered
+work if you are a party to an arrangement with a third party that is
+in the business of distributing software, under which you make payment
+to the third party based on the extent of your activity of conveying
+the work, and under which the third party grants, to any of the
+parties who would receive the covered work from you, a discriminatory
+patent license (a) in connection with copies of the covered work
+conveyed by you (or copies made from those copies), or (b) primarily
+for and in connection with specific products or compilations that
+contain the covered work, unless you entered into that arrangement,
+or that patent license was granted, prior to 28 March 2007.
+
+ Nothing in this License shall be construed as excluding or limiting
+any implied license or other defenses to infringement that may
+otherwise be available to you under applicable patent law.
+
+ 12. No Surrender of Others' Freedom.
+
+ If conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot convey a
+covered work so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you may
+not convey it at all. For example, if you agree to terms that obligate you
+to collect a royalty for further conveying from those to whom you convey
+the Program, the only way you could satisfy both those terms and this
+License would be to refrain entirely from conveying the Program.
+
+ 13. Use with the GNU Affero General Public License.
+
+ Notwithstanding any other provision of this License, you have
+permission to link or combine any covered work with a work licensed
+under version 3 of the GNU Affero General Public License into a single
+combined work, and to convey the resulting work. The terms of this
+License will continue to apply to the part which is the covered work,
+but the special requirements of the GNU Affero General Public License,
+section 13, concerning interaction through a network will apply to the
+combination as such.
+
+ 14. Revised Versions of this License.
+
+ The Free Software Foundation may publish revised and/or new versions of
+the GNU General Public License from time to time. Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+ Each version is given a distinguishing version number. If the
+Program specifies that a certain numbered version of the GNU General
+Public License "or any later version" applies to it, you have the
+option of following the terms and conditions either of that numbered
+version or of any later version published by the Free Software
+Foundation. If the Program does not specify a version number of the
+GNU General Public License, you may choose any version ever published
+by the Free Software Foundation.
+
+ If the Program specifies that a proxy can decide which future
+versions of the GNU General Public License can be used, that proxy's
+public statement of acceptance of a version permanently authorizes you
+to choose that version for the Program.
+
+ Later license versions may give you additional or different
+permissions. However, no additional obligations are imposed on any
+author or copyright holder as a result of your choosing to follow a
+later version.
+
+ 15. Disclaimer of Warranty.
+
+ THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
+APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
+HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
+OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
+THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
+IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
+ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+ 16. Limitation of Liability.
+
+ IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
+THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
+GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
+USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
+DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
+PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
+EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGES.
+
+ 17. Interpretation of Sections 15 and 16.
+
+ If the disclaimer of warranty and limitation of liability provided
+above cannot be given local legal effect according to their terms,
+reviewing courts shall apply local law that most closely approximates
+an absolute waiver of all civil liability in connection with the
+Program, unless a warranty or assumption of liability accompanies a
+copy of the Program in return for a fee.
+
+ END OF TERMS AND CONDITIONS
diff --git a/src/blenderbim/Makefile b/src/blenderbim/Makefile
index 70af090dda..78309ca686 100644
--- a/src/blenderbim/Makefile
+++ b/src/blenderbim/Makefile
@@ -1,6 +1,63 @@
VERSION:=`date '+%y%m%d'`
PYVERSION:=py37
+ifeq ($(PYVERSION), py37)
+PYLIBDIR:=python3.7
+PYNUMBER:=37
+endif
+ifeq ($(PYVERSION), py39)
+PYLIBDIR:=python3.9
+PYNUMBER:=39
+endif
+
+ifeq ($(PLATFORM), linux)
+ifeq ($(PYVERSION), py37)
+HPPFCL_URL:=https://anaconda.org/conda-forge/hpp-fcl/1.7.5/download/linux-64/hpp-fcl-1.7.5-py37h5f1835d_0.tar.bz2
+EIGENPY_URL:=https://anaconda.org/conda-forge/eigenpy/2.6.5/download/linux-64/eigenpy-2.6.5-py37h95e2c48_0.tar.bz2
+BOOST_URL:=https://anaconda.org/conda-forge/boost/1.74.0/download/linux-64/boost-1.74.0-py37h0379df6_3.tar.bz2
+endif
+ifeq ($(PYVERSION), py39)
+HPPFCL_URL:=https://anaconda.org/conda-forge/hpp-fcl/1.7.5/download/linux-64/hpp-fcl-1.7.5-py39hbcdfc36_0.tar.bz2
+EIGENPY_URL:=https://anaconda.org/conda-forge/eigenpy/2.6.5/download/linux-64/eigenpy-2.6.5-py39h5aed9d1_0.tar.bz2
+BOOST_URL:=https://anaconda.org/conda-forge/boost/1.74.0/download/linux-64/boost-1.74.0-py39h5472131_3.tar.bz2
+endif
+ASSIMP_URL:=https://anaconda.org/conda-forge/assimp/5.0.1/download/linux-64/assimp-5.0.1-hedfc422_6.tar.bz2
+OCTOMAP_URL:=https://anaconda.org/conda-forge/octomap/1.9.7/download/linux-64/octomap-1.9.7-h4bd325d_0.tar.bz2
+ZLIB_URL:=https://anaconda.org/conda-forge/zlib/1.2.11/download/linux-64/zlib-1.2.11-h516909a_1010.tar.bz2
+endif
+
+ifeq ($(PLATFORM), macos)
+ifeq ($(PYVERSION), py37)
+HPPFCL_URL:=https://anaconda.org/conda-forge/hpp-fcl/1.7.5/download/osx-64/hpp-fcl-1.7.5-py37h2d7f23a_0.tar.bz2
+EIGENPY_URL:=https://anaconda.org/conda-forge/eigenpy/2.6.5/download/osx-64/eigenpy-2.6.5-py37h0695097_0.tar.bz2
+BOOST_URL:=https://anaconda.org/conda-forge/boost/1.74.0/download/osx-64/boost-1.74.0-py37hd79e0ac_3.tar.bz2
+endif
+ifeq ($(PYVERSION), py39)
+HPPFCL_URL:=https://anaconda.org/conda-forge/hpp-fcl/1.7.5/download/osx-64/hpp-fcl-1.7.5-py39h1e32b98_0.tar.bz2
+EIGENPY_URL:=https://anaconda.org/conda-forge/eigenpy/2.6.5/download/osx-64/eigenpy-2.6.5-py39h5405915_0.tar.bz2
+BOOST_URL:=https://anaconda.org/conda-forge/boost/1.74.0/download/osx-64/boost-1.74.0-py39ha641261_3.tar.bz2
+endif
+ASSIMP_URL:=https://anaconda.org/conda-forge/assimp/5.0.1/download/osx-64/assimp-5.0.1-h1224e73_6.tar.bz2
+OCTOMAP_URL:=https://anaconda.org/conda-forge/octomap/1.9.7/download/osx-64/octomap-1.9.7-h940c156_0.tar.bz2
+ZLIB_URL:=https://anaconda.org/conda-forge/zlib/1.2.11/download/osx-64/zlib-1.2.11-h7795811_1010.tar.bz2
+endif
+
+ifeq ($(PLATFORM), win)
+ifeq ($(PYVERSION), py37)
+HPPFCL_URL:=https://anaconda.org/conda-forge/hpp-fcl/1.7.5/download/win-64/hpp-fcl-1.7.5-py37h839d6b1_0.tar.bz2
+EIGENPY_URL:=https://anaconda.org/conda-forge/eigenpy/2.6.5/download/win-64/eigenpy-2.6.5-py37h2c32e34_0.tar.bz2
+BOOST_URL:=https://anaconda.org/conda-forge/boost/1.74.0/download/win-64/boost-1.74.0-py37h3b38789_3.tar.bz2
+endif
+ifeq ($(PYVERSION), py39)
+HPPFCL_URL:=https://anaconda.org/conda-forge/hpp-fcl/1.7.5/download/win-64/hpp-fcl-1.7.5-py39h2e7c763_0.tar.bz2
+EIGENPY_URL:=https://anaconda.org/conda-forge/eigenpy/2.6.5/download/win-64/eigenpy-2.6.5-py39h3ce40e6_0.tar.bz2
+BOOST_URL:=https://anaconda.org/conda-forge/boost/1.74.0/download/win-64/boost-1.74.0-py39hefe7e4c_3.tar.bz2
+endif
+ASSIMP_URL:=https://anaconda.org/conda-forge/assimp/5.0.1/download/win-64/assimp-5.0.1-hc2aa0de_6.tar.bz2
+OCTOMAP_URL:=https://anaconda.org/conda-forge/octomap/1.9.7/download/win-64/octomap-1.9.7-h5362a0b_0.tar.bz2
+ZLIB_URL:=https://anaconda.org/conda-forge/zlib/1.2.11/download/win-64/zlib-1.2.11-h62dcd97_1010.tar.bz2
+endif
+
.PHONY: dist
dist:
ifndef PLATFORM
@@ -12,12 +69,7 @@ endif
cp -r blenderbim/* dist/blenderbim/
# Provides IfcOpenShell Python functionality
-ifeq ($(PYVERSION), py37)
- cd dist/working && wget https://s3.amazonaws.com/ifcopenshell-builds/ifcblender-python-37-v0.6.0-2fd2b49-$(PLATFORM)64.zip
-endif
-ifeq ($(PYVERSION), py39)
- cd dist/working && wget https://s3.amazonaws.com/ifcopenshell-builds/ifcblender-python-39-v0.6.0-2fd2b49-$(PLATFORM)64.zip
-endif
+ cd dist/working && wget https://s3.amazonaws.com/ifcopenshell-builds/ifcblender-python-$(PYNUMBER)-v0.6.0-0087fa8-$(PLATFORM)64.zip
cd dist/working && unzip ifcblender*
cp -r dist/working/io_import_scene_ifc/ifcopenshell dist/blenderbim/libs/site/packages/
@@ -44,10 +96,12 @@ endif
# IfcOpenBot sometimes lags behind, so we hotfix the Python utilities
cp -r dist/working/IfcOpenShell-0.6.0/src/ifcopenshell-python/ifcopenshell/util/* dist/blenderbim/libs/site/packages/ifcopenshell/util/
cp -r dist/working/IfcOpenShell-0.6.0/src/ifcopenshell-python/ifcopenshell/api/* dist/blenderbim/libs/site/packages/ifcopenshell/api/
+ cp dist/working/IfcOpenShell-0.6.0/src/ifcopenshell-python/ifcopenshell/entity_instance.py dist/blenderbim/libs/site/packages/ifcopenshell/
+ cp dist/working/IfcOpenShell-0.6.0/src/ifcopenshell-python/ifcopenshell/file.py dist/blenderbim/libs/site/packages/ifcopenshell/
# Provides bcf functionality
cp -r dist/working/IfcOpenShell-0.6.0/src/bcf/bcf dist/blenderbim/libs/site/packages/
# Provides IFCClash functionality
- cp -r dist/working/IfcOpenShell-0.6.0/src/ifcclash/* dist/blenderbim/libs/site/packages/
+ cp -r dist/working/IfcOpenShell-0.6.0/src/ifcclash/ifcclash dist/blenderbim/libs/site/packages/
# Provides BIMTester functionality
cd dist/working && python -m venv env
cd dist/working && . env/bin/activate && pip install pybabel
@@ -62,8 +116,10 @@ endif
cp -r dist/working/IfcOpenShell-0.6.0/src/ifccsv/* dist/blenderbim/libs/site/packages/
# Provides IFCPatch functionality
cp -r dist/working/IfcOpenShell-0.6.0/src/ifcpatch/ifcpatch dist/blenderbim/libs/site/packages/
- # Provides IFCP6 functionality
- cp -r dist/working/IfcOpenShell-0.6.0/src/ifcp6/ifcp6 dist/blenderbim/libs/site/packages/
+ # Provides IFC4D functionality
+ cp -r dist/working/IfcOpenShell-0.6.0/src/ifc4d/ifc4d dist/blenderbim/libs/site/packages/
+ # Provides IFC5D functionality
+ cp -r dist/working/IfcOpenShell-0.6.0/src/ifc5d/ifc5d dist/blenderbim/libs/site/packages/
rm -rf dist/working
# Provides Mustache templating in construction documentation
@@ -172,20 +228,97 @@ endif
rm -rf dist/working
# Required by IFCClash
-ifeq ($(PLATFORM), linux)
mkdir dist/working
- cd dist/working && wget https://files.pythonhosted.org/packages/0c/fa/00d85f893b02289e2942849d97f8818dde8e2111182e825fb3a735677791/python_fcl-0.0.12-cp37-cp37m-manylinux1_x86_64.whl
- cd dist/working && unzip python_fcl*
- cp -r dist/working/fcl dist/blenderbim/libs/site/packages/
- rm -rf dist/working
+ cd dist/working && wget $(HPPFCL_URL)
+ cd dist/working && tar -xf hpp-fcl*
+ifeq ($(PLATFORM), linux)
+ cp -r dist/working/lib/$(PYLIBDIR)/site-packages/hppfcl dist/blenderbim/libs/site/packages/
+ cp -r dist/working/lib/*.so* dist/blenderbim/libs/
+endif
+ifeq ($(PLATFORM), macos)
+ cp -r dist/working/lib/$(PYLIBDIR)/site-packages/hppfcl dist/blenderbim/libs/site/packages/
+ cp -r dist/working/lib/*.dylib dist/blenderbim/libs/
endif
ifeq ($(PLATFORM), win)
- mkdir dist/working
- cd dist/working && wget https://files.pythonhosted.org/packages/19/e6/6e9f33fb59e8f27c0e1592bd26e644bc92b85c942b072b2d3854105d5887/python_fcl_win32-0.0.12.post3-py3-none-win_amd64.whl
- cd dist/working && unzip python_fcl*
- cp -r dist/working/fcl dist/blenderbim/libs/site/packages/
- rm -rf dist/working
+ cp -r dist/working/Lib/site-packages/hppfcl dist/blenderbim/libs/site/packages/
+ cp -r dist/working/Library/bin/*.dll dist/blenderbim/libs/site/packages/hppfcl/
endif
+ rm -rf dist/working
+
+ # Required by hpp-fcl
+ mkdir dist/working
+ cd dist/working && wget $(ASSIMP_URL)
+ cd dist/working && tar -xf assimp*
+ifeq ($(PLATFORM), linux)
+ cp -r dist/working/lib/*.so* dist/blenderbim/libs/
+endif
+ifeq ($(PLATFORM), macos)
+ cp -r dist/working/lib/*.dylib dist/blenderbim/libs/
+endif
+ifeq ($(PLATFORM), win)
+ cp -r dist/working/Library/bin/*.dll dist/blenderbim/libs/site/packages/hppfcl/
+endif
+ rm -rf dist/working
+
+ # Required by hpp-fcl
+ mkdir dist/working
+ cd dist/working && wget $(EIGENPY_URL)
+ cd dist/working && tar -xf eigenpy*
+ifeq ($(PLATFORM), linux)
+ cp -r dist/working/lib/*.so* dist/blenderbim/libs/
+endif
+ifeq ($(PLATFORM), macos)
+ cp -r dist/working/lib/*.dylib dist/blenderbim/libs/
+endif
+ifeq ($(PLATFORM), win)
+ cp -r dist/working/Library/bin/*.dll dist/blenderbim/libs/site/packages/hppfcl/
+endif
+ rm -rf dist/working
+
+ # Required by hpp-fcl
+ mkdir dist/working
+ cd dist/working && wget $(OCTOMAP_URL)
+ cd dist/working && tar -xf octomap*
+ifeq ($(PLATFORM), linux)
+ cp -r dist/working/lib/*.so* dist/blenderbim/libs/
+endif
+ifeq ($(PLATFORM), macos)
+ cp -r dist/working/lib/*.dylib dist/blenderbim/libs/
+endif
+ifeq ($(PLATFORM), win)
+ # Uh, do nothing, apparently? No DLLs are shipped.
+endif
+ rm -rf dist/working
+
+ # Required by hpp-fcl
+ mkdir dist/working
+ cd dist/working && wget $(BOOST_URL)
+ cd dist/working && tar -xf boost*
+ifeq ($(PLATFORM), linux)
+ cp -r dist/working/lib/*.so* dist/blenderbim/libs/
+endif
+ifeq ($(PLATFORM), macos)
+ cp -r dist/working/lib/*.dylib dist/blenderbim/libs/
+endif
+ifeq ($(PLATFORM), win)
+ cp -r dist/working/Library/bin/*.dll dist/blenderbim/libs/site/packages/hppfcl/
+endif
+ rm -rf dist/working
+
+ # Required by hpp-fcl
+ mkdir dist/working
+ cd dist/working && wget $(ZLIB_URL)
+ cd dist/working && tar -xf zlib*
+ifeq ($(PLATFORM), linux)
+ cp -r dist/working/lib/*.so* dist/blenderbim/libs/
+endif
+ifeq ($(PLATFORM), macos)
+ cp -r dist/working/lib/*.dylib dist/blenderbim/libs/
+endif
+ifeq ($(PLATFORM), win)
+ cp -r dist/working/Library/bin/*.dll dist/blenderbim/libs/site/packages/hppfcl/
+endif
+ rm -rf dist/working
# Required by BIMTester
mkdir dist/working
@@ -270,7 +403,7 @@ endif
rm -rf dist/working
cd dist/blenderbim && sed -i "s/999999/$(VERSION)/" __init__.py
- cd dist && zip -r blender28-bim-$(VERSION)-$(PYVERSION)-$(PLATFORM).zip ./*
+ cd dist && zip -r blenderbim-$(VERSION)-$(PYVERSION)-$(PLATFORM).zip ./*
rm -rf dist/blenderbim
.PHONY: clean
diff --git a/src/blenderbim/blenderbim/bim/__init__.py b/src/blenderbim/blenderbim/bim/__init__.py
index 6f1531121c..92699dc4dd 100644
--- a/src/blenderbim/blenderbim/bim/__init__.py
+++ b/src/blenderbim/blenderbim/bim/__init__.py
@@ -29,8 +29,10 @@ if bpy is not None:
"cost": None,
"sequence": None,
"group": None,
+ "system": None,
"structural": None,
"boundary": None,
+ "profile": None,
"material": None,
"style": None,
"layer": None,
diff --git a/src/blenderbim/blenderbim/bim/export_ifc.py b/src/blenderbim/blenderbim/bim/export_ifc.py
index 5f9b35812c..7b849b6fc3 100644
--- a/src/blenderbim/blenderbim/bim/export_ifc.py
+++ b/src/blenderbim/blenderbim/bim/export_ifc.py
@@ -5,12 +5,11 @@ import numpy as np
import datetime
import zipfile
import tempfile
-import ifcopenshell
-import ifcopenshell.util.placement
-import ifcopenshell.api
-from ifcopenshell.api.spatial.data import Data as SpatialData
-from blenderbim.bim.ifc import IfcStore
import addon_utils
+import ifcopenshell
+import ifcopenshell.api
+import ifcopenshell.util.placement
+from blenderbim.bim.ifc import IfcStore
class IfcExporter:
@@ -68,6 +67,8 @@ class IfcExporter:
for ifc_definition_id, obj in IfcStore.id_map.items():
try:
+ if isinstance(obj, bpy.types.Material):
+ continue
self.sync_object_placement(obj)
self.sync_object_container(ifc_definition_id, obj)
except ReferenceError:
@@ -75,8 +76,6 @@ class IfcExporter:
if self.should_delete(obj):
to_delete.append(ifc_definition_id)
- SpatialData.purge()
-
for ifc_definition_id in to_delete:
product = self.file.by_id(ifc_definition_id)
IfcStore.unlink_element(product)
@@ -87,7 +86,10 @@ class IfcExporter:
if not obj:
continue
try:
- bpy.ops.bim.update_representation(obj=obj.name)
+ if isinstance(obj, bpy.types.Material):
+ bpy.ops.bim.update_style_colours(material=obj.name)
+ else:
+ bpy.ops.bim.update_representation(obj=obj.name)
except ReferenceError:
pass # The object is likely deleted
IfcStore.edited_objs.clear()
diff --git a/src/blenderbim/blenderbim/bim/handler.py b/src/blenderbim/blenderbim/bim/handler.py
index 6d7ec1f8f7..447f1f9eb4 100644
--- a/src/blenderbim/blenderbim/bim/handler.py
+++ b/src/blenderbim/blenderbim/bim/handler.py
@@ -4,8 +4,10 @@ import addon_utils
import ifcopenshell.api.owner.settings
from bpy.app.handlers import persistent
from blenderbim.bim.ifc import IfcStore
+from blenderbim.bim.module.owner.prop import getPersons, getOrganisations
from ifcopenshell.api.attribute.data import Data as AttributeData
from ifcopenshell.api.material.data import Data as MaterialData
+from ifcopenshell.api.style.data import Data as StyleData
from ifcopenshell.api.type.data import Data as TypeData
@@ -13,6 +15,8 @@ global_subscription_owner = object()
def mode_callback(obj, data):
+ if not bpy.context.scene.BIMProjectProperties.is_authoring:
+ return
objects = bpy.context.selected_objects
if bpy.context.active_object:
objects += [bpy.context.active_object]
@@ -22,9 +26,8 @@ def mode_callback(obj, data):
or not obj.data
or not isinstance(obj.data, (bpy.types.Mesh, bpy.types.Curve, bpy.types.TextCurve))
or not obj.BIMObjectProperties.ifc_definition_id
- or not bpy.context.scene.BIMProjectProperties.is_authoring
):
- return
+ continue
if obj.data.BIMMeshProperties.ifc_definition_id:
representation = IfcStore.get_file().by_id(obj.data.BIMMeshProperties.ifc_definition_id)
if representation.RepresentationType in ["Tessellation", "Brep", "Annotation2D"]:
@@ -34,6 +37,7 @@ def mode_callback(obj, data):
def name_callback(obj, data):
+ # TODO Do we still need this, now that we are monitoring the undo redo objects?
try:
obj.name
except:
@@ -49,6 +53,7 @@ def name_callback(obj, data):
MaterialData.load_materials()
if obj.BIMMaterialProperties.ifc_style_id:
IfcStore.get_file().by_id(obj.BIMMaterialProperties.ifc_style_id).Name = obj.name
+ StyleData.load(IfcStore.get_file(), obj.BIMMaterialProperties.ifc_style_id)
return
if not obj.BIMObjectProperties.ifc_definition_id or "/" not in obj.name:
@@ -75,6 +80,11 @@ def name_callback(obj, data):
AttributeData.load(IfcStore.get_file(), obj.BIMObjectProperties.ifc_definition_id)
+def color_callback(obj, data):
+ if obj.BIMMaterialProperties.ifc_style_id:
+ IfcStore.edited_objs.add(obj)
+
+
def active_object_callback():
obj = bpy.context.active_object
for obj in bpy.context.selected_objects:
@@ -122,12 +132,12 @@ def purge_module_data():
@persistent
def loadIfcStore(scene):
IfcStore.purge()
+ purge_module_data()
ifc_file = IfcStore.get_file()
if not ifc_file:
return
IfcStore.get_schema()
IfcStore.reload_linked_elements()
- purge_module_data()
@persistent
@@ -202,12 +212,12 @@ def setDefaultProperties(scene):
)
ifcopenshell.api.owner.settings.get_person = (
lambda ifc: ifc.by_id(int(bpy.context.scene.BIMOwnerProperties.user_person))
- if bpy.context.scene.BIMOwnerProperties.user_person
+ if getPersons(None, bpy.context) and bpy.context.scene.BIMOwnerProperties.user_person
else None
)
ifcopenshell.api.owner.settings.get_organisation = (
lambda ifc: ifc.by_id(int(bpy.context.scene.BIMOwnerProperties.user_organisation))
- if bpy.context.scene.BIMOwnerProperties.user_organisation
+ if getOrganisations(None, bpy.context) and bpy.context.scene.BIMOwnerProperties.user_organisation
else None
)
ifcopenshell.api.owner.settings.get_application = get_application
diff --git a/src/blenderbim/blenderbim/bim/ifc.py b/src/blenderbim/blenderbim/bim/ifc.py
index 10ef0a53f8..c83dc0e613 100644
--- a/src/blenderbim/blenderbim/bim/ifc.py
+++ b/src/blenderbim/blenderbim/bim/ifc.py
@@ -79,15 +79,18 @@ class IfcStore:
in a regular Python list, there is the likely probability that the object
will be invalidated when undo or redo occurs. Object invalidation seems to
only occur for selected objects either pre/post undo/redo event, including
- selected objects for consecutive undo/redos.
+ selected objects for consecutive undo/redos, and all children.
So if I first select o1, then o2, then o3, then press undo, o3 will be
invalidated. If instead I press undo twice, o3 and o2 will be invalidated.
"""
if bpy.context.active_object:
objects = set([o.name for o in bpy.context.selected_objects + [bpy.context.active_object]])
+ objects.update([o.name for o in bpy.context.active_object.children])
else:
objects = set([o.name for o in bpy.context.selected_objects])
+ for obj in bpy.context.selected_objects:
+ objects.update([o.name for o in obj.children])
IfcStore.undo_redo_stack_objects |= objects
@staticmethod
@@ -114,9 +117,19 @@ class IfcStore:
IfcStore.id_map[element.id()] = obj
if hasattr(element, "GlobalId"):
IfcStore.guid_map[element.GlobalId] = obj
- obj.BIMObjectProperties.ifc_definition_id = element.id()
- blenderbim.bim.handler.subscribe_to(obj, "mode", blenderbim.bim.handler.mode_callback)
+
+ if element.is_a("IfcSurfaceStyle"):
+ obj.BIMMaterialProperties.ifc_style_id = element.id()
+ else:
+ obj.BIMObjectProperties.ifc_definition_id = element.id()
+
blenderbim.bim.handler.subscribe_to(obj, "name", blenderbim.bim.handler.name_callback)
+
+ if isinstance(obj, bpy.types.Material):
+ blenderbim.bim.handler.subscribe_to(obj, "diffuse_color", blenderbim.bim.handler.color_callback)
+ elif isinstance(obj, bpy.types.Object):
+ blenderbim.bim.handler.subscribe_to(obj, "mode", blenderbim.bim.handler.mode_callback)
+
for listener in IfcStore.element_listeners:
listener(element, obj)
@@ -140,6 +153,10 @@ class IfcStore:
IfcStore.guid_map[data["guid"]] = obj
blenderbim.bim.handler.subscribe_to(obj, "mode", blenderbim.bim.handler.mode_callback)
blenderbim.bim.handler.subscribe_to(obj, "name", blenderbim.bim.handler.name_callback)
+ if isinstance(obj, bpy.types.Material):
+ blenderbim.bim.handler.subscribe_to(obj, "diffuse_color", blenderbim.bim.handler.color_callback)
+ # TODO Listeners are not re-registered. Does this cause nasty problems to debug later on?
+ # TODO We're handling id_map and guid_map, but what about edited_objs? This might cause big problems.
@staticmethod
def unlink_element(element=None, obj=None):
diff --git a/src/blenderbim/blenderbim/bim/import_ifc.py b/src/blenderbim/blenderbim/bim/import_ifc.py
index 57fd668de8..bd32c16cfd 100644
--- a/src/blenderbim/blenderbim/bim/import_ifc.py
+++ b/src/blenderbim/blenderbim/bim/import_ifc.py
@@ -54,9 +54,28 @@ class MaterialCreator:
if not self.mesh or self.mesh.name in self.parsed_meshes:
return
self.parsed_meshes.add(self.mesh.name)
+ self.add_default_material(element)
if self.parse_representations(element):
self.assign_material_slots_to_faces()
+ def add_default_material(self, element):
+ element_material = ifcopenshell.util.element.get_material(element)
+ if not element_material:
+ return
+ for material in [m for m in self.ifc_importer.file.traverse(element_material) if m.is_a("IfcMaterial")]:
+ if not material.HasRepresentation:
+ continue
+ surface_style = [
+ s for s in self.ifc_importer.file.traverse(material.HasRepresentation[0]) if s.is_a("IfcSurfaceStyle")
+ ]
+ if surface_style:
+ self.mesh.materials.append(self.styles[surface_style[0].id()])
+ return
+ # For authoring convenience, we choose to assign a material, even if it has no surface style. See #1585.
+ for material in [m for m in self.ifc_importer.file.traverse(element_material) if m.is_a("IfcMaterial")]:
+ self.mesh.materials.append(self.materials[material.id()])
+ return
+
def load_existing_materials(self):
for material in bpy.data.materials:
if material.BIMObjectProperties.ifc_definition_id:
@@ -134,12 +153,12 @@ class IfcImporter:
self.settings_native.set(self.settings_native.INCLUDE_CURVES, True)
self.settings_2d = ifcopenshell.geom.settings()
self.settings_2d.set(self.settings_2d.INCLUDE_CURVES, True)
- self.filter_mode = "BLACKLIST"
+ self.filter_mode = None
self.include_elements = set()
self.exclude_elements = set()
self.project = None
self.spatial_structure_elements = {}
- self.elements = {}
+ self.elements = []
self.type_collection = None
self.type_products = {}
self.openings = {}
@@ -159,8 +178,16 @@ class IfcImporter:
self.time = time.time()
print("{} :: {:.2f}".format(message, time.time() - self.time))
self.time = time.time()
+ self.update_progress(self.progress + 1)
+
+ def update_progress(self, progress):
+ if progress <= 100:
+ self.progress = progress
+ bpy.context.window_manager.progress_update(self.progress)
def execute(self):
+ bpy.context.window_manager.progress_begin(0, 100)
+ self.progress = 0
self.profile_code("Starting import process")
self.load_diff()
self.profile_code("Load diff")
@@ -200,7 +227,7 @@ class IfcImporter:
self.profile_code("Create native products")
self.create_products()
self.profile_code("Create products")
- self.create_empty_products()
+ self.create_empty_and_2d_elements()
self.profile_code("Create empty products")
self.create_type_products()
self.profile_code("Create type products")
@@ -228,6 +255,8 @@ class IfcImporter:
self.profile_code("Mesh cleaning")
self.set_default_context()
self.profile_code("Setting default context")
+ self.update_progress(100)
+ bpy.context.window_manager.progress_end()
def is_element_far_away(self, element, is_meters=True):
try:
@@ -320,12 +349,15 @@ class IfcImporter:
props = bpy.context.scene.BIMGeoreferenceProperties
if props.has_blender_offset:
return
- project = self.file.by_type("IfcProject")[0]
+ if self.file.schema == "IFC2X3":
+ project = self.file.by_type("IfcProject")[0]
+ else:
+ project = self.file.by_type("IfcContext")[0]
site = self.find_decomposed_ifc_class(project, "IfcSite")
- if site and self.is_element_far_away(site[0]):
+ if site and self.is_element_far_away(site[0], is_meters=False):
return self.guess_georeferencing(site[0])
building = self.find_decomposed_ifc_class(project, "IfcBuilding")
- if building and self.is_element_far_away(building[0]):
+ if building and self.is_element_far_away(building[0], is_meters=False):
return self.guess_georeferencing(building[0])
return self.guess_absolute_coordinate()
@@ -450,7 +482,6 @@ class IfcImporter:
grid_collection.objects.link(obj)
def create_type_products(self):
- type_products = self.file.by_type("IfcTypeProduct")
for collection in self.project["blender"].children:
if collection.name == "Types":
self.type_collection = collection
@@ -458,7 +489,15 @@ class IfcImporter:
if not self.type_collection:
self.type_collection = bpy.data.collections.new("Types")
self.project["blender"].children.link(self.type_collection)
+
+ if self.filter_mode in ["WHITELIST", "BLACKLIST"]:
+ type_products = set([ifcopenshell.util.element.get_type(e) for e in self.elements])
+ else:
+ type_products = self.file.by_type("IfcTypeProduct")
+
for type_product in type_products:
+ if not type_product:
+ continue
self.create_type_product(type_product)
def create_type_product(self, element):
@@ -546,12 +585,20 @@ class IfcImporter:
if not valid_file:
return False
checkpoint = time.time()
- total = 0
+ total_created = 0
+ approx_total_products = len(self.include_elements) or len(self.file.by_type("IfcElement"))
+ start_progress = self.progress
+ progress_range = 85 - start_progress
while True:
- total += 1
- if total % 250 == 0:
- print("{} elements processed in {:.2f}s ...".format(total, time.time() - checkpoint))
+ if total_created % 250 == 0:
+ print(
+ "{} / ~{} elements processed in {:.2f}s ...".format(
+ total_created, approx_total_products, time.time() - checkpoint
+ )
+ )
checkpoint = time.time()
+ if approx_total_products:
+ self.update_progress(((total_created / approx_total_products) * progress_range) + start_progress)
shape = iterator.get()
if shape:
product = self.file.by_id(shape.guid)
@@ -565,18 +612,32 @@ class IfcImporter:
pass
else:
self.create_product(product, shape)
+ total_created += 1
if not iterator.next():
break
print("Done creating geometry")
- def create_empty_products(self):
- for element in self.file.by_type("IfcProduct"):
+ def create_empty_and_2d_elements(self):
+ curve_products = []
+
+ if self.filter_mode == "WHITELIST":
+ self.elements = self.include_elements
+ elif self.filter_mode == "BLACKLIST":
+ self.elements = [e for e in self.file.by_type("IfcElement") if e not in self.exclude_elements]
+ else:
+ self.elements = self.file.by_type("IfcElement")
+
+ for element in self.elements:
if element.id() in self.added_data:
continue
if element.is_a("IfcPort"):
continue
if not element.Representation:
self.create_product(element)
+ else:
+ curve_products.append(element)
+ if curve_products:
+ self.create_curve_products(curve_products)
def create_annotation(self):
self.create_curve_products(self.file.by_type("IfcAnnotation"))
@@ -911,7 +972,6 @@ class IfcImporter:
def set_ifc_file(self):
bpy.context.scene.BIMProperties.ifc_file = self.ifc_import_settings.input_file
- IfcStore.file = self.file
IfcStore.path = self.ifc_import_settings.input_file
def calculate_unit_scale(self):
@@ -947,8 +1007,13 @@ class IfcImporter:
)
def create_project(self):
- self.project = {"ifc": self.file.by_type("IfcProject")[0]}
- self.project["blender"] = bpy.data.collections.new("IfcProject/{}".format(self.project["ifc"].Name))
+ if self.file.schema == "IFC2X3":
+ self.project = {"ifc": self.file.by_type("IfcProject")[0]}
+ else:
+ self.project = {"ifc": self.file.by_type("IfcContext")[0]}
+ self.project["blender"] = bpy.data.collections.new(
+ "{}/{}".format(self.project["ifc"].is_a(), self.project["ifc"].Name)
+ )
obj = self.create_product(self.project["ifc"])
if obj:
self.project["blender"].objects.link(obj)
@@ -1012,10 +1077,14 @@ class IfcImporter:
def create_materials(self):
for material in self.file.by_type("IfcMaterial"):
- blender_material = bpy.data.materials.new(material.Name)
- self.link_element(material, blender_material)
- self.material_creator.materials[material.id()] = blender_material
- blender_material.use_fake_user = True
+ self.create_material(material)
+
+ def create_material(self, material):
+ blender_material = bpy.data.materials.new(material.Name)
+ self.link_element(material, blender_material)
+ self.material_creator.materials[material.id()] = blender_material
+ blender_material.use_fake_user = True
+ return blender_material
def create_styles(self):
parsed_styles = set()
@@ -1031,11 +1100,13 @@ class IfcImporter:
for style in self.file.by_type("IfcSurfaceStyle"):
if style.id() in parsed_styles:
continue
+ self.create_style(style)
+
+ def create_style(self, style, blender_material=None):
+ if not blender_material:
name = style.Name or str(style.id())
blender_material = bpy.data.materials.new(name)
- self.create_style(style, blender_material)
- def create_style(self, style, blender_material):
old_definition_id = blender_material.BIMObjectProperties.ifc_definition_id
if not old_definition_id:
self.link_element(style, blender_material)
@@ -1077,7 +1148,7 @@ class IfcImporter:
self.place_object_in_spatial_tree(self.file.by_id(ifc_definition_id), obj)
def place_object_in_spatial_tree(self, element, obj):
- if element.is_a("IfcProject"):
+ if element.is_a() in ["IfcProject", "IfcProjectLibrary"]:
return
elif element.is_a("IfcTypeObject"):
self.type_collection.objects.link(obj)
diff --git a/src/blenderbim/blenderbim/bim/module/aggregate/operator.py b/src/blenderbim/blenderbim/bim/module/aggregate/operator.py
index fe85844eb4..b6f49c1568 100644
--- a/src/blenderbim/blenderbim/bim/module/aggregate/operator.py
+++ b/src/blenderbim/blenderbim/bim/module/aggregate/operator.py
@@ -17,7 +17,7 @@ class AssignObject(bpy.types.Operator):
def _execute(self, context):
self.file = IfcStore.get_file()
related_objects = (
- [bpy.data.objects.get(self.related_object)] if self.related_object else bpy.context.selected_objects
+ [bpy.data.objects.get(self.related_object)] if self.related_object else context.selected_objects
)
relating_object = bpy.data.objects.get(self.relating_object)
if not relating_object or not relating_object.BIMObjectProperties.ifc_definition_id:
@@ -40,7 +40,7 @@ class AssignObject(bpy.types.Operator):
spatial_collection = bpy.data.collections.get(related_object.name)
relating_collection = bpy.data.collections.get(relating_object.name)
if spatial_collection:
- self.remove_collection(bpy.context.scene.collection, spatial_collection)
+ self.remove_collection(context.scene.collection, spatial_collection)
for collection in bpy.data.collections:
if collection == relating_collection:
if not collection.children.get(spatial_collection.name):
@@ -67,8 +67,8 @@ class EnableEditingAggregate(bpy.types.Operator):
bl_options = {"REGISTER", "UNDO"}
def execute(self, context):
- bpy.context.active_object.BIMObjectProperties.relating_object = None
- bpy.context.active_object.BIMObjectProperties.is_editing_aggregate = True
+ context.active_object.BIMObjectProperties.relating_object = None
+ context.active_object.BIMObjectProperties.is_editing_aggregate = True
return {"FINISHED"}
@@ -79,7 +79,7 @@ class DisableEditingAggregate(bpy.types.Operator):
bl_options = {"REGISTER", "UNDO"}
def execute(self, context):
- obj = bpy.data.objects.get(self.obj) if self.obj else bpy.context.active_object
+ obj = bpy.data.objects.get(self.obj) if self.obj else context.active_object
obj.BIMObjectProperties.is_editing_aggregate = False
return {"FINISHED"}
@@ -94,9 +94,9 @@ class AddAggregate(bpy.types.Operator):
return IfcStore.execute_ifc_operator(self, context)
def _execute(self, context):
- obj = bpy.data.objects.get(self.obj) if self.obj else bpy.context.active_object
+ obj = bpy.data.objects.get(self.obj) if self.obj else context.active_object
aggregate_collection = bpy.data.collections.new("IfcElementAssembly/Assembly")
- bpy.context.scene.collection.children.link(aggregate_collection)
+ context.scene.collection.children.link(aggregate_collection)
aggregate = bpy.data.objects.new("Assembly", None)
aggregate_collection.objects.link(aggregate)
bpy.ops.bim.assign_class(obj=aggregate.name, ifc_class="IfcElementAssembly")
diff --git a/src/blenderbim/blenderbim/bim/module/attribute/operator.py b/src/blenderbim/blenderbim/bim/module/attribute/operator.py
index 8d0432da77..673c0ced6f 100644
--- a/src/blenderbim/blenderbim/bim/module/attribute/operator.py
+++ b/src/blenderbim/blenderbim/bim/module/attribute/operator.py
@@ -104,12 +104,6 @@ class EditAttributes(bpy.types.Operator):
ifcopenshell.api.run(
"attribute.edit_attributes", self.file, **{"product": product, "attributes": attributes}
)
- if "Name" in attributes:
- new_name = "{}/{}".format(product.is_a(), product.Name or "Unnamed")
- collection = bpy.data.collections.get(obj.name)
- if collection:
- collection.name = new_name
- obj.name = new_name
Data.load(IfcStore.get_file(), oprops.ifc_definition_id)
bpy.ops.bim.disable_editing_attributes(obj=obj.name, obj_type=self.obj_type)
return {"FINISHED"}
@@ -121,11 +115,11 @@ class GenerateGlobalId(bpy.types.Operator):
bl_options = {"REGISTER", "UNDO"}
def execute(self, context):
- index = bpy.context.active_object.BIMAttributeProperties.attributes.find("GlobalId")
+ index = context.active_object.BIMAttributeProperties.attributes.find("GlobalId")
if index >= 0:
- global_id = bpy.context.active_object.BIMAttributeProperties.attributes[index]
+ global_id = context.active_object.BIMAttributeProperties.attributes[index]
else:
- global_id = bpy.context.active_object.BIMAttributeProperties.attributes.add()
+ global_id = context.active_object.BIMAttributeProperties.attributes.add()
global_id.name = "GlobalId"
global_id.data_type = "string"
global_id.string_value = ifcopenshell.guid.new()
diff --git a/src/blenderbim/blenderbim/bim/module/augin/operator.py b/src/blenderbim/blenderbim/bim/module/augin/operator.py
index 28790024fa..f7b92fbab1 100644
--- a/src/blenderbim/blenderbim/bim/module/augin/operator.py
+++ b/src/blenderbim/blenderbim/bim/module/augin/operator.py
@@ -16,7 +16,7 @@ class AuginLogin(bpy.types.Operator):
bl_options = {"REGISTER", "UNDO"}
def execute(self, context):
- props = bpy.context.scene.AuginProperties
+ props = context.scene.AuginProperties
url = "https://server.auge.pro.br/API/v3/augin_rest.php/user_login"
payload = {"email": props.username, "password": props.password}
@@ -36,7 +36,7 @@ class AuginReset(bpy.types.Operator):
bl_options = {"REGISTER", "UNDO"}
def execute(self, context):
- props = bpy.context.scene.AuginProperties
+ props = context.scene.AuginProperties
props.is_success = False
return {"FINISHED"}
@@ -49,7 +49,7 @@ class AuginCreateNewModel(bpy.types.Operator):
def execute(self, context):
import boto3
from botocore.config import Config
- props = bpy.context.scene.AuginProperties
+ props = context.scene.AuginProperties
# Create project
url = "https://server.auge.pro.br/API/v3/augin_rest.php/new_model"
@@ -113,7 +113,7 @@ class AuginCreateNewModel(bpy.types.Operator):
context.scene.render.image_settings.file_format = old_file_format
context.scene.render.filepath = old_filepath
- client.upload_file(bpy.context.scene.BIMProperties.ifc_file, result["s3_bucket"], result["model_path"])
+ client.upload_file(context.scene.BIMProperties.ifc_file, result["s3_bucket"], result["model_path"])
client.upload_file(thumb_path, result["s3_bucket"], result["thumb_path"])
@@ -121,8 +121,8 @@ class AuginCreateNewModel(bpy.types.Operator):
url = "https://server.auge.pro.br/API/v3/augin_rest.php/files_uploaded"
payload = {
"user_token": props.token,
- "ifc_filesize": os.path.getsize(bpy.context.scene.BIMProperties.ifc_file),
- "model_filesize": os.path.getsize(bpy.context.scene.BIMProperties.ifc_file),
+ "ifc_filesize": os.path.getsize(context.scene.BIMProperties.ifc_file),
+ "model_filesize": os.path.getsize(context.scene.BIMProperties.ifc_file),
"thumb_filesize": os.path.getsize(thumb_path),
"model_upload_path": result["model_path"],
"thumb_upload_path": result["thumb_path"],
diff --git a/src/blenderbim/blenderbim/bim/module/augin/ui.py b/src/blenderbim/blenderbim/bim/module/augin/ui.py
index b6f5697f59..6199ba55b3 100644
--- a/src/blenderbim/blenderbim/bim/module/augin/ui.py
+++ b/src/blenderbim/blenderbim/bim/module/augin/ui.py
@@ -28,7 +28,7 @@ class BIM_PT_augin(bpy.types.Panel):
row = layout.row()
row.label(text="Logged in as " + props.username)
- if not bpy.context.scene.BIMProperties.ifc_file:
+ if not context.scene.BIMProperties.ifc_file:
row = layout.row()
row.label(text="No IFC Found")
return
diff --git a/src/blenderbim/blenderbim/bim/module/bcf/operator.py b/src/blenderbim/blenderbim/bim/module/bcf/operator.py
index 648d40e5c9..1477d06616 100644
--- a/src/blenderbim/blenderbim/bim/module/bcf/operator.py
+++ b/src/blenderbim/blenderbim/bim/module/bcf/operator.py
@@ -3,6 +3,9 @@ import bpy
import bcf
import bcf.bcfxml
import bcf.v2.data
+import numpy as np
+import ifcopenshell
+import ifcopenshell.util.unit
from . import bcfstore
from blenderbim.bim.ifc import IfcStore
from math import radians, degrees, atan, tan, cos, sin
@@ -14,11 +17,11 @@ class NewBcfProject(bpy.types.Operator):
bl_options = {"REGISTER", "UNDO"}
def execute(self, context):
- bpy.context.scene.BCFProperties.is_loaded = False
+ context.scene.BCFProperties.is_loaded = False
bcfxml = bcfstore.BcfStore.get_bcfxml()
bcfxml.new_project()
bpy.ops.bim.load_bcf_project()
- bpy.context.scene.BCFProperties.is_loaded = True
+ context.scene.BCFProperties.is_loaded = True
return {"FINISHED"}
@@ -30,14 +33,14 @@ class LoadBcfProject(bpy.types.Operator):
filter_glob: bpy.props.StringProperty(default="*.bcf;*.bcfzip", options={"HIDDEN"})
def execute(self, context):
- bpy.context.scene.BCFProperties.is_loaded = False
+ context.scene.BCFProperties.is_loaded = False
if self.filepath:
bcfstore.BcfStore.bcfxml = bcf.bcfxml.load(self.filepath)
bcfxml = bcfstore.BcfStore.get_bcfxml()
bcfxml.get_project()
- bpy.context.scene.BCFProperties.name = bcfxml.project.name
+ context.scene.BCFProperties.name = bcfxml.project.name
bpy.ops.bim.load_bcf_topics()
- bpy.context.scene.BCFProperties.is_loaded = True
+ context.scene.BCFProperties.is_loaded = True
return {"FINISHED"}
def invoke(self, context, event):
@@ -53,11 +56,11 @@ class LoadBcfTopics(bpy.types.Operator):
def execute(self, context):
bcfxml = bcfstore.BcfStore.get_bcfxml()
bcfxml.get_topics()
- while len(bpy.context.scene.BCFProperties.topics) > 0:
- bpy.context.scene.BCFProperties.topics.remove(0)
+ while len(context.scene.BCFProperties.topics) > 0:
+ context.scene.BCFProperties.topics.remove(0)
index = 0
for topic_guid in bcfxml.topics.keys():
- new = bpy.context.scene.BCFProperties.topics.add()
+ new = context.scene.BCFProperties.topics.add()
bpy.ops.bim.load_bcf_topic(topic_guid = topic_guid, topic_index = index)
index += 1
return {"FINISHED"}
@@ -73,7 +76,7 @@ class LoadBcfTopic(bpy.types.Operator):
def execute(self, context):
bcfxml = bcfstore.BcfStore.get_bcfxml()
topic = bcfxml.get_topic(self.topic_guid)
- new = bpy.context.scene.BCFProperties.topics[self.topic_index]
+ new = context.scene.BCFProperties.topics[self.topic_index]
data_map = {
"name": topic.guid,
"title": topic.title,
@@ -143,7 +146,7 @@ class LoadBcfComments(bpy.types.Operator):
def execute(self, context):
bcfxml = bcfstore.BcfStore.get_bcfxml()
bcfxml.get_comments(self.topic_guid)
- blender_topic = bpy.context.scene.BCFProperties.topics.get(self.topic_guid)
+ blender_topic = context.scene.BCFProperties.topics.get(self.topic_guid)
while len(blender_topic.comments) > 0:
blender_topic.comments.remove(0)
for comment in bcfxml.topics[self.topic_guid].comments.values():
@@ -170,7 +173,7 @@ class EditBcfProjectName(bpy.types.Operator):
def execute(self, context):
bcfxml = bcfstore.BcfStore.get_bcfxml()
- bcfxml.project.name = bpy.context.scene.BCFProperties.name
+ bcfxml.project.name = context.scene.BCFProperties.name
bcfxml.edit_project()
return {"FINISHED"}
@@ -182,7 +185,7 @@ class EditBcfAuthor(bpy.types.Operator):
def execute(self, context):
bcfxml = bcfstore.BcfStore.get_bcfxml()
- bcfxml.author = bpy.context.scene.BCFProperties.author
+ bcfxml.author = context.scene.BCFProperties.author
return {"FINISHED"}
@@ -192,7 +195,7 @@ class EditBcfTopicName(bpy.types.Operator):
bl_options = {"REGISTER", "UNDO"}
def execute(self, context):
- props = bpy.context.scene.BCFProperties
+ props = context.scene.BCFProperties
blender_topic = props.topics[props.active_topic_index]
bcfxml = bcfstore.BcfStore.get_bcfxml()
topic = bcfxml.topics[blender_topic.name]
@@ -207,7 +210,7 @@ class EditBcfTopic(bpy.types.Operator):
bl_options = {"REGISTER", "UNDO"}
def execute(self, context):
- props = bpy.context.scene.BCFProperties
+ props = context.scene.BCFProperties
blender_topic = props.topics[props.active_topic_index]
bcfxml = bcfstore.BcfStore.get_bcfxml()
@@ -250,7 +253,7 @@ class AddBcfTopic(bpy.types.Operator):
def execute(self, context):
bcfxml = bcfstore.BcfStore.get_bcfxml()
bcfxml.add_topic()
- new = bpy.context.scene.BCFProperties.topics.add()
+ new = context.scene.BCFProperties.topics.add()
new.name = "New Topic"
bpy.ops.bim.load_bcf_topics()
return {"FINISHED"}
@@ -263,7 +266,7 @@ class AddBcfBimSnippet(bpy.types.Operator):
def execute(self, context):
bcfxml = bcfstore.BcfStore.get_bcfxml()
- props = bpy.context.scene.BCFProperties
+ props = context.scene.BCFProperties
blender_topic = props.topics[props.active_topic_index]
topic = bcfxml.topics[blender_topic.name]
bim_snippet = bcf.v2.data.BimSnippet()
@@ -282,7 +285,7 @@ class AddBcfRelatedTopic(bpy.types.Operator):
def execute(self, context):
bcfxml = bcfstore.BcfStore.get_bcfxml()
- props = bpy.context.scene.BCFProperties
+ props = context.scene.BCFProperties
blender_topic = props.topics[props.active_topic_index]
related_topic = None
for topic in bcfxml.topics.values():
@@ -306,7 +309,7 @@ class AddBcfHeaderFile(bpy.types.Operator):
def execute(self, context):
bcfxml = bcfstore.BcfStore.get_bcfxml()
- props = bpy.context.scene.BCFProperties
+ props = context.scene.BCFProperties
blender_topic = props.topics[props.active_topic_index]
topic = bcfxml.topics[blender_topic.name]
header_file = bcf.v2.data.HeaderFile()
@@ -329,9 +332,9 @@ class ViewBcfTopic(bpy.types.Operator):
topic_guid: bpy.props.StringProperty()
def execute(self, context):
- for index, topic in enumerate(bpy.context.scene.BCFProperties.topics):
+ for index, topic in enumerate(context.scene.BCFProperties.topics):
if topic.guid.lower() == self.topic_guid.lower():
- bpy.context.scene.BCFProperties.active_topic_index = index
+ context.scene.BCFProperties.active_topic_index = index
return {"FINISHED"}
@@ -341,44 +344,44 @@ class AddBcfViewpoint(bpy.types.Operator):
bl_options = {"REGISTER", "UNDO"}
def execute(self, context):
- if not bpy.context.scene.camera:
+ if not context.scene.camera:
return {"FINISHED"}
bcfxml = bcfstore.BcfStore.get_bcfxml()
- props = bpy.context.scene.BCFProperties
+ props = context.scene.BCFProperties
blender_topic = props.topics[props.active_topic_index]
topic = bcfxml.topics[blender_topic.name]
viewpoint = bcf.v2.data.Viewpoint()
- if bpy.context.scene.camera.data.type == "ORTHO":
+ if context.scene.camera.data.type == "ORTHO":
camera = bcf.v2.data.OrthogonalCamera()
- camera.view_to_world_scale = bpy.context.scene.camera.data.ortho_scale
+ camera.view_to_world_scale = context.scene.camera.data.ortho_scale
viewpoint.orthogonal_camera = camera
- elif bpy.context.scene.camera.data.type == "PERSP":
+ elif context.scene.camera.data.type == "PERSP":
camera = bcf.v2.data.PerspectiveCamera()
- camera.field_of_view = degrees(bpy.context.scene.camera.data.angle)
+ camera.field_of_view = degrees(context.scene.camera.data.angle)
viewpoint.perspective_camera = camera
- camera.camera_view_point.x = bpy.context.scene.camera.location.x
- camera.camera_view_point.y = bpy.context.scene.camera.location.y
- camera.camera_view_point.z = bpy.context.scene.camera.location.z
- direction = bpy.context.scene.camera.matrix_world.to_quaternion() @ Vector((0.0, 0.0, -1.0))
+ camera.camera_view_point.x = context.scene.camera.location.x
+ camera.camera_view_point.y = context.scene.camera.location.y
+ camera.camera_view_point.z = context.scene.camera.location.z
+ direction = context.scene.camera.matrix_world.to_quaternion() @ Vector((0.0, 0.0, -1.0))
camera.camera_direction.x = direction.x
camera.camera_direction.y = direction.y
camera.camera_direction.z = direction.z
- up = bpy.context.scene.camera.matrix_world.to_quaternion() @ Vector((0.0, 1.0, 0.0))
+ up = context.scene.camera.matrix_world.to_quaternion() @ Vector((0.0, 1.0, 0.0))
camera.camera_up_vector.x = up.x
camera.camera_up_vector.y = up.y
camera.camera_up_vector.z = up.z
- old_file_format = bpy.context.scene.render.image_settings.file_format
- bpy.context.scene.render.image_settings.file_format = "PNG"
- old_filepath = bpy.context.scene.render.filepath
- bpy.context.scene.render.filepath = os.path.join(bpy.context.scene.BIMProperties.data_dir, "snapshot.png")
+ old_file_format = context.scene.render.image_settings.file_format
+ context.scene.render.image_settings.file_format = "PNG"
+ old_filepath = context.scene.render.filepath
+ context.scene.render.filepath = os.path.join(context.scene.BIMProperties.data_dir, "snapshot.png")
bpy.ops.render.opengl(write_still=True)
- viewpoint.snapshot = bpy.context.scene.render.filepath
+ viewpoint.snapshot = context.scene.render.filepath
bcfxml.add_viewpoint(topic, viewpoint)
- bpy.context.scene.render.filepath = old_filepath
- bpy.context.scene.render.image_settings.file_format = old_file_format
+ context.scene.render.filepath = old_filepath
+ context.scene.render.image_settings.file_format = old_file_format
props.active_topic_index = props.active_topic_index # refreshes the BCF Topic
return {"FINISHED"}
@@ -390,7 +393,7 @@ class RemoveBcfViewpoint(bpy.types.Operator):
def execute(self, context):
bcfxml = bcfstore.BcfStore.get_bcfxml()
- props = bpy.context.scene.BCFProperties
+ props = context.scene.BCFProperties
blender_topic = props.topics[props.active_topic_index]
viewpoint_guid = blender_topic.viewpoints
topic = bcfxml.topics[blender_topic.name]
@@ -407,7 +410,7 @@ class RemoveBcfFile(bpy.types.Operator):
def execute(self, context):
bcfxml = bcfstore.BcfStore.get_bcfxml()
- props = bpy.context.scene.BCFProperties
+ props = context.scene.BCFProperties
blender_topic = props.topics[props.active_topic_index]
topic = bcfxml.topics[blender_topic.name]
bcfxml.delete_file(topic, self.index)
@@ -422,7 +425,7 @@ class AddBcfReferenceLink(bpy.types.Operator):
def execute(self, context):
bcfxml = bcfstore.BcfStore.get_bcfxml()
- props = bpy.context.scene.BCFProperties
+ props = context.scene.BCFProperties
blender_topic = props.topics[props.active_topic_index]
topic = bcfxml.topics[blender_topic.name]
if not blender_topic.reference_link:
@@ -441,7 +444,7 @@ class AddBcfDocumentReference(bpy.types.Operator):
def execute(self, context):
bcfxml = bcfstore.BcfStore.get_bcfxml()
- props = bpy.context.scene.BCFProperties
+ props = context.scene.BCFProperties
blender_topic = props.topics[props.active_topic_index]
topic = bcfxml.topics[blender_topic.name]
if not blender_topic.document_reference:
@@ -463,7 +466,7 @@ class AddBcfLabel(bpy.types.Operator):
def execute(self, context):
bcfxml = bcfstore.BcfStore.get_bcfxml()
- props = bpy.context.scene.BCFProperties
+ props = context.scene.BCFProperties
blender_topic = props.topics[props.active_topic_index]
topic = bcfxml.topics[blender_topic.name]
if not blender_topic.label:
@@ -483,7 +486,7 @@ class EditBcfReferenceLinks(bpy.types.Operator):
def execute(self, context):
bcfxml = bcfstore.BcfStore.get_bcfxml()
- props = bpy.context.scene.BCFProperties
+ props = context.scene.BCFProperties
blender_topic = props.topics[props.active_topic_index]
topic = bcfxml.topics[blender_topic.name]
for index, reference_link in enumerate(topic.reference_links):
@@ -501,7 +504,7 @@ class EditBcfLabels(bpy.types.Operator):
def execute(self, context):
bcfxml = bcfstore.BcfStore.get_bcfxml()
- props = bpy.context.scene.BCFProperties
+ props = context.scene.BCFProperties
blender_topic = props.topics[props.active_topic_index]
topic = bcfxml.topics[blender_topic.name]
for index, label in enumerate(blender_topic.labels):
@@ -520,7 +523,7 @@ class RemoveBcfReferenceLink(bpy.types.Operator):
def execute(self, context):
bcfxml = bcfstore.BcfStore.get_bcfxml()
- props = bpy.context.scene.BCFProperties
+ props = context.scene.BCFProperties
blender_topic = props.topics[props.active_topic_index]
topic = bcfxml.topics[blender_topic.name]
del topic.reference_links[self.index]
@@ -537,7 +540,7 @@ class RemoveBcfLabel(bpy.types.Operator):
def execute(self, context):
bcfxml = bcfstore.BcfStore.get_bcfxml()
- props = bpy.context.scene.BCFProperties
+ props = context.scene.BCFProperties
blender_topic = props.topics[props.active_topic_index]
topic = bcfxml.topics[blender_topic.name]
del topic.labels[self.index]
@@ -553,7 +556,7 @@ class RemoveBcfBimSnippet(bpy.types.Operator):
def execute(self, context):
bcfxml = bcfstore.BcfStore.get_bcfxml()
- props = bpy.context.scene.BCFProperties
+ props = context.scene.BCFProperties
blender_topic = props.topics[props.active_topic_index]
topic = bcfxml.topics[blender_topic.name]
bcfxml.delete_bim_snippet(topic)
@@ -571,7 +574,7 @@ class RemoveBcfDocumentReference(bpy.types.Operator):
def execute(self, context):
bcfxml = bcfstore.BcfStore.get_bcfxml()
- props = bpy.context.scene.BCFProperties
+ props = context.scene.BCFProperties
blender_topic = props.topics[props.active_topic_index]
topic = bcfxml.topics[blender_topic.name]
bcfxml.delete_document_reference(topic, self.index)
@@ -587,7 +590,7 @@ class RemoveBcfRelatedTopic(bpy.types.Operator):
def execute(self, context):
bcfxml = bcfstore.BcfStore.get_bcfxml()
- props = bpy.context.scene.BCFProperties
+ props = context.scene.BCFProperties
blender_topic = props.topics[props.active_topic_index]
topic = bcfxml.topics[blender_topic.name]
del topic.related_topics[self.index]
@@ -604,7 +607,7 @@ class RemoveBcfComment(bpy.types.Operator):
def execute(self, context):
bcfxml = bcfstore.BcfStore.get_bcfxml()
- props = bpy.context.scene.BCFProperties
+ props = context.scene.BCFProperties
blender_topic = props.topics[props.active_topic_index]
topic = bcfxml.topics[blender_topic.name]
bcfxml.delete_comment(self.comment_guid, topic)
@@ -620,7 +623,7 @@ class EditBcfComment(bpy.types.Operator):
def execute(self, context):
bcfxml = bcfstore.BcfStore.get_bcfxml()
- props = bpy.context.scene.BCFProperties
+ props = context.scene.BCFProperties
blender_topic = props.topics[props.active_topic_index]
blender_comment = blender_topic.comments.get(self.comment_guid)
topic = bcfxml.topics[blender_topic.name]
@@ -639,7 +642,7 @@ class AddBcfComment(bpy.types.Operator):
def execute(self, context):
bcfxml = bcfstore.BcfStore.get_bcfxml()
- props = bpy.context.scene.BCFProperties
+ props = context.scene.BCFProperties
blender_topic = props.topics[props.active_topic_index]
topic = bcfxml.topics[blender_topic.name]
if not blender_topic.comment:
@@ -662,7 +665,7 @@ class ActivateBcfViewpoint(bpy.types.Operator):
def execute(self, context):
self.file = IfcStore.get_file()
bcfxml = bcfstore.BcfStore.get_bcfxml()
- props = bpy.context.scene.BCFProperties
+ props = context.scene.BCFProperties
blender_topic = props.topics[props.active_topic_index]
topic = bcfxml.topics[blender_topic.name]
if not topic.viewpoints:
@@ -673,11 +676,11 @@ class ActivateBcfViewpoint(bpy.types.Operator):
obj = bpy.data.objects.get("Viewpoint")
if not obj:
obj = bpy.data.objects.new("Viewpoint", bpy.data.cameras.new("Viewpoint"))
- bpy.context.scene.collection.objects.link(obj)
- bpy.context.scene.camera = obj
+ context.scene.collection.objects.link(obj)
+ context.scene.camera = obj
- cam_width = bpy.context.scene.render.resolution_x
- cam_height = bpy.context.scene.render.resolution_y
+ cam_width = context.scene.render.resolution_x
+ cam_height = context.scene.render.resolution_y
cam_aspect = cam_width / cam_height
if viewpoint.snapshot:
@@ -697,9 +700,30 @@ class ActivateBcfViewpoint(bpy.types.Operator):
else:
background.frame_method = "CROP"
background.display_depth = "FRONT"
- area = next(area for area in bpy.context.screen.areas if area.type == "VIEW_3D")
+ area = next(area for area in context.screen.areas if area.type == "VIEW_3D")
area.spaces[0].region_3d.view_perspective = "CAMERA"
+ if self.file:
+ self.set_viewpoint_components(viewpoint)
+
+ gp = bpy.data.grease_pencils.get("BCF")
+ if gp:
+ bpy.data.grease_pencils.remove(gp)
+ if viewpoint.lines:
+ self.draw_lines(viewpoint, context)
+
+ self.delete_clipping_planes(context)
+ if viewpoint.clipping_planes:
+ self.create_clipping_planes(viewpoint)
+
+ self.delete_bitmaps(context)
+ if viewpoint.bitmaps:
+ self.create_bitmaps(bcfxml, viewpoint, topic)
+
+ self.setup_camera(viewpoint, obj, cam_aspect)
+ return {"FINISHED"}
+
+ def setup_camera(self, viewpoint, obj, cam_aspect):
if viewpoint.orthogonal_camera:
camera = viewpoint.orthogonal_camera
obj.data.type = "ORTHO"
@@ -713,72 +737,115 @@ class ActivateBcfViewpoint(bpy.types.Operator):
# https://blender.stackexchange.com/questions/23431/how-to-set-camera-horizontal-and-vertical-fov
obj.data.angle = 2 * atan((0.5 * cam_height) / (0.5 * cam_width / tan(radians(camera.field_of_view) / 2)))
- self.set_viewpoint_components(viewpoint)
-
- gp = bpy.data.grease_pencils.get("BCF")
- if gp:
- bpy.data.grease_pencils.remove(gp)
- if viewpoint.lines:
- self.draw_lines(viewpoint)
-
- self.delete_clipping_planes()
- if viewpoint.clipping_planes:
- self.create_clipping_planes(viewpoint)
-
- self.delete_bitmaps()
- if viewpoint.bitmaps:
- self.create_bitmaps(bcfxml, viewpoint, topic)
-
z_axis = Vector((-camera.camera_direction.x, -camera.camera_direction.y, -camera.camera_direction.z)).normalized()
y_axis = Vector((camera.camera_up_vector.x, camera.camera_up_vector.y, camera.camera_up_vector.z)).normalized()
x_axis = y_axis.cross(z_axis).normalized()
rotation = Matrix((x_axis, y_axis, z_axis))
rotation.invert()
- location = Vector((camera.camera_view_point.x, camera.camera_view_point.y, camera.camera_view_point.z))
- obj.matrix_world = rotation.to_4x4()
- obj.location = location
- return {"FINISHED"}
+ matrix = np.matrix((
+ [x_axis[0], y_axis[0], z_axis[0], camera.camera_view_point.x],
+ [x_axis[1], y_axis[1], z_axis[1], camera.camera_view_point.y],
+ [x_axis[2], y_axis[2], z_axis[2], camera.camera_view_point.z],
+ [0, 0, 0, 1],
+ ))
+ props = bpy.context.scene.BIMGeoreferenceProperties
+ if props.has_blender_offset:
+ unit_scale = ifcopenshell.util.unit.calculate_unit_scale(self.file)
+ matrix = ifcopenshell.util.geolocation.global2local(
+ matrix,
+ float(props.blender_eastings) * unit_scale,
+ float(props.blender_northings) * unit_scale,
+ float(props.blender_orthogonal_height) * unit_scale,
+ float(props.blender_x_axis_abscissa),
+ float(props.blender_x_axis_ordinate),
+ )
+ obj.matrix_world = Matrix(matrix.tolist())
def set_viewpoint_components(self, viewpoint):
if not viewpoint.components:
return
- selected_global_ids = [s.ifc_guid for s in viewpoint.components.selection]
+
+ # Operators with context overrides are used because they are
+ # significantly faster than looping through all objects
+
exception_global_ids = [v.ifc_guid for v in viewpoint.components.visibility.exceptions]
+
+ if viewpoint.components.visibility.default_visibility:
+ old = bpy.context.area.type
+ bpy.context.area.type = "VIEW_3D"
+ bpy.ops.object.hide_view_clear()
+ bpy.context.area.type = old
+ for global_id in exception_global_ids:
+ obj = IfcStore.get_element(global_id)
+ if obj:
+ obj.hide_set(True)
+ else:
+ objs = []
+ for global_id in exception_global_ids:
+ obj = IfcStore.get_element(global_id)
+ if obj:
+ objs.append(obj)
+ if objs:
+ old = bpy.context.area.type
+ bpy.context.area.type = "VIEW_3D"
+ context_override = {}
+ context_override["object"] = context_override["active_object"] = objs[0]
+ context_override["selected_objects"] = context_override["selected_editable_objects"] = objs
+ bpy.ops.object.hide_view_set(context_override, unselected=True)
+ bpy.context.area.type = old
+
+ if viewpoint.components.view_setup_hints:
+ if not viewpoint.components.view_setup_hints.spaces_visible:
+ self.hide_spaces()
+ if viewpoint.components.view_setup_hints.openings_visible is not None:
+ self.set_openings_visibility(viewpoint.components.view_setup_hints.openings_visible)
+ else:
+ self.hide_spaces()
+ self.set_openings_visibility(False)
+
+ self.set_selection(viewpoint)
+ self.set_colours(viewpoint)
+
+ def hide_spaces(self):
+ old = bpy.context.area.type
+ bpy.context.area.type = "VIEW_3D"
+ bpy.ops.object.select_pattern(pattern="IfcSpace/*")
+ bpy.ops.object.hide_view_set({})
+ bpy.context.area.type = old
+
+ def set_openings_visibility(self, is_visible):
+ for collection in self.get_opening_collections():
+ collection.hide_viewport = not is_visible
+
+ def set_selection(self, viewpoint):
+ selected_global_ids = [s.ifc_guid for s in viewpoint.components.selection]
+ bpy.ops.object.select_all(action="DESELECT")
+ for global_id in selected_global_ids:
+ obj = IfcStore.get_element(global_id)
+ if obj:
+ obj.select_set(True)
+
+ def set_colours(self, viewpoint):
global_id_colours = {}
for coloring in viewpoint.components.coloring:
for component in coloring.components:
global_id_colours.setdefault(component.ifc_guid, coloring.color)
+ for global_id, color in global_id_colours.items():
+ obj = IfcStore.get_element(global_id)
+ if obj:
+ obj.color = self.hex_to_rgb(color)
- for obj in bpy.data.objects:
- if not obj.BIMObjectProperties.ifc_definition_id:
- continue
- global_id = self.file.by_id(obj.BIMObjectProperties.ifc_definition_id).GlobalId
- is_visible = viewpoint.components.visibility.default_visibility
- if global_id in exception_global_ids:
- is_visible = not is_visible
- if not is_visible:
- obj.hide_set(True)
- continue
- if "IfcSpace" in obj.name:
- if viewpoint.components.view_setup_hints:
- is_visible = viewpoint.components.view_setup_hints.spaces_visible
- else:
- is_visible = False
- elif "IfcOpeningElement" in obj.name:
- if viewpoint.components.view_setup_hints:
- is_visible = viewpoint.components.view_setup_hints.openings_visible
- else:
- is_visible = False
- obj.hide_set(not is_visible)
- if not is_visible:
- continue
- obj.select_set(global_id in selected_global_ids)
- if global_id in global_id_colours:
- obj.color = self.hex_to_rgb(global_id_colours[global_id])
+ def get_opening_collections(self):
+ collections = []
+ for collection in bpy.context.view_layer.layer_collection.children:
+ opening_collection = collection.children.get("IfcOpeningElements")
+ if opening_collection:
+ collections.append(opening_collection)
+ return collections
- def draw_lines(self, viewpoint):
+ def draw_lines(self, viewpoint, context):
gp = bpy.data.grease_pencils.new("BCF")
- scene = bpy.context.scene
+ scene = context.scene
scene.grease_pencil = gp
scene.frame_set(1)
layer = gp.layers.new("BCF Annotation", set_active=True)
@@ -808,19 +875,19 @@ class ActivateBcfViewpoint(bpy.types.Operator):
)
n += 1
- def delete_clipping_planes(self):
+ def delete_clipping_planes(self, context):
collection = bpy.data.collections.get("Sections")
if not collection:
return
for section in collection.objects:
- bpy.context.view_layer.objects.active = section
+ context.view_layer.objects.active = section
bpy.ops.bim.remove_section_plane()
- def delete_bitmaps(self):
+ def delete_bitmaps(self, context):
collection = bpy.data.collections.get("Bitmaps")
if not collection:
collection = bpy.data.collections.new("Bitmaps")
- bpy.context.scene.collection.children.link(collection)
+ context.scene.collection.children.link(collection)
for bitmap in collection.objects:
bpy.data.objects.remove(bitmap)
@@ -860,7 +927,7 @@ class OpenBcfReferenceLink(bpy.types.Operator):
index: bpy.props.IntProperty()
def execute(self, context):
- webbrowser.open(bpy.context.scene.BCFProperties.topic_links[self.index].name)
+ webbrowser.open(context.scene.BCFProperties.topic_links[self.index].name)
return {"FINISHED"}
@@ -872,7 +939,7 @@ class SelectBcfHeaderFile(bpy.types.Operator):
def execute(self, context):
if self.filepath:
- props = bpy.context.scene.BCFProperties
+ props = context.scene.BCFProperties
topic = props.topics[props.active_topic_index]
topic.file_reference = self.filepath
return {"FINISHED"}
@@ -890,7 +957,7 @@ class SelectBcfBimSnippetReference(bpy.types.Operator):
def execute(self, context):
if self.filepath:
- props = bpy.context.scene.BCFProperties
+ props = context.scene.BCFProperties
topic = props.topics[props.active_topic_index]
topic.bim_snippet_reference = self.filepath
return {"FINISHED"}
@@ -908,7 +975,7 @@ class SelectBcfDocumentReference(bpy.types.Operator):
def execute(self, context):
if self.filepath:
- props = bpy.context.scene.BCFProperties
+ props = context.scene.BCFProperties
topic = props.topics[props.active_topic_index]
topic.document_reference = self.filepath
return {"FINISHED"}
diff --git a/src/blenderbim/blenderbim/bim/module/bcf/prop.py b/src/blenderbim/blenderbim/bim/module/bcf/prop.py
index 5c7baa1bd1..f64ec46382 100644
--- a/src/blenderbim/blenderbim/bim/module/bcf/prop.py
+++ b/src/blenderbim/blenderbim/bim/module/bcf/prop.py
@@ -23,37 +23,37 @@ def purge():
def updateBcfReferenceLink(self, context):
- if bpy.context.scene.BCFProperties.is_loaded:
+ if context.scene.BCFProperties.is_loaded:
bpy.ops.bim.edit_bcf_reference_links()
def updateBcfLabel(self, context):
- if bpy.context.scene.BCFProperties.is_loaded:
+ if context.scene.BCFProperties.is_loaded:
bpy.ops.bim.edit_bcf_labels()
def updateBcfProjectName(self, context):
- if bpy.context.scene.BCFProperties.is_loaded:
+ if context.scene.BCFProperties.is_loaded:
bpy.ops.bim.edit_bcf_project_name()
def updateBcfAuthor(self, context):
- if bpy.context.scene.BCFProperties.is_loaded:
+ if context.scene.BCFProperties.is_loaded:
bpy.ops.bim.edit_bcf_author()
def updateBcfTopicName(self, context):
- if bpy.context.scene.BCFProperties.is_loaded:
+ if context.scene.BCFProperties.is_loaded:
bpy.ops.bim.edit_bcf_topic_name()
def updateBcfTopicIsEditable(self, context):
- if bpy.context.scene.BCFProperties.is_loaded and not self.is_editable:
+ if context.scene.BCFProperties.is_loaded and not self.is_editable:
bpy.ops.bim.edit_bcf_topic()
def updateBcfCommentIsEditable(self, context):
- if bpy.context.scene.BCFProperties.is_loaded and not self.is_editable:
+ if context.scene.BCFProperties.is_loaded and not self.is_editable:
bpy.ops.bim.edit_bcf_comment(comment_guid = self.name)
@@ -61,7 +61,7 @@ def refreshBcfTopic(self, context):
global bcfviewpoints_enum
bcfviewpoints_enum = None
- props = bpy.context.scene.BCFProperties
+ props = context.scene.BCFProperties
bcfxml = bcfstore.BcfStore.get_bcfxml()
topic = props.topics[props.active_topic_index]
header = bcfxml.get_header(topic.name)
@@ -80,7 +80,7 @@ def getBcfViewpoints(self, context):
global bcfviewpoints_enum
if bcfviewpoints_enum is None:
bcfviewpoints_enum = []
- props = bpy.context.scene.BCFProperties
+ props = context.scene.BCFProperties
bcfxml = bcfstore.BcfStore.get_bcfxml()
topic = props.topics[props.active_topic_index]
viewpoints = bcfxml.get_viewpoints(topic.name)
diff --git a/src/blenderbim/blenderbim/bim/module/bcf/ui.py b/src/blenderbim/blenderbim/bim/module/bcf/ui.py
index f03032d4ef..f90983d609 100644
--- a/src/blenderbim/blenderbim/bim/module/bcf/ui.py
+++ b/src/blenderbim/blenderbim/bim/module/bcf/ui.py
@@ -17,7 +17,7 @@ class BIM_PT_bcf(Panel):
layout.use_property_decorate = False
scene = context.scene
- props = bpy.context.scene.BCFProperties
+ props = scene.BCFProperties
row = layout.row(align=True)
row.operator("bim.new_bcf_project", text="New Project")
@@ -34,7 +34,7 @@ class BIM_PT_bcf(Panel):
row = layout.row()
row.prop(props, "author")
- props = bpy.context.scene.BCFProperties
+ props = context.scene.BCFProperties
row = layout.row()
row.template_list("BIM_UL_topics", "", props, "topics", props, "active_topic_index")
col = row.column(align=True)
@@ -93,7 +93,7 @@ class BIM_PT_bcf_metadata(Panel):
layout.use_property_decorate = False
scene = context.scene
- props = bpy.context.scene.BCFProperties
+ props = scene.BCFProperties
if props.active_topic_index >= len(props.topics):
layout.label(text="No BCF project is loaded")
@@ -236,7 +236,7 @@ class BIM_PT_bcf_comments(Panel):
layout.use_property_decorate = False
scene = context.scene
- props = bpy.context.scene.BCFProperties
+ props = scene.BCFProperties
if props.active_topic_index >= len(props.topics):
layout.label(text="No BCF project is loaded")
diff --git a/src/blenderbim/blenderbim/bim/module/bimtester/operator.py b/src/blenderbim/blenderbim/bim/module/bimtester/operator.py
index 5e02e59e40..150ef4c5c0 100644
--- a/src/blenderbim/blenderbim/bim/module/bimtester/operator.py
+++ b/src/blenderbim/blenderbim/bim/module/bimtester/operator.py
@@ -52,11 +52,11 @@ class BIMTesterPurge(bpy.types.Operator):
def execute(self, context):
filename = os.path.join(
- bpy.context.scene.BimTesterProperties.features_dir,
- bpy.context.scene.BimTesterProperties.features_file + ".feature",
+ context.scene.BimTesterProperties.features_dir,
+ context.scene.BimTesterProperties.features_file + ".feature",
)
cwd = os.getcwd()
- os.chdir(bpy.context.scene.BimTesterProperties.features_dir)
+ os.chdir(context.scene.BimTesterProperties.features_dir)
bimtester.clean.TestPurger().purge()
os.chdir(cwd)
return {"FINISHED"}
@@ -71,7 +71,7 @@ class SelectFeature(bpy.types.Operator):
filepath: bpy.props.StringProperty(subtype="FILE_PATH")
def execute(self, context):
- bpy.context.scene.BimTesterProperties.feature = self.filepath
+ context.scene.BimTesterProperties.feature = self.filepath
return {"FINISHED"}
def invoke(self, context, event):
@@ -88,7 +88,7 @@ class SelectSteps(bpy.types.Operator):
filepath: bpy.props.StringProperty(subtype="FILE_PATH")
def execute(self, context):
- bpy.context.scene.BimTesterProperties.steps = self.filepath
+ context.scene.BimTesterProperties.steps = self.filepath
return {"FINISHED"}
def invoke(self, context, event):
@@ -120,14 +120,14 @@ class RejectElement(bpy.types.Operator):
def execute(self, context):
lines = []
self.file = IfcStore.get_file()
- for obj in bpy.context.selected_objects:
+ for obj in context.selected_objects:
lines.append(
" * The element {} should not exist because {}".format(
self.file.by_id(obj.BIMObjectProperties.ifc_definition_id).GlobalId,
- bpy.context.scene.BimTesterProperties.qa_reject_element_reason,
+ context.scene.BimTesterProperties.qa_reject_element_reason,
)
)
- QAHelper.append_to_scenario(lines)
+ QAHelper.append_to_scenario(lines, context)
return {"FINISHED"}
@@ -138,12 +138,12 @@ class ApproveClass(bpy.types.Operator):
def execute(self, context):
lines = []
self.file = IfcStore.get_file()
- for obj in bpy.context.selected_objects:
+ for obj in context.selected_objects:
if not obj.BIMObjectProperties.ifc_definition_id:
continue
element = self.file.by_id(obj.BIMObjectProperties.ifc_definition_id)
lines.append(" * The element {} is an {}".format(element.GlobalId, element.is_a()))
- QAHelper.append_to_scenario(lines)
+ QAHelper.append_to_scenario(lines, context)
return {"FINISHED"}
@@ -154,16 +154,16 @@ class RejectClass(bpy.types.Operator):
def execute(self, context):
lines = []
self.file = IfcStore.get_file()
- for obj in bpy.context.selected_objects:
+ for obj in context.selected_objects:
if not obj.BIMObjectProperties.ifc_definition_id:
continue
lines.append(
" * The element {} is an {}".format(
self.file.by_id(obj.BIMObjectProperties.ifc_definition_id).GlobalId,
- bpy.context.scene.BimTesterProperties.audit_ifc_class,
+ context.scene.BimTesterProperties.audit_ifc_class,
)
)
- QAHelper.append_to_scenario(lines)
+ QAHelper.append_to_scenario(lines, context)
return {"FINISHED"}
@@ -175,7 +175,7 @@ class SelectAudited(bpy.types.Operator):
def execute(self, context):
audited_global_ids = []
self.file = IfcStore.get_file()
- for filename in Path(bpy.context.scene.BimTesterProperties.features_dir).glob("*.feature"):
+ for filename in Path(context.scene.BimTesterProperties.features_dir).glob("*.feature"):
with open(filename, "r") as feature_file:
lines = feature_file.readlines()
for line in lines:
@@ -183,7 +183,7 @@ class SelectAudited(bpy.types.Operator):
for word in words:
if self.is_a_global_id(word):
audited_global_ids.append(word)
- for obj in bpy.context.visible_objects:
+ for obj in context.visible_objects:
if not obj.BIMObjectProperties.ifc_definition_id:
continue
if self.file.by_id(obj.BIMObjectProperties.ifc_definition_id).GlobalId in audited_global_ids:
@@ -196,10 +196,10 @@ class SelectAudited(bpy.types.Operator):
class QAHelper:
@classmethod
- def append_to_scenario(cls, lines):
+ def append_to_scenario(cls, lines, context):
filename = os.path.join(
- bpy.context.scene.BimTesterProperties.features_dir,
- bpy.context.scene.BimTesterProperties.features_file + ".feature",
+ context.scene.BimTesterProperties.features_dir,
+ context.scene.BimTesterProperties.features_file + ".feature",
)
if os.path.exists(filename + "~"):
os.remove(filename + "~")
@@ -210,7 +210,7 @@ class QAHelper:
for source_line in source:
if (
"Scenario: " in source_line
- and bpy.context.scene.BimTesterProperties.scenario == source_line.strip()[len("Scenario: ") :]
+ and context.scene.BimTesterProperties.scenario == source_line.strip()[len("Scenario: ") :]
):
is_in_scenario = True
elif is_in_scenario:
diff --git a/src/blenderbim/blenderbim/bim/module/clash/operator.py b/src/blenderbim/blenderbim/bim/module/clash/operator.py
index 05fd235d18..45b9f5cecf 100644
--- a/src/blenderbim/blenderbim/bim/module/clash/operator.py
+++ b/src/blenderbim/blenderbim/bim/module/clash/operator.py
@@ -23,7 +23,7 @@ class ExportClashSets(bpy.types.Operator):
def execute(self, context):
self.filepath = bpy.path.ensure_ext(self.filepath, ".json")
clash_sets = []
- for clash_set in bpy.context.scene.BIMClashProperties.clash_sets:
+ for clash_set in context.scene.BIMClashProperties.clash_sets:
self.a = []
self.b = []
for ab in ["a", "b"]:
@@ -56,7 +56,7 @@ class ImportClashSets(bpy.types.Operator):
with open(self.filepath) as f:
clash_sets = json.load(f)
for clash_set in clash_sets:
- new = bpy.context.scene.BIMClashProperties.clash_sets.add()
+ new = context.scene.BIMClashProperties.clash_sets.add()
new.name = clash_set["name"]
new.tolerance = clash_set["tolerance"]
for clash_source in clash_set["a"]:
@@ -81,7 +81,7 @@ class AddClashSet(bpy.types.Operator):
bl_options = {"REGISTER", "UNDO"}
def execute(self, context):
- new = bpy.context.scene.BIMClashProperties.clash_sets.add()
+ new = context.scene.BIMClashProperties.clash_sets.add()
new.name = "New Clash Set"
new.tolerance = 0.01
return {"FINISHED"}
@@ -94,7 +94,7 @@ class RemoveClashSet(bpy.types.Operator):
index: bpy.props.IntProperty()
def execute(self, context):
- bpy.context.scene.BIMClashProperties.clash_sets.remove(self.index)
+ context.scene.BIMClashProperties.clash_sets.remove(self.index)
return {"FINISHED"}
@@ -105,7 +105,7 @@ class AddClashSource(bpy.types.Operator):
group: bpy.props.StringProperty()
def execute(self, context):
- clash_set = bpy.context.scene.BIMClashProperties.clash_sets[bpy.context.scene.BIMClashProperties.active_clash_set_index]
+ clash_set = context.scene.BIMClashProperties.clash_sets[context.scene.BIMClashProperties.active_clash_set_index]
source = getattr(clash_set, self.group).add()
return {"FINISHED"}
@@ -118,7 +118,7 @@ class RemoveClashSource(bpy.types.Operator):
group: bpy.props.StringProperty()
def execute(self, context):
- clash_set = bpy.context.scene.BIMClashProperties.clash_sets[bpy.context.scene.BIMClashProperties.active_clash_set_index]
+ clash_set = context.scene.BIMClashProperties.clash_sets[context.scene.BIMClashProperties.active_clash_set_index]
getattr(clash_set, self.group).remove(self.index)
return {"FINISHED"}
@@ -133,7 +133,7 @@ class SelectClashSource(bpy.types.Operator):
group: bpy.props.StringProperty()
def execute(self, context):
- clash_set = bpy.context.scene.BIMClashProperties.clash_sets[bpy.context.scene.BIMClashProperties.active_clash_set_index]
+ clash_set = context.scene.BIMClashProperties.clash_sets[context.scene.BIMClashProperties.active_clash_set_index]
getattr(clash_set, self.group)[self.index].name = self.filepath
return {"FINISHED"}
@@ -149,7 +149,7 @@ class SelectClashResults(bpy.types.Operator):
filepath: bpy.props.StringProperty(subtype="FILE_PATH")
def execute(self, context):
- bpy.context.scene.BIMClashProperties.clash_results_path = self.filepath
+ context.scene.BIMClashProperties.clash_results_path = self.filepath
return {"FINISHED"}
def invoke(self, context, event):
@@ -164,7 +164,7 @@ class SelectSmartGroupedClashesPath(bpy.types.Operator):
filepath: bpy.props.StringProperty(subtype="FILE_PATH")
def execute(self, context):
- bpy.context.scene.BIMClashProperties.smart_grouped_clashes_path = self.filepath
+ context.scene.BIMClashProperties.smart_grouped_clashes_path = self.filepath
return {"FINISHED"}
def invoke(self, context, event):
@@ -186,42 +186,42 @@ class ExecuteIfcClash(bpy.types.Operator):
return {"RUNNING_MODAL"}
def execute(self, context):
- import ifcclash
+ from ifcclash import ifcclash
- settings = ifcclash.IfcClashSettings()
+ settings = ifcclash.ClashSettings()
if ".json" not in self.filepath:
self.filepath = bpy.path.ensure_ext(self.filepath, ".bcf")
settings.output = self.filepath
settings.logger = logging.getLogger("Clash")
settings.logger.setLevel(logging.DEBUG)
- ifc_clasher = ifcclash.IfcClasher(settings)
+ clasher = ifcclash.Clasher(settings)
- if bpy.context.scene.BIMClashProperties.should_create_clash_snapshots:
+ if context.scene.BIMClashProperties.should_create_clash_snapshots:
- def get_viewpoint_snapshot(self, viewpoint, mat):
+ def get_viewpoint_snapshot(viewpoint, mat):
camera = bpy.data.objects.get("IFC Clash Camera")
if not camera:
camera = bpy.data.objects.new("IFC Clash Camera", bpy.data.cameras.new("IFC Clash Camera"))
- bpy.context.scene.collection.objects.link(camera)
+ context.scene.collection.objects.link(camera)
camera.matrix_world = Matrix(mat)
- bpy.context.scene.camera = camera
+ context.scene.camera = camera
camera.data.angle = radians(60)
- area = next(area for area in bpy.context.screen.areas if area.type == "VIEW_3D")
+ area = next(area for area in context.screen.areas if area.type == "VIEW_3D")
area.spaces[0].region_3d.view_perspective = "CAMERA"
area.spaces[0].shading.show_xray = True
- bpy.context.scene.render.resolution_x = 480
- bpy.context.scene.render.resolution_y = 270
- bpy.context.scene.render.image_settings.file_format = "PNG"
- bpy.context.scene.render.filepath = os.path.join(
- bpy.context.scene.BIMProperties.data_dir, "snapshot.png"
+ context.scene.render.resolution_x = 480
+ context.scene.render.resolution_y = 270
+ context.scene.render.image_settings.file_format = "PNG"
+ context.scene.render.filepath = os.path.join(
+ context.scene.BIMProperties.data_dir, "snapshot.png"
)
bpy.ops.render.opengl(write_still=True)
- return bpy.context.scene.render.filepath
+ return context.scene.render.filepath
- ifcclash.IfcClasher.get_viewpoint_snapshot = get_viewpoint_snapshot
+ clasher.get_viewpoint_snapshot = get_viewpoint_snapshot
- ifc_clasher.clash_sets = []
- for clash_set in bpy.context.scene.BIMClashProperties.clash_sets:
+ clasher.clash_sets = []
+ for clash_set in context.scene.BIMClashProperties.clash_sets:
self.a = []
self.b = []
for ab in ["a", "b"]:
@@ -231,11 +231,12 @@ class ExecuteIfcClash(bpy.types.Operator):
clash_source["selector"] = data.selector
clash_source["mode"] = data.mode
getattr(self, ab).append(clash_source)
- ifc_clasher.clash_sets.append(
- {"name": clash_set.name, "tolerance": clash_set.tolerance, "a": self.a, "b": self.b}
- )
- ifc_clasher.clash()
- ifc_clasher.export()
+ clash_set_data = {"name": clash_set.name, "tolerance": clash_set.tolerance, "a": self.a}
+ if self.b:
+ clash_set_data["b"] = self.b
+ clasher.clash_sets.append(clash_set_data)
+ clasher.clash()
+ clasher.export()
return {"FINISHED"}
@@ -256,8 +257,8 @@ class SelectIfcClashResults(bpy.types.Operator):
self.filepath = bpy.path.ensure_ext(self.filepath, ".json")
with open(self.filepath) as f:
clash_sets = json.load(f)
- clash_set_name = bpy.context.scene.BIMClashProperties.clash_sets[
- bpy.context.scene.BIMClashProperties.active_clash_set_index
+ clash_set_name = context.scene.BIMClashProperties.clash_sets[
+ context.scene.BIMClashProperties.active_clash_set_index
].name
global_ids = []
for clash_set in clash_sets:
@@ -268,7 +269,7 @@ class SelectIfcClashResults(bpy.types.Operator):
return {"CANCELLED"}
for clash in clash_set["clashes"].values():
global_ids.extend([clash["a_global_id"], clash["b_global_id"]])
- for obj in bpy.context.visible_objects:
+ for obj in context.visible_objects:
if not obj.BIMObjectProperties.ifc_definition_id:
continue
element = self.file.by_id(obj.BIMObjectProperties.ifc_definition_id)
@@ -287,7 +288,7 @@ class SmartClashGroup(bpy.types.Operator):
import ifcclash
settings = ifcclash.IfcClashSettings()
- self.filepath = bpy.path.ensure_ext(bpy.context.scene.BIMClashProperties.clash_results_path, ".json")
+ self.filepath = bpy.path.ensure_ext(context.scene.BIMClashProperties.clash_results_path, ".json")
settings.output = self.filepath
settings.logger = logging.getLogger("Clash")
settings.logger.setLevel(logging.DEBUG)
@@ -297,21 +298,21 @@ class SmartClashGroup(bpy.types.Operator):
clash_sets = json.load(f)
# execute the smart grouping
- save_path = bpy.path.ensure_ext(bpy.context.scene.BIMClashProperties.smart_grouped_clashes_path, ".json")
+ save_path = bpy.path.ensure_ext(context.scene.BIMClashProperties.smart_grouped_clashes_path, ".json")
smart_grouped_clashes = ifc_clasher.smart_group_clashes(
- clash_sets, bpy.context.scene.BIMClashProperties.smart_clash_grouping_max_distance
+ clash_sets, context.scene.BIMClashProperties.smart_clash_grouping_max_distance
)
# save smart_groups to json
with open(save_path, "w") as f:
f.write(json.dumps(smart_grouped_clashes))
- clash_set_name = bpy.context.scene.BIMClashProperties.clash_sets[
- bpy.context.scene.BIMClashProperties.active_clash_set_index
+ clash_set_name = context.scene.BIMClashProperties.clash_sets[
+ context.scene.BIMClashProperties.active_clash_set_index
].name
# Reset the list of smart_clash_groups for the UI
- bpy.context.scene.BIMClashProperties.smart_clash_groups.clear()
+ context.scene.BIMClashProperties.smart_clash_groups.clear()
for clash_set, smart_groups in smart_grouped_clashes.items():
# Only select the clashes that correspond to the actively selected IFC Clash Set
@@ -319,7 +320,7 @@ class SmartClashGroup(bpy.types.Operator):
continue
else:
for smart_group, global_id_pairs in smart_groups[0].items():
- new_group = bpy.context.scene.BIMClashProperties.smart_clash_groups.add()
+ new_group = context.scene.BIMClashProperties.smart_clash_groups.add()
new_group.number = f"{smart_group}"
for pair in global_id_pairs:
@@ -336,17 +337,17 @@ class LoadSmartGroupsForActiveClashSet(bpy.types.Operator):
bl_options = {"REGISTER", "UNDO"}
def execute(self, context):
- smart_groups_path = bpy.path.ensure_ext(bpy.context.scene.BIMClashProperties.smart_grouped_clashes_path, ".json")
+ smart_groups_path = bpy.path.ensure_ext(context.scene.BIMClashProperties.smart_grouped_clashes_path, ".json")
- clash_set_name = bpy.context.scene.BIMClashProperties.clash_sets[
- bpy.context.scene.BIMClashProperties.active_clash_set_index
+ clash_set_name = context.scene.BIMClashProperties.clash_sets[
+ context.scene.BIMClashProperties.active_clash_set_index
].name
with open(smart_groups_path) as f:
smart_grouped_clashes = json.load(f)
# Reset the list of smart_clash_groups for the UI
- bpy.context.scene.BIMClashProperties.smart_clash_groups.clear()
+ context.scene.BIMClashProperties.smart_clash_groups.clear()
for clash_set, smart_groups in smart_grouped_clashes.items():
# Only select the clashes that correspond to the actively selected IFC Clash Set
@@ -354,7 +355,7 @@ class LoadSmartGroupsForActiveClashSet(bpy.types.Operator):
continue
else:
for smart_group, global_id_pairs in smart_groups[0].items():
- new_group = bpy.context.scene.BIMClashProperties.smart_clash_groups.add()
+ new_group = context.scene.BIMClashProperties.smart_clash_groups.add()
new_group.number = f"{smart_group}"
for pair in global_id_pairs:
for id in pair:
@@ -371,12 +372,12 @@ class SelectSmartGroup(bpy.types.Operator):
def execute(self, context):
# Select smart group in view
- selected_smart_group = bpy.context.scene.BIMClashProperties.smart_clash_groups[
- bpy.context.scene.BIMCLashProperties.active_smart_group_index
+ selected_smart_group = context.scene.BIMClashProperties.smart_clash_groups[
+ context.scene.BIMCLashProperties.active_smart_group_index
]
# print(selected_smart_group.number)
- for obj in bpy.context.visible_objects:
+ for obj in context.visible_objects:
if not obj.BIMObjectProperties.ifc_definition_id:
continue
element = self.file.by_id(obj.BIMObjectProperties.ifc_definition_id)
@@ -391,13 +392,13 @@ class SelectSmartGroup(bpy.types.Operator):
class BlenderClasher:
- def process_clash_set(self):
+ def process_clash_set(self, context):
import collision
a_cm = collision.CollisionManager()
b_cm = collision.CollisionManager()
- self.add_to_cm(a_cm, bpy.context.scene.BIMClashProperties.blender_clash_set_a)
- self.add_to_cm(b_cm, bpy.context.scene.BIMClashProperties.blender_clash_set_b)
+ self.add_to_cm(a_cm, context.scene.BIMClashProperties.blender_clash_set_a, context)
+ self.add_to_cm(b_cm, context.scene.BIMClashProperties.blender_clash_set_b, context)
results = a_cm.in_collision_other(b_cm, return_data=True)
if not results[0]:
print("No clashes")
@@ -410,20 +411,20 @@ class BlenderClasher:
print(contact.raw.normal)
print(contact.raw.pos)
- def add_to_cm(self, cm, object_names):
+ def add_to_cm(self, cm, object_names, context):
import ifcclash
for object_name in object_names:
name = object_name.name
obj = bpy.data.objects[name]
- triangulated_mesh = self.triangulate_mesh(obj)
+ triangulated_mesh = self.triangulate_mesh(obj, context)
mesh = ifcclash.Mesh()
mesh.vertices = np.array([tuple(obj.matrix_world @ v.co) for v in triangulated_mesh.vertices])
mesh.faces = np.array([tuple(p.vertices) for p in triangulated_mesh.polygons])
cm.add_object(name, mesh)
- def triangulate_mesh(self, obj):
- mesh = obj.evaluated_get(bpy.context.evaluated_depsgraph_get()).to_mesh()
+ def triangulate_mesh(self, obj, context):
+ mesh = obj.evaluated_get(context.evaluated_depsgraph_get()).to_mesh()
bm = bmesh.new()
bm.from_mesh(mesh)
bmesh.ops.triangulate(bm, faces=bm.faces)
@@ -439,10 +440,10 @@ class SetBlenderClashSetA(bpy.types.Operator):
bl_options = {"REGISTER", "UNDO"}
def execute(self, context):
- while len(bpy.context.scene.BIMClashProperties.blender_clash_set_a) > 0:
- bpy.context.scene.BIMClashProperties.blender_clash_set_a.remove(0)
- for obj in bpy.context.selected_objects:
- new = bpy.context.scene.BIMClashProperties.blender_clash_set_a.add()
+ while len(context.scene.BIMClashProperties.blender_clash_set_a) > 0:
+ context.scene.BIMClashProperties.blender_clash_set_a.remove(0)
+ for obj in context.selected_objects:
+ new = context.scene.BIMClashProperties.blender_clash_set_a.add()
new.name = obj.name
return {"FINISHED"}
@@ -453,10 +454,10 @@ class SetBlenderClashSetB(bpy.types.Operator):
bl_options = {"REGISTER", "UNDO"}
def execute(self, context):
- while len(bpy.context.scene.BIMClashProperties.blender_clash_set_b) > 0:
- bpy.context.scene.BIMClashProperties.blender_clash_set_b.remove(0)
- for obj in bpy.context.selected_objects:
- new = bpy.context.scene.BIMClashProperties.blender_clash_set_b.add()
+ while len(context.scene.BIMClashProperties.blender_clash_set_b) > 0:
+ context.scene.BIMClashProperties.blender_clash_set_b.remove(0)
+ for obj in context.selected_objects:
+ new = context.scene.BIMClashProperties.blender_clash_set_b.add()
new.name = obj.name
return {"FINISHED"}
@@ -467,5 +468,5 @@ class ExecuteBlenderClash(bpy.types.Operator):
def execute(self, context):
blender_clasher = BlenderClasher()
- blender_clasher.process_clash_set()
+ blender_clasher.process_clash_set(context)
return {"FINISHED"}
diff --git a/src/blenderbim/blenderbim/bim/module/clash/prop.py b/src/blenderbim/blenderbim/bim/module/clash/prop.py
index ba685b64d3..8dcb14594b 100644
--- a/src/blenderbim/blenderbim/bim/module/clash/prop.py
+++ b/src/blenderbim/blenderbim/bim/module/clash/prop.py
@@ -41,7 +41,7 @@ class BIMClashProperties(PropertyGroup):
blender_clash_set_a: CollectionProperty(name="Blender Clash Set A", type=StrProperty)
blender_clash_set_b: CollectionProperty(name="Blender Clash Set B", type=StrProperty)
clash_sets: CollectionProperty(name="Clash Sets", type=ClashSet)
- should_create_clash_snapshots: BoolProperty(name="Create Snapshots", default=True)
+ should_create_clash_snapshots: BoolProperty(name="Create Snapshots", default=False)
clash_results_path: StringProperty(name="Clash Results Path")
smart_grouped_clashes_path: StringProperty(name="Smart Grouped Clashes Path")
active_clash_set_index: IntProperty(name="Active Clash Set Index")
diff --git a/src/blenderbim/blenderbim/bim/module/classification/operator.py b/src/blenderbim/blenderbim/bim/module/classification/operator.py
index 55c5b4d9b6..7603b09d04 100644
--- a/src/blenderbim/blenderbim/bim/module/classification/operator.py
+++ b/src/blenderbim/blenderbim/bim/module/classification/operator.py
@@ -133,7 +133,7 @@ class EnableEditingClassificationReference(bpy.types.Operator):
obj: bpy.props.StringProperty()
def execute(self, context):
- obj = bpy.data.objects.get(self.obj) if self.obj else bpy.context.active_object
+ obj = bpy.data.objects.get(self.obj) if self.obj else context.active_object
props = obj.BIMClassificationReferenceProperties
while len(props.reference_attributes) > 0:
props.reference_attributes.remove(0)
@@ -157,7 +157,7 @@ class DisableEditingClassificationReference(bpy.types.Operator):
obj: bpy.props.StringProperty()
def execute(self, context):
- obj = bpy.data.objects.get(self.obj) if self.obj else bpy.context.active_object
+ obj = bpy.data.objects.get(self.obj) if self.obj else context.active_object
obj.BIMClassificationReferenceProperties.active_reference_id = 0
return {"FINISHED"}
@@ -173,7 +173,7 @@ class RemoveClassificationReference(bpy.types.Operator):
return IfcStore.execute_ifc_operator(self, context)
def _execute(self, context):
- obj = bpy.data.objects.get(self.obj) if self.obj else bpy.context.active_object
+ obj = bpy.data.objects.get(self.obj) if self.obj else context.active_object
self.file = IfcStore.get_file()
ifcopenshell.api.run(
"classification.remove_reference",
@@ -198,7 +198,7 @@ class EditClassificationReference(bpy.types.Operator):
return IfcStore.execute_ifc_operator(self, context)
def _execute(self, context):
- obj = bpy.data.objects.get(self.obj) if self.obj else bpy.context.active_object
+ obj = bpy.data.objects.get(self.obj) if self.obj else context.active_object
props = obj.BIMClassificationReferenceProperties
attributes = {}
for attribute in props.reference_attributes:
@@ -228,7 +228,7 @@ class AddClassificationReference(bpy.types.Operator):
return IfcStore.execute_ifc_operator(self, context)
def _execute(self, context):
- obj = bpy.data.objects.get(self.obj) if self.obj else bpy.context.active_object
+ obj = bpy.data.objects.get(self.obj) if self.obj else context.active_object
self.file = IfcStore.get_file()
classification = None
diff --git a/src/blenderbim/blenderbim/bim/module/classification/ui.py b/src/blenderbim/blenderbim/bim/module/classification/ui.py
index 032a7cd022..efcdc6c42e 100644
--- a/src/blenderbim/blenderbim/bim/module/classification/ui.py
+++ b/src/blenderbim/blenderbim/bim/module/classification/ui.py
@@ -41,7 +41,7 @@ class BIM_PT_classifications(Panel):
row = self.layout.row(align=True)
row.prop(self.props.classification_attributes.get("Name"), "string_value", text="", icon="ASSET_MANAGER")
row.operator("bim.edit_classification", text="", icon="CHECKMARK")
- row.operator("bim.disable_editing_classification", text="", icon="X")
+ row.operator("bim.disable_editing_classification", text="", icon="CANCEL")
for attribute in self.props.classification_attributes:
if attribute.name == "Name":
diff --git a/src/blenderbim/blenderbim/bim/module/cobie/operator.py b/src/blenderbim/blenderbim/bim/module/cobie/operator.py
index ccda8add22..6d8221189a 100644
--- a/src/blenderbim/blenderbim/bim/module/cobie/operator.py
+++ b/src/blenderbim/blenderbim/bim/module/cobie/operator.py
@@ -15,7 +15,7 @@ class SelectCobieIfcFile(bpy.types.Operator):
filepath: bpy.props.StringProperty(subtype="FILE_PATH")
def execute(self, context):
- bpy.context.scene.COBieProperties.cobie_ifc_file = self.filepath
+ context.scene.COBieProperties.cobie_ifc_file = self.filepath
return {"FINISHED"}
def invoke(self, context, event):
@@ -30,7 +30,7 @@ class SelectCobieJsonFile(bpy.types.Operator):
filepath: bpy.props.StringProperty(subtype="FILE_PATH")
def execute(self, context):
- bpy.context.scene.COBieProperties.cobie_json_file = self.filepath
+ context.scene.COBieProperties.cobie_json_file = self.filepath
return {"FINISHED"}
def invoke(self, context, event):
@@ -45,7 +45,7 @@ class ExecuteIfcCobie(bpy.types.Operator):
def execute(self, context):
from cobie import IfcCobieParser
- props = bpy.context.scene.COBieProperties
+ props = context.scene.COBieProperties
output_dir = os.path.dirname(props.cobie_ifc_file)
diff --git a/src/blenderbim/blenderbim/bim/module/context/operator.py b/src/blenderbim/blenderbim/bim/module/context/operator.py
index 11096912d1..9936e1787c 100644
--- a/src/blenderbim/blenderbim/bim/module/context/operator.py
+++ b/src/blenderbim/blenderbim/bim/module/context/operator.py
@@ -21,9 +21,9 @@ class AddSubcontext(bpy.types.Operator):
"context.add_context",
self.file,
**{
- "context": self.context or bpy.context.scene.BIMProperties.available_contexts,
- "subcontext": self.subcontext or bpy.context.scene.BIMProperties.available_subcontexts,
- "target_view": self.target_view or bpy.context.scene.BIMProperties.available_target_views,
+ "context": self.context or context.scene.BIMProperties.available_contexts,
+ "subcontext": self.subcontext or context.scene.BIMProperties.available_subcontexts,
+ "target_view": self.target_view or context.scene.BIMProperties.available_target_views,
},
)
Data.load(IfcStore.get_file())
diff --git a/src/blenderbim/blenderbim/bim/module/cost/__init__.py b/src/blenderbim/blenderbim/bim/module/cost/__init__.py
index 5a5abd7578..1c9bd13b03 100644
--- a/src/blenderbim/blenderbim/bim/module/cost/__init__.py
+++ b/src/blenderbim/blenderbim/bim/module/cost/__init__.py
@@ -19,6 +19,8 @@ classes = (
operator.DisableEditingCostSchedule,
operator.DisableEditingCostItemQuantity,
operator.DisableEditingCostItemValue,
+ operator.AddCostColumn,
+ operator.RemoveCostColumn,
operator.AddCostItem,
operator.AddSummaryCostItem,
operator.ExpandCostItem,
@@ -33,16 +35,24 @@ classes = (
operator.CopyCostItemValues,
operator.SelectCostItemProducts,
operator.SelectCostScheduleProducts,
+ operator.ImportCostScheduleCsv,
prop.CostItem,
prop.BIMCostProperties,
ui.BIM_PT_cost_schedules,
ui.BIM_UL_cost_items,
+ ui.BIM_UL_cost_columns,
)
+def menu_func_import(self, context):
+ self.layout.operator(operator.ImportCostScheduleCsv.bl_idname, text="Cost Schedule (.csv)")
+
+
def register():
bpy.types.Scene.BIMCostProperties = bpy.props.PointerProperty(type=prop.BIMCostProperties)
+ bpy.types.TOPBAR_MT_file_import.append(menu_func_import)
def unregister():
del bpy.types.Scene.BIMCostProperties
+ bpy.types.TOPBAR_MT_file_import.remove(menu_func_import)
diff --git a/src/blenderbim/blenderbim/bim/module/cost/operator.py b/src/blenderbim/blenderbim/bim/module/cost/operator.py
index 9eecfc3b43..f6da24010d 100644
--- a/src/blenderbim/blenderbim/bim/module/cost/operator.py
+++ b/src/blenderbim/blenderbim/bim/module/cost/operator.py
@@ -1,10 +1,12 @@
import os
import bpy
import json
+import time
import ifcopenshell.api
import blenderbim.bim.helper
from blenderbim.bim.module.cost.prop import purge
from blenderbim.bim.ifc import IfcStore
+from bpy_extras.io_utils import ImportHelper
from ifcopenshell.api.cost.data import Data
@@ -307,7 +309,7 @@ class AssignCostItemProduct(bpy.types.Operator):
def _execute(self, context):
related_objects = (
- [bpy.data.objects.get(self.related_object)] if self.related_object else bpy.context.selected_objects
+ [bpy.data.objects.get(self.related_object)] if self.related_object else context.selected_objects
)
self.file = IfcStore.get_file()
ifcopenshell.api.run(
@@ -336,7 +338,7 @@ class UnassignCostItemProduct(bpy.types.Operator):
def _execute(self, context):
related_objects = (
- [bpy.data.objects.get(self.related_object)] if self.related_object else bpy.context.selected_objects
+ [bpy.data.objects.get(self.related_object)] if self.related_object else context.selected_objects
)
self.file = IfcStore.get_file()
ifcopenshell.api.run(
@@ -420,7 +422,7 @@ class AddCostItemQuantity(bpy.types.Operator):
class RemoveCostItemQuantity(bpy.types.Operator):
bl_idname = "bim.remove_cost_item_quantity"
- bl_label = "Add Cost Item Quantity"
+ bl_label = "Remove Cost Item Quantity"
bl_options = {"REGISTER", "UNDO"}
cost_item: bpy.props.IntProperty()
physical_quantity: bpy.props.IntProperty()
@@ -621,7 +623,7 @@ class SelectCostItemProducts(bpy.types.Operator):
def execute(self, context):
self.file = IfcStore.get_file()
related_products = Data.cost_items[self.cost_item]["Controls"]
- for obj in bpy.context.visible_objects:
+ for obj in context.visible_objects:
obj.select_set(False)
if obj.BIMObjectProperties.ifc_definition_id in related_products:
obj.select_set(True)
@@ -640,7 +642,7 @@ class SelectCostScheduleProducts(bpy.types.Operator):
for cost_item_id in Data.cost_schedules[self.cost_schedule]["Controls"]:
self.get_related_products(Data.cost_items[cost_item_id])
self.related_products = set(self.related_products)
- for obj in bpy.context.visible_objects:
+ for obj in context.visible_objects:
obj.select_set(False)
if obj.BIMObjectProperties.ifc_definition_id in self.related_products:
obj.select_set(True)
@@ -650,3 +652,53 @@ class SelectCostScheduleProducts(bpy.types.Operator):
self.related_products.extend(cost_item["Controls"])
for child_id in cost_item["IsNestedBy"]:
self.get_related_products(Data.cost_items[child_id])
+
+
+class ImportCostScheduleCsv(bpy.types.Operator, ImportHelper):
+ bl_idname = "import_cost_schedule_csv.bim"
+ bl_label = "Import Cost Schedule CSV"
+ bl_options = {"REGISTER", "UNDO"}
+ filename_ext = ".csv"
+ filter_glob: bpy.props.StringProperty(default="*.csv", options={"HIDDEN"})
+
+ def execute(self, context):
+ from ifc5d.csv2ifc import Csv2Ifc
+
+ self.file = IfcStore.get_file()
+ start = time.time()
+ csv2ifc = Csv2Ifc()
+ csv2ifc.csv = self.filepath
+ csv2ifc.file = self.file
+ csv2ifc.execute()
+ Data.load(IfcStore.get_file())
+ print("Import finished in {:.2f} seconds".format(time.time() - start))
+ return {"FINISHED"}
+
+
+class AddCostColumn(bpy.types.Operator):
+ bl_idname = "bim.add_cost_column"
+ bl_label = "Add Cost Column"
+ bl_options = {"REGISTER", "UNDO"}
+ name: bpy.props.StringProperty()
+
+ def execute(self, context):
+ self.props = context.scene.BIMCostProperties
+ new = self.props.columns.add()
+ new.name = self.name
+ Data.set_categories([c.name for c in self.props.columns])
+ Data.load(IfcStore.get_file())
+ return {"FINISHED"}
+
+
+class RemoveCostColumn(bpy.types.Operator):
+ bl_idname = "bim.remove_cost_column"
+ bl_label = "Remove Cost Column"
+ bl_options = {"REGISTER", "UNDO"}
+ name: bpy.props.StringProperty()
+
+ def execute(self, context):
+ self.props = context.scene.BIMCostProperties
+ self.props.columns.remove(self.props.columns.find(self.name))
+ Data.set_categories([c.name for c in self.props.columns])
+ Data.load(IfcStore.get_file())
+ return {"FINISHED"}
diff --git a/src/blenderbim/blenderbim/bim/module/cost/prop.py b/src/blenderbim/blenderbim/bim/module/cost/prop.py
index 16c48c736c..98936463f9 100644
--- a/src/blenderbim/blenderbim/bim/module/cost/prop.py
+++ b/src/blenderbim/blenderbim/bim/module/cost/prop.py
@@ -84,7 +84,7 @@ class BIMCostProperties(PropertyGroup):
cost_schedule_attributes: CollectionProperty(name="Cost Schedule Attributes", type=Attribute)
is_editing: StringProperty(name="Is Editing")
active_cost_schedule_id: IntProperty(name="Active Cost Schedule Id")
- cost_items: CollectionProperty(name="Work Calendar", type=CostItem)
+ cost_items: CollectionProperty(name="Cost Items", type=CostItem)
active_cost_item_id: IntProperty(name="Active Cost Id")
cost_item_editing_type: StringProperty(name="Cost Item Editing Type")
active_cost_item_index: IntProperty(name="Active Cost Item Index")
@@ -105,3 +105,7 @@ class BIMCostProperties(PropertyGroup):
cost_category: StringProperty(name="Cost Category")
active_cost_item_value_id: IntProperty(name="Active Cost Item Value Id")
cost_value_attributes: CollectionProperty(name="Cost Value Attributes", type=Attribute)
+ cost_column: StringProperty(name="Cost Column")
+ should_show_column_ui: BoolProperty(name="Should Show Column UI", default=False)
+ columns: CollectionProperty(name="Columns", type=StrProperty)
+ active_column_index: IntProperty(name="Active Column Index")
diff --git a/src/blenderbim/blenderbim/bim/module/cost/ui.py b/src/blenderbim/blenderbim/bim/module/cost/ui.py
index a2a0a0d3c8..658a387b47 100644
--- a/src/blenderbim/blenderbim/bim/module/cost/ui.py
+++ b/src/blenderbim/blenderbim/bim/module/cost/ui.py
@@ -13,7 +13,8 @@ class BIM_PT_cost_schedules(Panel):
@classmethod
def poll(cls, context):
- return IfcStore.get_file()
+ file = IfcStore.get_file()
+ return file and hasattr(file, "schema") and file.schema != "IFC2X3"
def draw(self, context):
self.props = context.scene.BIMCostProperties
@@ -34,6 +35,7 @@ class BIM_PT_cost_schedules(Panel):
if self.props.active_cost_schedule_id and self.props.active_cost_schedule_id == cost_schedule_id:
op = row.operator("bim.select_cost_schedule_products", icon="RESTRICT_SELECT_OFF", text="")
op.cost_schedule = cost_schedule_id
+ row.prop(self.props, "should_show_column_ui", text="", icon="SHORTDISPLAY")
if self.props.is_editing == "COST_SCHEDULE":
row.operator("bim.edit_cost_schedule", text="", icon="CHECKMARK")
elif self.props.is_editing == "COST_ITEMS":
@@ -52,8 +54,16 @@ class BIM_PT_cost_schedules(Panel):
if self.props.is_editing == "COST_SCHEDULE":
self.draw_editable_cost_schedule_ui()
elif self.props.is_editing == "COST_ITEMS":
+ if self.props.should_show_column_ui:
+ self.draw_column_ui()
self.draw_editable_cost_item_ui(cost_schedule_id)
+ def draw_column_ui(self):
+ row = self.layout.row(align=True)
+ row.prop(self.props, "cost_column", text="")
+ row.operator("bim.add_cost_column", text="", icon="ADD").name = self.props.cost_column
+ self.layout.template_list("BIM_UL_cost_columns", "", self.props, "columns", self.props, "active_column_index")
+
def draw_editable_cost_schedule_ui(self):
for attribute in self.props.cost_schedule_attributes:
row = self.layout.row(align=True)
@@ -164,7 +174,6 @@ class BIM_PT_cost_schedules(Panel):
box = self.layout.box()
self.draw_editable_cost_value_ui(box, Data.cost_values[self.props.active_cost_item_value_id])
-
def draw_readonly_cost_value_ui(self, layout, cost_value_id):
cost_value = Data.cost_values[cost_value_id]
cost_value_label = "{0:.2f}".format(cost_value["AppliedValue"])
@@ -235,7 +244,6 @@ class BIM_PT_cost_schedules(Panel):
row.prop(attribute, "is_null", icon="RADIOBUT_OFF" if attribute.is_null else "RADIOBUT_ON", text="")
-
class BIM_UL_cost_items(UIList):
def draw_item(self, context, layout, data, item, icon, active_data, active_propname):
if item:
@@ -262,11 +270,15 @@ class BIM_UL_cost_items(UIList):
op = row.operator("bim.enable_editing_cost_item_quantities", text="", icon="PROPERTIES")
op.cost_item = item.ifc_definition_id
- row.label(text="{0:.2f}".format(cost_item["TotalCostQuantity"]) + " (M3)")
+ row.label(text="{0:.2f}".format(cost_item["TotalCostQuantity"]) + f" ({cost_item['UnitSymbol']})")
op = row.operator("bim.enable_editing_cost_item_values", text="", icon="DISC")
op.cost_item = item.ifc_definition_id
row.label(text="{0:.2f}".format(cost_item["TotalAppliedValue"]))
+
+ for column in props.columns:
+ row.label(text=str(cost_item["CategoryValues"].get(column.name, "-")))
+
row.label(text="{0:.2f}".format(cost_item["TotalCostValue"]), icon="CON_TRANSLIKE")
if context.active_object:
@@ -298,3 +310,12 @@ class BIM_UL_cost_items(UIList):
).cost_item = item.ifc_definition_id
row.operator("bim.add_cost_item", text="", icon="ADD").cost_item = item.ifc_definition_id
row.operator("bim.remove_cost_item", text="", icon="X").cost_item = item.ifc_definition_id
+
+
+class BIM_UL_cost_columns(UIList):
+ def draw_item(self, context, layout, data, item, icon, active_data, active_propname):
+ props = context.scene.BIMCostProperties
+ if item:
+ row = layout.row(align=True)
+ row.prop(item, "name", emboss=False, text="")
+ row.operator("bim.remove_cost_column", text="", icon="X").name = item.name
diff --git a/src/blenderbim/blenderbim/bim/module/covetool/operator.py b/src/blenderbim/blenderbim/bim/module/covetool/operator.py
index 11f0b5efa8..a1db49bdba 100644
--- a/src/blenderbim/blenderbim/bim/module/covetool/operator.py
+++ b/src/blenderbim/blenderbim/bim/module/covetool/operator.py
@@ -16,13 +16,13 @@ class Login(bpy.types.Operator):
bl_options = {"REGISTER", "UNDO"}
def execute(self, context):
- token = api.login(bpy.context.scene.CoveToolProperties.username, bpy.context.scene.CoveToolProperties.password)
+ token = api.login(context.scene.CoveToolProperties.username, context.scene.CoveToolProperties.password)
if token:
- bpy.context.scene.CoveToolProperties.token = token
+ context.scene.CoveToolProperties.token = token
projects = api.get_request("projects")
for project in projects:
- new_project = bpy.context.scene.CoveToolProperties.projects.add()
+ new_project = context.scene.CoveToolProperties.projects.add()
new_project.name = project["name"]
new_project.run_set = project["run_set"][0]
new_project.url = project["url"]
@@ -36,10 +36,10 @@ class RunSimpleAnalysis(bpy.types.Operator):
bl_label = "Run Simple Analysis"
def execute(self, context):
- simple_analysis = bpy.context.scene.CoveToolProperties.simple_analysis
+ simple_analysis = context.scene.CoveToolProperties.simple_analysis
data = {
- "run": bpy.context.scene.CoveToolProperties.projects[
- bpy.context.scene.CoveToolProperties.active_project_index
+ "run": context.scene.CoveToolProperties.projects[
+ context.scene.CoveToolProperties.active_project_index
].run_set,
"si_units": simple_analysis.si_units,
"building_height": simple_analysis.building_height,
@@ -84,10 +84,10 @@ class RunAnalysis(bpy.types.Operator):
"roofs": [],
"shading_devices": [],
}
- self.parse_objects()
+ self.parse_objects(context)
data = {
- "run": bpy.context.scene.CoveToolProperties.projects[
- bpy.context.scene.CoveToolProperties.active_project_index
+ "run": context.scene.CoveToolProperties.projects[
+ context.scene.CoveToolProperties.active_project_index
].run_set,
"source": "BlenderBIM",
"rotation_angle": self.get_rotation_angle(),
@@ -112,14 +112,14 @@ class RunAnalysis(bpy.types.Operator):
rotation = 360 - rotation
return rotation
- def parse_objects(self):
- for obj in bpy.context.visible_objects:
+ def parse_objects(self, context):
+ for obj in context.visible_objects:
covetool_category = self.get_covetool_category(obj)
if not covetool_category:
continue
if not self.has_triangulate_modifier(obj):
obj.modifiers.new(name="Triangulate", type="TRIANGULATE")
- mesh = obj.evaluated_get(bpy.context.evaluated_depsgraph_get()).to_mesh()
+ mesh = obj.evaluated_get(context.evaluated_depsgraph_get()).to_mesh()
meshes = {}
for polygon in mesh.polygons:
normal = "{}|{}|{}".format(
@@ -197,5 +197,4 @@ class RunAnalysis(bpy.types.Operator):
return True
def is_window_skylight(self, element):
- predefined_type = element.get_info().get("PredefinedType")
- return predefined_type and predefined_type.string_value == "SKYLIGHT"
+ return element.get_info().get("PredefinedType") == "SKYLIGHT"
diff --git a/src/blenderbim/blenderbim/bim/module/debug/__init__.py b/src/blenderbim/blenderbim/bim/module/debug/__init__.py
index e13cdf8acc..b5d7474567 100644
--- a/src/blenderbim/blenderbim/bim/module/debug/__init__.py
+++ b/src/blenderbim/blenderbim/bim/module/debug/__init__.py
@@ -3,6 +3,8 @@ from . import ui, prop, operator
classes = (
operator.PrintIfcFile,
+ operator.PurgeIfcLinks,
+ operator.PrintObjectPlacement,
operator.ValidateIfcFile,
operator.ProfileImportIFC,
operator.CreateAllShapes,
diff --git a/src/blenderbim/blenderbim/bim/module/debug/operator.py b/src/blenderbim/blenderbim/bim/module/debug/operator.py
index b9199db361..bcb196c9b4 100644
--- a/src/blenderbim/blenderbim/bim/module/debug/operator.py
+++ b/src/blenderbim/blenderbim/bim/module/debug/operator.py
@@ -1,6 +1,9 @@
import bpy
import logging
import ifcopenshell
+import ifcopenshell.util.placement
+import ifcopenshell.util.representation
+import blenderbim.bim.handler
import blenderbim.bim.import_ifc as import_ifc
from blenderbim.bim.ifc import IfcStore
@@ -9,15 +12,42 @@ class PrintIfcFile(bpy.types.Operator):
bl_idname = "bim.print_ifc_file"
bl_label = "Print IFC File"
+ @classmethod
+ def poll(cls, context):
+ return IfcStore.get_file()
+
def execute(self, context):
print(IfcStore.get_file().wrapped_data.to_string())
return {"FINISHED"}
+class PurgeIfcLinks(bpy.types.Operator):
+ bl_idname = "bim.purge_ifc_links"
+ bl_label = "Purge IFC Links"
+
+ def execute(self, context):
+ for obj in bpy.data.objects:
+ if obj.type in {"MESH", "EMPTY"}:
+ obj.BIMObjectProperties.ifc_definition_id = 0
+ if obj.data:
+ obj.data.BIMMeshProperties.ifc_definition_id = 0
+ for material in bpy.data.materials:
+ material.BIMMaterialProperties.ifc_style_id = False
+ context.scene.BIMProperties.ifc_file = ""
+ context.scene.BIMDebugProperties.attributes.clear()
+ IfcStore.purge()
+ blenderbim.bim.handler.purge_module_data()
+ return {"FINISHED"}
+
+
class ValidateIfcFile(bpy.types.Operator):
bl_idname = "bim.validate_ifc_file"
bl_label = "Validate IFC File"
+ @classmethod
+ def poll(cls, context):
+ return IfcStore.get_file()
+
def execute(self, context):
import ifcopenshell.validate
@@ -31,16 +61,18 @@ class ProfileImportIFC(bpy.types.Operator):
bl_idname = "bim.profile_import_ifc"
bl_label = "Profile Import IFC"
+ @classmethod
+ def poll(cls, context):
+ return IfcStore.get_file() and context.scene.BIMProperties.ifc_file
+
def execute(self, context):
import cProfile
import pstats
# For Windows
- filepath = bpy.context.scene.BIMProperties.ifc_file.replace('\\', '\\\\')
+ filepath = context.scene.BIMProperties.ifc_file.replace("\\", "\\\\")
- cProfile.run(
- f"import bpy; bpy.ops.import_ifc.bim(filepath='{filepath}')", "blender.prof"
- )
+ cProfile.run(f"import bpy; bpy.ops.import_ifc.bim(filepath='{filepath}')", "blender.prof")
p = pstats.Stats("blender.prof")
p.sort_stats("cumulative").print_stats(50)
return {"FINISHED"}
@@ -50,24 +82,28 @@ class CreateAllShapes(bpy.types.Operator):
bl_idname = "bim.create_all_shapes"
bl_label = "Create All Shapes"
+ @classmethod
+ def poll(cls, context):
+ return IfcStore.get_file()
+
def execute(self, context):
self.file = IfcStore.get_file()
elements = self.file.by_type("IfcElement") + self.file.by_type("IfcSpace")
total = len(elements)
settings = ifcopenshell.geom.settings()
failures = []
- excludes = () # For the developer to debug with
+ excludes = () # For the developer to debug with
for i, element in enumerate(elements):
if element.GlobalId in excludes:
continue
- print(f'{i}/{total}:', element)
+ print(f"{i}/{total}:", element)
try:
shape = ifcopenshell.geom.create_shape(settings, element)
print("Success", len(shape.geometry.verts), len(shape.geometry.edges), len(shape.geometry.faces))
except:
failures.append(element)
- print('***** FAILURE *****')
- print('Failures:')
+ print("***** FAILURE *****")
+ print("Failures:")
for failure in failures:
print(failure)
return {"FINISHED"}
@@ -77,23 +113,29 @@ class CreateShapeFromStepId(bpy.types.Operator):
bl_idname = "bim.create_shape_from_step_id"
bl_label = "Create Shape From STEP ID"
bl_options = {"REGISTER", "UNDO"}
+ should_include_curves: bpy.props.BoolProperty()
+
+ @classmethod
+ def poll(cls, context):
+ return IfcStore.get_file()
def execute(self, context):
return IfcStore.execute_ifc_operator(self, context)
def _execute(self, context):
logger = logging.getLogger("ImportIFC")
- self.ifc_import_settings = import_ifc.IfcImportSettings.factory(bpy.context, IfcStore.path, logger)
+ self.ifc_import_settings = import_ifc.IfcImportSettings.factory(context, IfcStore.path, logger)
self.file = IfcStore.get_file()
- element = self.file.by_id(int(bpy.context.scene.BIMDebugProperties.step_id))
+ element = self.file.by_id(int(context.scene.BIMDebugProperties.step_id))
settings = ifcopenshell.geom.settings()
- # settings.set(settings.INCLUDE_CURVES, True)
+ if self.should_include_curves:
+ settings.set(settings.INCLUDE_CURVES, True)
shape = ifcopenshell.geom.create_shape(settings, element)
ifc_importer = import_ifc.IfcImporter(self.ifc_import_settings)
ifc_importer.file = self.file
mesh = ifc_importer.create_mesh(element, shape)
obj = bpy.data.objects.new("Debug", mesh)
- bpy.context.scene.collection.objects.link(obj)
+ context.scene.collection.objects.link(obj)
return {"FINISHED"}
@@ -103,17 +145,9 @@ class SelectHighPolygonMeshes(bpy.types.Operator):
bl_options = {"REGISTER", "UNDO"}
def execute(self, context):
- results = {}
- for obj in bpy.data.objects:
- if not isinstance(obj.data, bpy.types.Mesh) or len(obj.data.polygons) < int(
- bpy.context.scene.BIMDebugProperties.number_of_polygons
- ):
- continue
- try:
- obj.select_set(True)
- except:
- # If it is not in the view layer
- pass
+ [o.select_set(True) for o in context.view_layer.objects
+ if o.type == 'MESH'
+ and len(o.data.polygons) > context.scene.BIMDebugProperties.number_of_polygons]
return {"FINISHED"}
@@ -122,7 +156,7 @@ class RewindInspector(bpy.types.Operator):
bl_label = "Rewind Inspector"
def execute(self, context):
- props = bpy.context.scene.BIMDebugProperties
+ props = context.scene.BIMDebugProperties
total_breadcrumbs = len(props.step_id_breadcrumb)
if total_breadcrumbs < 2:
return {"FINISHED"}
@@ -138,20 +172,24 @@ class InspectFromStepId(bpy.types.Operator):
bl_label = "Inspect From STEP ID"
step_id: bpy.props.IntProperty()
+ @classmethod
+ def poll(cls, context):
+ return IfcStore.get_file()
+
def execute(self, context):
self.file = IfcStore.get_file()
- bpy.context.scene.BIMDebugProperties.active_step_id = self.step_id
- crumb = bpy.context.scene.BIMDebugProperties.step_id_breadcrumb.add()
+ context.scene.BIMDebugProperties.active_step_id = self.step_id
+ crumb = context.scene.BIMDebugProperties.step_id_breadcrumb.add()
crumb.name = str(self.step_id)
element = self.file.by_id(self.step_id)
- while len(bpy.context.scene.BIMDebugProperties.attributes) > 0:
- bpy.context.scene.BIMDebugProperties.attributes.remove(0)
- while len(bpy.context.scene.BIMDebugProperties.inverse_attributes) > 0:
- bpy.context.scene.BIMDebugProperties.inverse_attributes.remove(0)
- while len(bpy.context.scene.BIMDebugProperties.inverse_references) > 0:
- bpy.context.scene.BIMDebugProperties.inverse_references.remove(0)
+ while len(context.scene.BIMDebugProperties.attributes) > 0:
+ context.scene.BIMDebugProperties.attributes.remove(0)
+ while len(context.scene.BIMDebugProperties.inverse_attributes) > 0:
+ context.scene.BIMDebugProperties.inverse_attributes.remove(0)
+ while len(context.scene.BIMDebugProperties.inverse_references) > 0:
+ context.scene.BIMDebugProperties.inverse_references.remove(0)
for key, value in element.get_info().items():
- self.add_attribute(bpy.context.scene.BIMDebugProperties.attributes, key, value)
+ self.add_attribute(context.scene.BIMDebugProperties.attributes, key, value)
for key in dir(element):
if (
not key[0].isalpha()
@@ -160,9 +198,9 @@ class InspectFromStepId(bpy.types.Operator):
or not getattr(element, key)
):
continue
- self.add_attribute(bpy.context.scene.BIMDebugProperties.inverse_attributes, key, getattr(element, key))
+ self.add_attribute(context.scene.BIMDebugProperties.inverse_attributes, key, getattr(element, key))
for inverse in self.file.get_inverse(element):
- new = bpy.context.scene.BIMDebugProperties.inverse_references.add()
+ new = context.scene.BIMDebugProperties.inverse_references.add()
new.string_value = str(inverse)
new.int_value = inverse.id()
return {"FINISHED"}
@@ -186,8 +224,18 @@ class InspectFromObject(bpy.types.Operator):
bl_label = "Inspect From Object"
def execute(self, context):
- ifc_definition_id = bpy.context.active_object.BIMObjectProperties.ifc_definition_id
+ ifc_definition_id = context.active_object.BIMObjectProperties.ifc_definition_id
if not ifc_definition_id:
return {"FINISHED"}
bpy.ops.bim.inspect_from_step_id(step_id=ifc_definition_id)
return {"FINISHED"}
+
+
+class PrintObjectPlacement(bpy.types.Operator):
+ bl_idname = "bim.print_object_placement"
+ bl_label = "Print Object Placement"
+ step_id: bpy.props.IntProperty()
+
+ def execute(self, context):
+ print(ifcopenshell.util.placement.get_local_placement(IfcStore.get_file().by_id(self.step_id)))
+ return {"FINISHED"}
diff --git a/src/blenderbim/blenderbim/bim/module/debug/prop.py b/src/blenderbim/blenderbim/bim/module/debug/prop.py
index cc1ef6213c..d7b6868eeb 100644
--- a/src/blenderbim/blenderbim/bim/module/debug/prop.py
+++ b/src/blenderbim/blenderbim/bim/module/debug/prop.py
@@ -14,7 +14,7 @@ from bpy.props import (
class BIMDebugProperties(PropertyGroup):
step_id: IntProperty(name="STEP ID")
- number_of_polygons: IntProperty(name="Number of Polygons")
+ number_of_polygons: IntProperty(name="Number of Polygons", min=0)
active_step_id: IntProperty(name="STEP ID")
step_id_breadcrumb: CollectionProperty(name="STEP ID Breadcrumb", type=StrProperty)
attributes: CollectionProperty(name="Attributes", type=Attribute)
diff --git a/src/blenderbim/blenderbim/bim/module/debug/ui.py b/src/blenderbim/blenderbim/bim/module/debug/ui.py
index 5519f6dd86..7575fa4f7b 100644
--- a/src/blenderbim/blenderbim/bim/module/debug/ui.py
+++ b/src/blenderbim/blenderbim/bim/module/debug/ui.py
@@ -23,21 +23,23 @@ class BIM_PT_debug(Panel):
row = layout.row()
row.operator("bim.print_ifc_file")
+ row = layout.row()
+ row.operator("bim.purge_ifc_links")
+
row = layout.row()
row.operator("bim.create_all_shapes")
row = layout.row()
row.operator("bim.profile_import_ifc")
- row = layout.row()
+ row = layout.split(factor=0.5, align=True)
+ row.operator("bim.create_shape_from_step_id").should_include_curves = False
+ row.operator("bim.create_shape_from_step_id", text="", icon="IPO_ELASTIC").should_include_curves = True
row.prop(props, "step_id", text="")
- row = layout.row()
- row.operator("bim.create_shape_from_step_id")
- row = layout.row()
- row.prop(props, "number_of_polygons", text="")
- row = layout.row()
+ row = layout.split(factor=0.7, align=True)
row.operator("bim.select_high_polygon_meshes")
+ row.prop(props, "number_of_polygons", text="")
layout.label(text="Inspector:")
@@ -46,7 +48,7 @@ class BIM_PT_debug(Panel):
row.operator("bim.rewind_inspector", icon="FRAME_PREV", text="")
row.prop(props, "active_step_id", text="")
row = layout.row(align=True)
- row.operator("bim.inspect_from_step_id").step_id = bpy.context.scene.BIMDebugProperties.active_step_id
+ row.operator("bim.inspect_from_step_id").step_id = context.scene.BIMDebugProperties.active_step_id
row.operator("bim.inspect_from_object")
if props.attributes:
@@ -59,6 +61,9 @@ class BIM_PT_debug(Panel):
if attribute.name == "GlobalId":
op = row.operator("bim.select_global_id", icon="RESTRICT_SELECT_OFF", text="")
op.global_id = attribute.string_value
+ if attribute.name == "ObjectPlacement":
+ op = row.operator("bim.print_object_placement", icon="TRACKER", text="")
+ op.step_id = attribute.int_value
if attribute.int_value:
row.operator(
"bim.inspect_from_step_id", icon="DISCLOSURE_TRI_RIGHT", text=""
diff --git a/src/blenderbim/blenderbim/bim/module/diff/operator.py b/src/blenderbim/blenderbim/bim/module/diff/operator.py
index 811622eb3c..6054df59b8 100644
--- a/src/blenderbim/blenderbim/bim/module/diff/operator.py
+++ b/src/blenderbim/blenderbim/bim/module/diff/operator.py
@@ -13,7 +13,7 @@ class SelectDiffJsonFile(bpy.types.Operator):
filepath: bpy.props.StringProperty(subtype="FILE_PATH")
def execute(self, context):
- bpy.context.scene.DiffProperties.diff_json_file = self.filepath
+ context.scene.DiffProperties.diff_json_file = self.filepath
return {"FINISHED"}
def invoke(self, context, event):
@@ -29,20 +29,20 @@ class VisualiseDiff(bpy.types.Operator):
def execute(self, context):
#ifc_file = IfcStore.get_file() # In case we get from Store
ifc_file = ifcopenshell.open(context.scene.DiffProperties.diff_new_file) # for Now refer to the new file
- with open(bpy.context.scene.DiffProperties.diff_json_file, "r") as file:
+ with open(context.scene.DiffProperties.diff_json_file, "r") as file:
diff = json.load(file)
- for obj in bpy.context.visible_objects:
+ for obj in context.visible_objects:
obj.color = (1.0, 1.0, 1.0, 0.2)
global_id = ifc_file.by_id(obj.BIMObjectProperties.ifc_definition_id).GlobalId
if not global_id:
continue
- if global_id.string_value in diff["deleted"]:
+ if global_id in diff["deleted"]:
obj.color = (1.0, 0.0, 0.0, 0.2)
- elif global_id.string_value in diff["added"]:
+ elif global_id in diff["added"]:
obj.color = (0.0, 1.0, 0.0, 0.2)
- elif global_id.string_value in diff["changed"]:
+ elif global_id in diff["changed"]:
obj.color = (0.0, 0.0, 1.0, 0.2)
- area = next(area for area in bpy.context.screen.areas if area.type == "VIEW_3D")
+ area = next(area for area in context.screen.areas if area.type == "VIEW_3D")
area.spaces[0].shading.color_type = "OBJECT"
return {"FINISHED"}
@@ -54,7 +54,7 @@ class SelectDiffOldFile(bpy.types.Operator):
filepath: bpy.props.StringProperty(subtype="FILE_PATH")
def execute(self, context):
- bpy.context.scene.DiffProperties.diff_old_file = self.filepath
+ context.scene.DiffProperties.diff_old_file = self.filepath
return {"FINISHED"}
def invoke(self, context, event):
@@ -69,7 +69,7 @@ class SelectDiffNewFile(bpy.types.Operator):
filepath: bpy.props.StringProperty(subtype="FILE_PATH")
def execute(self, context):
- bpy.context.scene.DiffProperties.diff_new_file = self.filepath
+ context.scene.DiffProperties.diff_new_file = self.filepath
return {"FINISHED"}
def invoke(self, context, event):
@@ -93,12 +93,12 @@ class ExecuteIfcDiff(bpy.types.Operator):
import ifcdiff
ifc_diff = ifcdiff.IfcDiff(
- bpy.context.scene.DiffProperties.diff_old_file,
- bpy.context.scene.DiffProperties.diff_new_file,
+ context.scene.DiffProperties.diff_old_file,
+ context.scene.DiffProperties.diff_new_file,
self.filepath,
- bpy.context.scene.DiffProperties.diff_relationships.split(),
+ context.scene.DiffProperties.diff_relationships.split(),
)
ifc_diff.diff()
ifc_diff.export()
- bpy.context.scene.DiffProperties.diff_json_file = self.filepath
+ context.scene.DiffProperties.diff_json_file = self.filepath
return {"FINISHED"}
diff --git a/src/blenderbim/blenderbim/bim/module/drawing/annotation.py b/src/blenderbim/blenderbim/bim/module/drawing/annotation.py
index 7853d424aa..d2dd4b0f7d 100644
--- a/src/blenderbim/blenderbim/bim/module/drawing/annotation.py
+++ b/src/blenderbim/blenderbim/bim/module/drawing/annotation.py
@@ -16,13 +16,13 @@ class Annotator:
return float(sizes[str(size)])
@staticmethod
- def add_text(related_element=None):
+ def add_text(context, related_element=None):
curve = bpy.data.curves.new(type="FONT", name="Text")
curve.body = "TEXT"
obj = bpy.data.objects.new("Text", curve)
- obj.matrix_world = bpy.context.scene.camera.matrix_world
+ obj.matrix_world = context.scene.camera.matrix_world
if related_element is None:
- location, _, _, _ = Annotator.get_placeholder_coords()
+ location, _, _, _ = Annotator.get_placeholder_coords(context)
else:
obj.data.BIMTextProperties.related_element = related_element
location = related_element.location
@@ -31,12 +31,12 @@ class Annotator:
font = bpy.data.fonts.get("OpenGost TypeB TT")
if not font:
font = bpy.data.fonts.load(
- os.path.join(bpy.context.scene.BIMProperties.data_dir, "fonts", "OpenGost Type B TT.ttf")
+ os.path.join(context.scene.BIMProperties.data_dir, "fonts", "OpenGost Type B TT.ttf")
)
font.name = "OpenGost Type B TT"
obj.data.font = font
obj.data.BIMTextProperties.font_size = "2.5"
- collection = bpy.context.scene.camera.users_collection[0]
+ collection = context.scene.camera.users_collection[0]
collection.objects.link(obj)
Annotator.resize_text(obj)
return obj
@@ -64,9 +64,9 @@ class Annotator:
text_obj.data.size = font_size
@staticmethod
- def add_line_to_annotation(obj, co1=None, co2=None):
+ def add_line_to_annotation(obj, context, co1=None, co2=None):
if co1 is None:
- co1, co2, _, _ = Annotator.get_placeholder_coords()
+ co1, co2, _, _ = Annotator.get_placeholder_coords(context)
co1 = obj.matrix_world.inverted() @ co1
co2 = obj.matrix_world.inverted() @ co2
if isinstance(obj.data, bpy.types.Mesh):
@@ -83,8 +83,8 @@ class Annotator:
return obj
@staticmethod
- def add_plane_to_annotation(obj):
- co1, co2, co3, co4 = Annotator.get_placeholder_coords()
+ def add_plane_to_annotation(obj, context):
+ co1, co2, co3, co4 = Annotator.get_placeholder_coords(context)
co1 = obj.matrix_world.inverted() @ co1 # bot left
co2 = obj.matrix_world.inverted() @ co2 # top left
co3 = obj.matrix_world.inverted() @ co3 # bot right
@@ -132,8 +132,8 @@ class Annotator:
return obj
@staticmethod
- def get_annotation_obj(name, data_type):
- collection = bpy.context.scene.camera.users_collection[0]
+ def get_annotation_obj(name, data_type, context):
+ collection = context.scene.camera.users_collection[0]
for obj in collection.objects:
if name in obj.name:
return obj
@@ -148,13 +148,13 @@ class Annotator:
return obj
@staticmethod
- def get_placeholder_coords():
- camera = bpy.context.scene.camera
+ def get_placeholder_coords(context):
+ camera = context.scene.camera
z_offset = camera.matrix_world.to_quaternion() @ Vector((0, 0, -1))
- if bpy.context.scene.render.resolution_x > bpy.context.scene.render.resolution_y:
+ if context.scene.render.resolution_x > context.scene.render.resolution_y:
y = (
camera.data.ortho_scale
- * (bpy.context.scene.render.resolution_y / bpy.context.scene.render.resolution_x)
+ * (context.scene.render.resolution_y / context.scene.render.resolution_x)
/ 4
)
else:
diff --git a/src/blenderbim/blenderbim/bim/module/drawing/operator.py b/src/blenderbim/blenderbim/bim/module/drawing/operator.py
index 2a55ce3c05..54181dff45 100644
--- a/src/blenderbim/blenderbim/bim/module/drawing/operator.py
+++ b/src/blenderbim/blenderbim/bim/module/drawing/operator.py
@@ -7,6 +7,9 @@ import bmesh
import shutil
import subprocess
import webbrowser
+import multiprocessing
+import ifcopenshell
+import ifcopenshell.geom
import ifcopenshell.util.selector
import ifcopenshell.util.representation
import blenderbim.bim.module.drawing.svgwriter as svgwriter
@@ -231,6 +234,39 @@ class CreateDrawing(bpy.types.Operator):
svg_path = os.path.join(context.scene.BIMProperties.data_dir, "cache", self.drawing_name + "-linework.svg")
if os.path.isfile(svg_path) and self.props.should_use_linework_cache:
return svg_path
+ # This is a work in progress. See #1153 and #1564.
+ # Switch from old to new if you are testing v0.7.0
+ self.generate_linework_old(context, svg_path)
+ # self.generate_linework_new(svg_path)
+ return svg_path
+
+ def generate_linework_new(self, svg_path):
+ settings = ifcopenshell.geom.settings(
+ APPLY_DEFAULT_MATERIALS=True,
+ DISABLE_TRIANGULATION=True,
+ INCLUDE_CURVES=True,
+ EXCLUDE_SOLIDS_AND_SURFACES=False,
+ )
+ buffer = ifcopenshell.geom.serializers.buffer()
+ serialiser = ifcopenshell.geom.serializers.svg(buffer, settings)
+ serialiser.setFile(self.file)
+ serialiser.setElevationRef("DRAWING")
+ serialiser.setUseNamespace(True)
+ serialiser.setAlwaysProject(True)
+ serialiser.setUseHlrPoly(True)
+ serialiser.setWithoutStoreys(True)
+ excluded_elements = []
+ for ifc_class in ["IfcSpace", "IfcOpeningElement", "IfcDoor", "IfcWindow"]:
+ excluded_elements += self.file.by_type(ifc_class)
+ for element in ifcopenshell.geom.iterate(
+ settings, self.file, multiprocessing.cpu_count(), exclude=excluded_elements
+ ):
+ serialiser.write(element)
+ serialiser.finalize()
+ with open(svg_path, "w") as svg:
+ svg.write(buffer.get_value())
+
+ def generate_linework_old(self, context, svg_path):
ifcconvert_path = os.path.join(cwd, "..", "..", "..", "libs", "IfcConvert")
subprocess.run(
[
@@ -431,7 +467,7 @@ class AddAnnotation(bpy.types.Operator):
return IfcStore.execute_ifc_operator(self, context)
def _execute(self, context):
- if not bpy.context.scene.camera:
+ if not context.scene.camera:
return {"FINISHED"}
subcontext = ifcopenshell.util.representation.get_context(
IfcStore.get_file(), "Plan", "Annotation", context.scene.camera.data.BIMCameraProperties.target_view
@@ -439,17 +475,17 @@ class AddAnnotation(bpy.types.Operator):
if not subcontext:
return {"FINISHED"}
if self.data_type == "text":
- if bpy.context.selected_objects:
- for selected_object in bpy.context.selected_objects:
- obj = annotation.Annotator.add_text(related_element=selected_object)
+ if context.selected_objects:
+ for selected_object in context.selected_objects:
+ obj = annotation.Annotator.add_text(context, related_element=selected_object)
else:
- obj = annotation.Annotator.add_text()
+ obj = annotation.Annotator.add_text(context)
else:
- obj = annotation.Annotator.get_annotation_obj(self.obj_name, self.data_type)
+ obj = annotation.Annotator.get_annotation_obj(self.obj_name, self.data_type, context)
if self.obj_name == "Break":
- obj = annotation.Annotator.add_plane_to_annotation(obj)
+ obj = annotation.Annotator.add_plane_to_annotation(obj, context)
else:
- obj = annotation.Annotator.add_line_to_annotation(obj)
+ obj = annotation.Annotator.add_line_to_annotation(obj, context)
if not obj.BIMObjectProperties.ifc_definition_id:
bpy.ops.bim.assign_class(obj=obj.name, ifc_class="IfcAnnotation", context_id=subcontext.id())
@@ -659,10 +695,10 @@ class GenerateReferences(bpy.types.Operator):
self.generate_grids()
if self.camera.data.BIMCameraProperties.target_view == "ELEVATION_VIEW":
self.generate_grids()
- self.generate_levels()
+ self.generate_levels(context)
if self.camera.data.BIMCameraProperties.target_view == "SECTION_VIEW":
self.generate_grids()
- self.generate_levels()
+ self.generate_levels(context)
return {"FINISHED"}
def filter_potential_references(self):
@@ -678,7 +714,7 @@ class GenerateReferences(bpy.types.Operator):
# TODO
pass
- def generate_levels(self):
+ def generate_levels(self, context):
if self.camera.data.BIMCameraProperties.raster_x > self.camera.data.BIMCameraProperties.raster_y:
width = self.camera.data.ortho_scale
height = (
@@ -689,7 +725,7 @@ class GenerateReferences(bpy.types.Operator):
width = (
height / self.camera.data.BIMCameraProperties.raster_y * self.camera.data.BIMCameraProperties.raster_x
)
- level_obj = annotation.Annotator.get_annotation_obj("Section Level", "curve")
+ level_obj = annotation.Annotator.get_annotation_obj("Section Level", "curve", context)
width_in_mm = width * 1000
if self.camera.data.BIMCameraProperties.diagram_scale == "CUSTOM":
@@ -706,7 +742,7 @@ class GenerateReferences(bpy.types.Operator):
projection = self.project_point_onto_camera(obj.location)
co1 = self.camera.matrix_world @ Vector((width / 2 - (offset_percentage * width), projection[1], -1))
co2 = self.camera.matrix_world @ Vector((-(width / 2), projection[1], -1))
- annotation.Annotator.add_line_to_annotation(level_obj, co1, co2)
+ annotation.Annotator.add_line_to_annotation(level_obj, context, co1, co2)
def project_point_onto_camera(self, point):
projection = self.camera.matrix_world.to_quaternion() @ Vector((0, 0, -1))
diff --git a/src/blenderbim/blenderbim/bim/module/drawing/svgwriter.py b/src/blenderbim/blenderbim/bim/module/drawing/svgwriter.py
index 45fb2c5fe2..c7f9ae1f22 100644
--- a/src/blenderbim/blenderbim/bim/module/drawing/svgwriter.py
+++ b/src/blenderbim/blenderbim/bim/module/drawing/svgwriter.py
@@ -28,7 +28,7 @@ class External(svgwrite.container.Group):
# Remove namespace
ns = u"{http://www.w3.org/2000/svg}"
nsl = len(ns)
- for elem in self.xml.getiterator():
+ for elem in self.xml.iter():
if elem.tag.startswith(ns):
elem.tag = elem.tag[nsl:]
@@ -85,19 +85,19 @@ class SvgWriter:
def add_markers(self):
tree = ET.parse(os.path.join(self.data_dir, "templates", "markers.svg"))
root = tree.getroot()
- for child in root.getchildren():
+ for child in root:
self.svg.defs.add(External(child))
def add_symbols(self):
tree = ET.parse(os.path.join(self.data_dir, "templates", "symbols.svg"))
root = tree.getroot()
- for child in root.getchildren():
+ for child in root:
self.svg.defs.add(External(child))
def add_patterns(self):
tree = ET.parse(os.path.join(self.data_dir, "templates", "patterns.svg"))
root = tree.getroot()
- for child in root.getchildren():
+ for child in root:
self.svg.defs.add(External(child))
def draw_background_image(self):
diff --git a/src/blenderbim/blenderbim/bim/module/drawing/ui.py b/src/blenderbim/blenderbim/bim/module/drawing/ui.py
index 81c04ed4cc..cd4212e926 100644
--- a/src/blenderbim/blenderbim/bim/module/drawing/ui.py
+++ b/src/blenderbim/blenderbim/bim/module/drawing/ui.py
@@ -24,7 +24,7 @@ class BIM_PT_camera(Panel):
return
layout.use_property_split = True
- dprops = bpy.context.scene.DocProperties
+ dprops = context.scene.DocProperties
props = context.active_object.data.BIMCameraProperties
col = layout.column(align=True)
@@ -92,7 +92,7 @@ class BIM_PT_drawing_underlay(Panel):
def draw(self, context):
layout = self.layout
layout.use_property_split = True
- dprops = bpy.context.scene.DocProperties
+ dprops = context.scene.DocProperties
props = context.active_object.data.BIMCameraProperties
row = layout.row(align=True)
@@ -142,7 +142,7 @@ class BIM_PT_drawings(Panel):
def draw(self, context):
layout = self.layout
layout.use_property_split = True
- props = bpy.context.scene.DocProperties
+ props = context.scene.DocProperties
row = layout.row(align=True)
row.operator("bim.add_drawing")
@@ -175,7 +175,7 @@ class BIM_PT_schedules(Panel):
def draw(self, context):
layout = self.layout
layout.use_property_split = True
- props = bpy.context.scene.DocProperties
+ props = context.scene.DocProperties
row = layout.row(align=True)
row.operator("bim.add_schedule")
@@ -200,7 +200,7 @@ class BIM_PT_sheets(Panel):
def draw(self, context):
layout = self.layout
- props = bpy.context.scene.DocProperties
+ props = context.scene.DocProperties
row = layout.row(align=True)
row.prop(props, "titleblock", text="")
@@ -315,7 +315,7 @@ class BIM_PT_annotation_utilities(Panel):
op.obj_name = "Misc"
op.data_type = "mesh"
- props = bpy.context.scene.DocProperties
+ props = context.scene.DocProperties
row = layout.row(align=True)
row.operator("bim.add_drawing")
diff --git a/src/blenderbim/blenderbim/bim/module/geometry/operator.py b/src/blenderbim/blenderbim/bim/module/geometry/operator.py
index fccaec2288..3d2be2b4d2 100644
--- a/src/blenderbim/blenderbim/bim/module/geometry/operator.py
+++ b/src/blenderbim/blenderbim/bim/module/geometry/operator.py
@@ -24,10 +24,10 @@ class EditObjectPlacement(bpy.types.Operator):
return IfcStore.execute_ifc_operator(self, context)
def _execute(self, context):
- objs = [bpy.data.objects.get(self.obj)] if self.obj else bpy.context.selected_objects
+ objs = [bpy.data.objects.get(self.obj)] if self.obj else context.selected_objects
self.file = IfcStore.get_file()
# TODO: determine how to deal with this module dependency
- props = bpy.context.scene.BIMGeoreferenceProperties
+ props = context.scene.BIMGeoreferenceProperties
for obj in objs:
if not obj.BIMObjectProperties.ifc_definition_id:
continue
@@ -69,7 +69,7 @@ class AddRepresentation(bpy.types.Operator):
return IfcStore.execute_ifc_operator(self, context)
def _execute(self, context):
- obj = bpy.data.objects.get(self.obj) if self.obj else bpy.context.active_object
+ obj = bpy.data.objects.get(self.obj) if self.obj else context.active_object
self.file = IfcStore.get_file()
bpy.ops.bim.edit_object_placement(obj=obj.name)
@@ -79,7 +79,7 @@ class AddRepresentation(bpy.types.Operator):
product = self.file.by_id(obj.BIMObjectProperties.ifc_definition_id)
- context_id = self.context_id or int(bpy.context.scene.BIMProperties.contexts)
+ context_id = self.context_id or int(context.scene.BIMProperties.contexts)
context_of_items = self.file.by_id(context_id)
gprop = context.scene.BIMGeoreferenceProperties
@@ -117,19 +117,20 @@ class AddRepresentation(bpy.types.Operator):
if s.material and not s.material.BIMMaterialProperties.ifc_style_id
]
- ifcopenshell.api.run(
- "style.assign_representation_styles",
- self.file,
- **{
- "shape_representation": result,
- "styles": [
- self.file.by_id(s.material.BIMMaterialProperties.ifc_style_id)
- for s in obj.material_slots
- if s.material
- ],
- "should_use_presentation_style_assignment": context.scene.BIMGeometryProperties.should_use_presentation_style_assignment,
- },
- )
+ if isinstance(obj.data, bpy.types.Mesh) and len(obj.data.polygons):
+ ifcopenshell.api.run(
+ "style.assign_representation_styles",
+ self.file,
+ **{
+ "shape_representation": result,
+ "styles": [
+ self.file.by_id(s.material.BIMMaterialProperties.ifc_style_id)
+ for s in obj.material_slots
+ if s.material
+ ],
+ "should_use_presentation_style_assignment": context.scene.BIMGeometryProperties.should_use_presentation_style_assignment,
+ },
+ )
ifcopenshell.api.run(
"geometry.assign_representation", self.file, **{"product": product, "representation": result}
)
@@ -160,9 +161,10 @@ class SwitchRepresentation(bpy.types.Operator):
ifc_definition_id: bpy.props.IntProperty()
should_reload: bpy.props.BoolProperty()
disable_opening_subtractions: bpy.props.BoolProperty()
+ should_switch_all_meshes: bpy.props.BoolProperty()
def execute(self, context):
- self.element_obj = bpy.data.objects.get(self.obj) if self.obj else bpy.context.active_object
+ self.element_obj = bpy.data.objects.get(self.obj) if self.obj else context.active_object
self.oprops = self.element_obj.BIMObjectProperties
self.file = IfcStore.get_file()
@@ -171,11 +173,17 @@ class SwitchRepresentation(bpy.types.Operator):
mesh = bpy.data.meshes.get(self.mesh_name)
if mesh:
- self.element_obj.data.user_remap(mesh)
+ self.switch_mesh(mesh)
if not mesh or self.should_reload:
- self.pull_mesh_from_ifc()
+ self.pull_mesh_from_ifc(context)
return {"FINISHED"}
+ def switch_mesh(self, mesh):
+ if self.should_switch_all_meshes or self.file.by_id(self.oprops.ifc_definition_id).is_a("IfcTypeProduct"):
+ self.element_obj.data.user_remap(mesh)
+ else:
+ self.element_obj.data = mesh
+
def get_mesh_name(self):
representation = self.resolve_mapped_representation(self.file.by_id(self.ifc_definition_id))
return "{}/{}".format(self.context_of_items.id(), representation.id())
@@ -185,9 +193,9 @@ class SwitchRepresentation(bpy.types.Operator):
return self.resolve_mapped_representation(representation.Items[0].MappingSource.MappedRepresentation)
return representation
- def pull_mesh_from_ifc(self):
+ def pull_mesh_from_ifc(self, context):
logger = logging.getLogger("ImportIFC")
- ifc_import_settings = import_ifc.IfcImportSettings.factory(bpy.context, IfcStore.path, logger)
+ ifc_import_settings = import_ifc.IfcImportSettings.factory(context, IfcStore.path, logger)
element = self.file.by_id(self.oprops.ifc_definition_id)
settings = ifcopenshell.geom.settings()
@@ -205,7 +213,7 @@ class SwitchRepresentation(bpy.types.Operator):
mesh = ifc_importer.create_mesh(element, shape)
mesh.name = self.mesh_name
mesh.BIMMeshProperties.ifc_definition_id = self.ifc_definition_id
- self.element_obj.data.user_remap(mesh)
+ self.switch_mesh(mesh)
material_creator = import_ifc.MaterialCreator(ifc_import_settings, ifc_importer)
material_creator.load_existing_materials()
material_creator.create(element, self.element_obj, mesh)
@@ -239,7 +247,7 @@ class RemoveRepresentation(bpy.types.Operator):
def _execute(self, context):
self.file = IfcStore.get_file()
representation = self.file.by_id(self.representation_id)
- obj = bpy.data.objects.get(self.obj) if self.obj else bpy.context.active_object
+ obj = bpy.data.objects.get(self.obj) if self.obj else context.active_object
is_mapped_representation = representation.RepresentationType == "MappedRepresentation"
if is_mapped_representation:
mesh_name = "{}/{}".format(
@@ -280,7 +288,7 @@ class UpdateRepresentation(bpy.types.Operator):
if not ContextData.is_loaded:
ContextData.load(IfcStore.get_file())
- objs = [bpy.data.objects.get(self.obj)] if self.obj else bpy.context.selected_objects
+ objs = [bpy.data.objects.get(self.obj)] if self.obj else context.selected_objects
self.file = IfcStore.get_file()
for obj in objs:
@@ -330,19 +338,20 @@ class UpdateRepresentation(bpy.types.Operator):
if s.material and not s.material.BIMMaterialProperties.ifc_style_id
]
- ifcopenshell.api.run(
- "style.assign_representation_styles",
- self.file,
- **{
- "shape_representation": new_representation,
- "styles": [
- self.file.by_id(s.material.BIMMaterialProperties.ifc_style_id)
- for s in obj.material_slots
- if s.material
- ],
- "should_use_presentation_style_assignment": context.scene.BIMGeometryProperties.should_use_presentation_style_assignment,
- },
- )
+ if isinstance(obj.data, bpy.types.Mesh) and len(obj.data.polygons):
+ ifcopenshell.api.run(
+ "style.assign_representation_styles",
+ self.file,
+ **{
+ "shape_representation": new_representation,
+ "styles": [
+ self.file.by_id(s.material.BIMMaterialProperties.ifc_style_id)
+ for s in obj.material_slots
+ if s.material
+ ],
+ "should_use_presentation_style_assignment": context.scene.BIMGeometryProperties.should_use_presentation_style_assignment,
+ },
+ )
# TODO: move this into a replace_representation usecase or something
for inverse in self.file.get_inverse(old_representation):
@@ -362,11 +371,13 @@ class UpdateParametricRepresentation(bpy.types.Operator):
def execute(self, context):
self.file = IfcStore.get_file()
- obj = bpy.context.active_object
+ obj = context.active_object
props = obj.data.BIMMeshProperties
parameter = props.ifc_parameters[self.index]
element = IfcStore.get_file().by_id(parameter.step_id)[parameter.index] = parameter.value
- bpy.ops.bim.switch_representation(ifc_definition_id=props.ifc_definition_id, should_reload=True)
+ bpy.ops.bim.switch_representation(
+ ifc_definition_id=props.ifc_definition_id, should_reload=True, should_switch_all_meshes=True
+ )
return {"FINISHED"}
@@ -377,7 +388,7 @@ class GetRepresentationIfcParameters(bpy.types.Operator):
def execute(self, context):
self.file = IfcStore.get_file()
- obj = bpy.context.active_object
+ obj = context.active_object
props = obj.data.BIMMeshProperties
elements = IfcStore.get_file().traverse(IfcStore.get_file().by_id(props.ifc_definition_id))
for element in elements:
diff --git a/src/blenderbim/blenderbim/bim/module/geometry/ui.py b/src/blenderbim/blenderbim/bim/module/geometry/ui.py
index 936aeffd9a..ee387ab8f9 100644
--- a/src/blenderbim/blenderbim/bim/module/geometry/ui.py
+++ b/src/blenderbim/blenderbim/bim/module/geometry/ui.py
@@ -30,7 +30,7 @@ class BIM_PT_representations(Panel):
layout.label(text="No representations found")
row = layout.row(align=True)
- row.prop(bpy.context.scene.BIMProperties, "contexts", text="")
+ row.prop(context.scene.BIMProperties, "contexts", text="")
row.operator("bim.add_representation", icon="ADD", text="")
for ifc_definition_id in representations:
@@ -41,6 +41,7 @@ class BIM_PT_representations(Panel):
row.label(text=representation["ContextOfItems"]["TargetView"])
row.label(text=representation["RepresentationType"])
op = row.operator("bim.switch_representation", icon="OUTLINER_DATA_MESH", text="")
+ op.should_switch_all_meshes = True
op.should_reload = True
op.ifc_definition_id = ifc_definition_id
op.disable_opening_subtractions = False
@@ -71,10 +72,12 @@ class BIM_PT_mesh(Panel):
row = layout.row(align=True)
op = row.operator("bim.switch_representation", text="Bake Voids", icon="SELECT_SUBTRACT")
+ op.should_switch_all_meshes=True
op.should_reload = True
op.ifc_definition_id = props.ifc_definition_id
op.disable_opening_subtractions = False
op = row.operator("bim.switch_representation", text="Dynamic Voids", icon="SELECT_INTERSECT")
+ op.should_switch_all_meshes=True
op.should_reload = True
op.ifc_definition_id = props.ifc_definition_id
op.disable_opening_subtractions = True
diff --git a/src/blenderbim/blenderbim/bim/module/georeference/operator.py b/src/blenderbim/blenderbim/bim/module/georeference/operator.py
index bafe90b113..22a883db5b 100644
--- a/src/blenderbim/blenderbim/bim/module/georeference/operator.py
+++ b/src/blenderbim/blenderbim/bim/module/georeference/operator.py
@@ -276,7 +276,7 @@ class ConvertLocalToGlobal(bpy.types.Operator):
results = (x, y, z)
props.coordinate_output = ",".join([str(r) for r in results])
- bpy.context.scene.cursor.location = results
+ context.scene.cursor.location = results
return {"FINISHED"}
@@ -322,7 +322,7 @@ class ConvertGlobalToLocal(bpy.types.Operator):
props.coordinate_output = ",".join([str(r) for r in results])
scale = ifcopenshell.util.unit.calculate_unit_scale(IfcStore.get_file())
- bpy.context.scene.cursor.location = [o * scale for o in results]
+ context.scene.cursor.location = [o * scale for o in results]
return {"FINISHED"}
@@ -334,7 +334,7 @@ class GetCursorLocation(bpy.types.Operator):
def execute(self, context):
props = context.scene.BIMGeoreferenceProperties
scale = ifcopenshell.util.unit.calculate_unit_scale(IfcStore.get_file())
- project_coordinates = [o / scale for o in bpy.context.scene.cursor.location]
+ project_coordinates = [o / scale for o in context.scene.cursor.location]
props.coordinate_input = ",".join([str(o) for o in project_coordinates])
return {"FINISHED"}
@@ -347,5 +347,5 @@ class SetCursorLocation(bpy.types.Operator):
def execute(self, context):
props = context.scene.BIMGeoreferenceProperties
scale = ifcopenshell.util.unit.calculate_unit_scale(IfcStore.get_file())
- bpy.context.scene.cursor.location = [float(co) * scale for co in props.coordinate_output.split(",")]
+ context.scene.cursor.location = [float(co) * scale for co in props.coordinate_output.split(",")]
return {"FINISHED"}
diff --git a/src/blenderbim/blenderbim/bim/module/group/operator.py b/src/blenderbim/blenderbim/bim/module/group/operator.py
index 3b7ed59b70..76f2f245a4 100644
--- a/src/blenderbim/blenderbim/bim/module/group/operator.py
+++ b/src/blenderbim/blenderbim/bim/module/group/operator.py
@@ -186,7 +186,7 @@ class SelectGroupProducts(bpy.types.Operator):
def execute(self, context):
self.file = IfcStore.get_file()
- for obj in bpy.context.visible_objects:
+ for obj in context.visible_objects:
obj.select_set(False)
if not obj.BIMObjectProperties.ifc_definition_id:
continue
diff --git a/src/blenderbim/blenderbim/bim/module/material/__init__.py b/src/blenderbim/blenderbim/bim/module/material/__init__.py
index 83ef17c184..76d4dca153 100644
--- a/src/blenderbim/blenderbim/bim/module/material/__init__.py
+++ b/src/blenderbim/blenderbim/bim/module/material/__init__.py
@@ -2,6 +2,7 @@ import bpy
from . import ui, prop, operator
classes = (
+ operator.CopyMaterial,
operator.AddMaterial,
operator.RemoveMaterial,
operator.AssignMaterial,
diff --git a/src/blenderbim/blenderbim/bim/module/material/operator.py b/src/blenderbim/blenderbim/bim/module/material/operator.py
index ebeba9e020..01ffc3cd22 100644
--- a/src/blenderbim/blenderbim/bim/module/material/operator.py
+++ b/src/blenderbim/blenderbim/bim/module/material/operator.py
@@ -1,6 +1,7 @@
import bpy
import json
import ifcopenshell.api
+import ifcopenshell.util.element
import ifcopenshell.util.attribute
import ifcopenshell.util.representation
import blenderbim.bim.helper
@@ -22,7 +23,7 @@ class AssignParameterizedProfile(bpy.types.Operator):
return IfcStore.execute_ifc_operator(self, context)
def _execute(self, context):
- obj = bpy.data.objects.get(self.obj) if self.obj else bpy.context.active_object
+ obj = bpy.data.objects.get(self.obj) if self.obj else context.active_object
self.file = IfcStore.get_file()
profile = ifcopenshell.api.run(
"profile.add_parameterized_profile",
@@ -50,18 +51,22 @@ class AddMaterial(bpy.types.Operator):
return IfcStore.execute_ifc_operator(self, context)
def _execute(self, context):
- obj = bpy.data.materials.get(self.obj) if self.obj else bpy.context.active_object.active_material
+ obj = bpy.data.materials.get(self.obj) if self.obj else context.active_object.active_material
self.file = IfcStore.get_file()
result = ifcopenshell.api.run("material.add_material", self.file, **{"name": obj.name})
- obj.BIMObjectProperties.ifc_definition_id = result.id()
+ IfcStore.link_element(result, obj)
if obj.BIMMaterialProperties.ifc_style_id:
context = ifcopenshell.util.representation.get_context(self.file, "Model", "Body", "MODEL_VIEW")
if context:
- ifcopenshell.api.run("style.assign_material_style", self.file, **{
- "material": result,
- "style": self.file.by_id(obj.BIMMaterialProperties.ifc_style_id),
- "context": context,
- })
+ ifcopenshell.api.run(
+ "style.assign_material_style",
+ self.file,
+ **{
+ "material": result,
+ "style": self.file.by_id(obj.BIMMaterialProperties.ifc_style_id),
+ "context": context,
+ },
+ )
Data.load(IfcStore.get_file())
material_prop_purge()
return {"FINISHED"}
@@ -77,7 +82,7 @@ class RemoveMaterial(bpy.types.Operator):
return IfcStore.execute_ifc_operator(self, context)
def _execute(self, context):
- obj = bpy.data.materials.get(self.obj) if self.obj else bpy.context.active_object.active_material
+ obj = bpy.data.materials.get(self.obj) if self.obj else context.active_object.active_material
self.file = IfcStore.get_file()
result = ifcopenshell.api.run(
"material.remove_material",
@@ -100,22 +105,40 @@ class AssignMaterial(bpy.types.Operator):
return IfcStore.execute_ifc_operator(self, context)
def _execute(self, context):
- obj = bpy.data.objects.get(self.obj) if self.obj else bpy.context.active_object
+ obj = bpy.data.objects.get(self.obj) if self.obj else context.active_object
material_type = self.material_type or obj.BIMObjectMaterialProperties.material_type
self.file = IfcStore.get_file()
+ element = self.file.by_id(obj.BIMObjectProperties.ifc_definition_id)
ifcopenshell.api.run(
"material.assign_material",
self.file,
**{
- "product": self.file.by_id(obj.BIMObjectProperties.ifc_definition_id),
+ "product": element,
"type": material_type,
"material": self.file.by_id(int(obj.BIMObjectMaterialProperties.material)),
},
)
Data.load(IfcStore.get_file())
Data.load(IfcStore.get_file(), obj.BIMObjectProperties.ifc_definition_id)
+ self.set_default_material(obj, element)
return {"FINISHED"}
+ def set_default_material(self, obj, element):
+ element_material = ifcopenshell.util.element.get_material(element)
+ material = [m for m in self.file.traverse(element_material) if m.is_a("IfcMaterial")]
+ if not material:
+ return
+
+ object_material_ids = [
+ om.BIMObjectProperties.ifc_definition_id
+ for om in obj.data.materials
+ if om is not None and om.BIMObjectProperties.ifc_definition_id
+ ]
+
+ if material[0].id() in object_material_ids:
+ return
+ obj.data.materials.append(IfcStore.get_element(material[0].id()))
+
class UnassignMaterial(bpy.types.Operator):
bl_idname = "bim.unassign_material"
@@ -127,14 +150,14 @@ class UnassignMaterial(bpy.types.Operator):
return IfcStore.execute_ifc_operator(self, context)
def _execute(self, context):
- obj = bpy.data.objects.get(self.obj) if self.obj else bpy.context.active_object
+ obj = bpy.data.objects.get(self.obj) if self.obj else context.active_object
self.file = IfcStore.get_file()
ifcopenshell.api.run(
"material.unassign_material",
self.file,
**{"product": self.file.by_id(obj.BIMObjectProperties.ifc_definition_id)},
)
- Data.load(IfcStore.get_file(), obj.BIMObjectProperties.ifc_definition_id)
+ Data.purge()
return {"FINISHED"}
@@ -149,7 +172,7 @@ class AddConstituent(bpy.types.Operator):
return IfcStore.execute_ifc_operator(self, context)
def _execute(self, context):
- obj = bpy.data.objects.get(self.obj) if self.obj else bpy.context.active_object
+ obj = bpy.data.objects.get(self.obj) if self.obj else context.active_object
self.file = IfcStore.get_file()
ifcopenshell.api.run(
"material.add_constituent",
@@ -174,7 +197,7 @@ class RemoveConstituent(bpy.types.Operator):
return IfcStore.execute_ifc_operator(self, context)
def _execute(self, context):
- obj = bpy.data.objects.get(self.obj) if self.obj else bpy.context.active_object
+ obj = bpy.data.objects.get(self.obj) if self.obj else context.active_object
self.file = IfcStore.get_file()
ifcopenshell.api.run(
"material.remove_constituent", self.file, **{"constituent": self.file.by_id(self.constituent)}
@@ -194,7 +217,7 @@ class AddProfile(bpy.types.Operator):
return IfcStore.execute_ifc_operator(self, context)
def _execute(self, context):
- obj = bpy.data.objects.get(self.obj) if self.obj else bpy.context.active_object
+ obj = bpy.data.objects.get(self.obj) if self.obj else context.active_object
self.file = IfcStore.get_file()
ifcopenshell.api.run(
"material.add_profile",
@@ -205,6 +228,7 @@ class AddProfile(bpy.types.Operator):
},
)
Data.load_profiles()
+ ProfileData.load(self.file)
return {"FINISHED"}
@@ -219,10 +243,11 @@ class RemoveProfile(bpy.types.Operator):
return IfcStore.execute_ifc_operator(self, context)
def _execute(self, context):
- obj = bpy.data.objects.get(self.obj) if self.obj else bpy.context.active_object
+ obj = bpy.data.objects.get(self.obj) if self.obj else context.active_object
self.file = IfcStore.get_file()
ifcopenshell.api.run("material.remove_profile", self.file, **{"profile": self.file.by_id(self.profile)})
Data.load_profiles()
+ ProfileData.load(self.file)
return {"FINISHED"}
@@ -237,7 +262,7 @@ class AddLayer(bpy.types.Operator):
return IfcStore.execute_ifc_operator(self, context)
def _execute(self, context):
- obj = bpy.data.objects.get(self.obj) if self.obj else bpy.context.active_object
+ obj = bpy.data.objects.get(self.obj) if self.obj else context.active_object
self.file = IfcStore.get_file()
ifcopenshell.api.run(
"material.add_layer",
@@ -264,7 +289,7 @@ class ReorderMaterialSetItem(bpy.types.Operator):
return IfcStore.execute_ifc_operator(self, context)
def _execute(self, context):
- obj = bpy.data.objects.get(self.obj) if self.obj else bpy.context.active_object
+ obj = bpy.data.objects.get(self.obj) if self.obj else context.active_object
self.file = IfcStore.get_file()
material_set = self.file.by_id(self.material_set)
ifcopenshell.api.run(
@@ -282,6 +307,7 @@ class ReorderMaterialSetItem(bpy.types.Operator):
Data.load_layers()
elif material_set.is_a("IfcMaterialProfileSet"):
Data.load_profiles()
+ ProfileData.load(self.file)
elif material_set.is_a("IfcMaterialList"):
Data.load_lists()
return {"FINISHED"}
@@ -298,7 +324,7 @@ class RemoveLayer(bpy.types.Operator):
return IfcStore.execute_ifc_operator(self, context)
def _execute(self, context):
- obj = bpy.data.objects.get(self.obj) if self.obj else bpy.context.active_object
+ obj = bpy.data.objects.get(self.obj) if self.obj else context.active_object
self.file = IfcStore.get_file()
ifcopenshell.api.run("material.remove_layer", self.file, **{"layer": self.file.by_id(self.layer)})
Data.load_layers()
@@ -316,7 +342,7 @@ class AddListItem(bpy.types.Operator):
return IfcStore.execute_ifc_operator(self, context)
def _execute(self, context):
- obj = bpy.data.objects.get(self.obj) if self.obj else bpy.context.active_object
+ obj = bpy.data.objects.get(self.obj) if self.obj else context.active_object
self.file = IfcStore.get_file()
ifcopenshell.api.run(
"material.add_list_item",
@@ -342,7 +368,7 @@ class RemoveListItem(bpy.types.Operator):
return IfcStore.execute_ifc_operator(self, context)
def _execute(self, context):
- obj = bpy.data.objects.get(self.obj) if self.obj else bpy.context.active_object
+ obj = bpy.data.objects.get(self.obj) if self.obj else context.active_object
self.file = IfcStore.get_file()
ifcopenshell.api.run(
"material.remove_list_item",
@@ -363,7 +389,7 @@ class EnableEditingAssignedMaterial(bpy.types.Operator):
obj: bpy.props.StringProperty()
def execute(self, context):
- obj = bpy.data.objects.get(self.obj) if self.obj else bpy.context.active_object
+ obj = bpy.data.objects.get(self.obj) if self.obj else context.active_object
props = obj.BIMObjectMaterialProperties
props.is_editing = True
product_data = Data.products[obj.BIMObjectProperties.ifc_definition_id]
@@ -451,7 +477,7 @@ class DisableEditingAssignedMaterial(bpy.types.Operator):
obj: bpy.props.StringProperty()
def execute(self, context):
- obj = bpy.data.objects.get(self.obj) if self.obj else bpy.context.active_object
+ obj = bpy.data.objects.get(self.obj) if self.obj else context.active_object
props = obj.BIMObjectMaterialProperties
props.is_editing = False
return {"FINISHED"}
@@ -470,10 +496,9 @@ class EditAssignedMaterial(bpy.types.Operator):
def _execute(self, context):
self.file = IfcStore.get_file()
- obj = bpy.data.objects.get(self.obj) if self.obj else bpy.context.active_object
+ obj = bpy.data.objects.get(self.obj) if self.obj else context.active_object
props = obj.BIMObjectMaterialProperties
product_data = Data.products[obj.BIMObjectProperties.ifc_definition_id]
- material_set = self.file.by_id(self.material_set)
if product_data["type"] == "IfcMaterial":
bpy.ops.bim.unassign_material(obj=obj.name)
@@ -482,6 +507,8 @@ class EditAssignedMaterial(bpy.types.Operator):
bpy.ops.bim.disable_editing_assigned_material(obj=obj.name)
return {"FINISHED"}
+ material_set = self.file.by_id(self.material_set)
+
attributes = {}
for attribute in props.material_set_attributes:
attributes[attribute.name] = None if attribute.is_null else attribute.string_value
@@ -495,16 +522,21 @@ class EditAssignedMaterial(bpy.types.Operator):
if self.material_set_usage:
material_set_usage = self.file.by_id(self.material_set_usage)
attributes = blenderbim.bim.helper.export_attributes(props.material_set_usage_attributes)
- if attributes.get("CardinalPoint", None):
- attributes["CardinalPoint"] = int(attributes["CardinalPoint"])
- ifcopenshell.api.run(
- "material.edit_profile_usage",
- self.file,
- **{"usage": material_set_usage, "attributes": attributes},
- )
if material_set_usage.is_a("IfcMaterialLayerSetUsage"):
+ ifcopenshell.api.run(
+ "material.edit_layer_usage",
+ self.file,
+ **{"usage": material_set_usage, "attributes": attributes},
+ )
Data.load_layer_usages()
elif material_set_usage.is_a("IfcMaterialProfileSetUsage"):
+ if attributes.get("CardinalPoint", None):
+ attributes["CardinalPoint"] = int(attributes["CardinalPoint"])
+ ifcopenshell.api.run(
+ "material.edit_profile_usage",
+ self.file,
+ **{"usage": material_set_usage, "attributes": attributes},
+ )
Data.load_profile_usages()
if material_set.is_a("IfcMaterialConstituentSet"):
@@ -514,8 +546,25 @@ class EditAssignedMaterial(bpy.types.Operator):
elif material_set.is_a("IfcMaterialProfileSet"):
Data.load_profiles()
bpy.ops.bim.disable_editing_assigned_material(obj=obj.name)
+ self.set_default_material(obj, self.file.by_id(obj.BIMObjectProperties.ifc_definition_id))
return {"FINISHED"}
+ def set_default_material(self, obj, element):
+ element_material = ifcopenshell.util.element.get_material(element)
+ material = [m for m in self.file.traverse(element_material) if m.is_a("IfcMaterial")]
+ if not material:
+ return
+
+ object_material_ids = [
+ om.BIMObjectProperties.ifc_definition_id
+ for om in obj.data.materials
+ if om is not None and om.BIMObjectProperties.ifc_definition_id
+ ]
+
+ if material[0].id() in object_material_ids:
+ return
+ obj.data.materials.append(IfcStore.get_element(material[0].id()))
+
class EnableEditingMaterialSetItem(bpy.types.Operator):
bl_idname = "bim.enable_editing_material_set_item"
@@ -526,7 +575,7 @@ class EnableEditingMaterialSetItem(bpy.types.Operator):
def execute(self, context):
self.file = IfcStore.get_file()
- obj = bpy.data.objects.get(self.obj) if self.obj else bpy.context.active_object
+ obj = bpy.data.objects.get(self.obj) if self.obj else context.active_object
self.props = obj.BIMObjectMaterialProperties
self.props.active_material_set_item_id = self.material_set_item
product_data = Data.products[obj.BIMObjectProperties.ifc_definition_id]
@@ -618,7 +667,7 @@ class DisableEditingMaterialSetItem(bpy.types.Operator):
obj: bpy.props.StringProperty()
def execute(self, context):
- obj = bpy.data.objects.get(self.obj) if self.obj else bpy.context.active_object
+ obj = bpy.data.objects.get(self.obj) if self.obj else context.active_object
props = obj.BIMObjectMaterialProperties
props.active_material_set_item_id = 0
return {"FINISHED"}
@@ -635,7 +684,7 @@ class EditMaterialSetItem(bpy.types.Operator):
return IfcStore.execute_ifc_operator(self, context)
def _execute(self, context):
- obj = bpy.data.objects.get(self.obj) if self.obj else bpy.context.active_object
+ obj = bpy.data.objects.get(self.obj) if self.obj else context.active_object
self.file = IfcStore.get_file()
props = obj.BIMObjectMaterialProperties
product_data = Data.products[obj.BIMObjectProperties.ifc_definition_id]
@@ -705,3 +754,45 @@ class EditMaterialSetItem(bpy.types.Operator):
bpy.ops.bim.disable_editing_material_set_item(obj=obj.name)
return {"FINISHED"}
+
+
+class CopyMaterial(bpy.types.Operator):
+ bl_idname = "bim.copy_material"
+ bl_label = "Copy Material"
+ bl_options = {"REGISTER", "UNDO"}
+
+ def execute(self, context):
+ return IfcStore.execute_ifc_operator(self, context)
+
+ def _execute(self, context):
+ self.file = IfcStore.get_file()
+ material = ifcopenshell.util.element.get_material(
+ self.file.by_id(context.active_object.BIMObjectProperties.ifc_definition_id)
+ )
+ for obj in context.selected_objects:
+ if obj == context.active_object:
+ continue
+ if not obj.BIMObjectProperties.ifc_definition_id:
+ continue
+ ifcopenshell.api.run(
+ "material.copy_material",
+ self.file,
+ **{
+ "material": material,
+ "element": self.file.by_id(obj.BIMObjectProperties.ifc_definition_id),
+ },
+ )
+ Data.load(self.file, obj.BIMObjectProperties.ifc_definition_id)
+ self.set_default_material(obj, material)
+ return {"FINISHED"}
+
+ def set_default_material(self, obj, material):
+ object_material_ids = [
+ om.BIMObjectProperties.ifc_definition_id
+ for om in obj.data.materials
+ if om is not None and om.BIMObjectProperties.ifc_definition_id
+ ]
+
+ if material.id() in object_material_ids:
+ return
+ obj.data.materials.append(IfcStore.get_element(material.id()))
diff --git a/src/blenderbim/blenderbim/bim/module/material/prop.py b/src/blenderbim/blenderbim/bim/module/material/prop.py
index 088a5c7962..9373737ab1 100644
--- a/src/blenderbim/blenderbim/bim/module/material/prop.py
+++ b/src/blenderbim/blenderbim/bim/module/material/prop.py
@@ -49,6 +49,11 @@ def getParameterizedProfileClasses(self, context):
(t.name(), t.name(), "")
for t in IfcStore.get_schema().declaration_by_name("IfcParameterizedProfileDef").subtypes()
]
+ for ifc_class in parameterizedprofileclasses_enum:
+ parameterizedprofileclasses_enum.extend([
+ (t.name(), t.name(), "")
+ for t in IfcStore.get_schema().declaration_by_name(ifc_class[0]).subtypes() or []
+ ])
return parameterizedprofileclasses_enum
diff --git a/src/blenderbim/blenderbim/bim/module/material/ui.py b/src/blenderbim/blenderbim/bim/module/material/ui.py
index 0c21497055..1a803aa836 100644
--- a/src/blenderbim/blenderbim/bim/module/material/ui.py
+++ b/src/blenderbim/blenderbim/bim/module/material/ui.py
@@ -97,6 +97,8 @@ class BIM_PT_object_material(Panel):
self.material_set_data = Data.lists[self.material_set_id]
self.set_items = self.material_set_data["Materials"] or []
self.set_item_name = "list_item"
+ else:
+ self.material_set_id = 0
return self.draw_material_ui()
row = self.layout.row(align=True)
@@ -116,6 +118,8 @@ class BIM_PT_object_material(Panel):
op.material_set_usage = self.product_data["id"]
row.operator("bim.disable_editing_assigned_material", icon="CANCEL", text="")
else:
+ if self.product_data["type"] == "IfcMaterial":
+ row.operator("bim.copy_material", icon="COPYDOWN", text="")
row.operator("bim.enable_editing_assigned_material", icon="GREASEPENCIL", text="")
row.operator("bim.unassign_material", icon="X", text="")
@@ -198,7 +202,9 @@ class BIM_PT_object_material(Panel):
row.prop(self.props, "profile_classes", text="")
if self.props.profile_classes == "IfcParameterizedProfileDef":
row.prop(self.props, "parameterized_profile_classes", text="")
- op = row.operator("bim.assign_parameterized_profile", icon="GREASEPENCIL" if item["Profile"] else "ADD", text="")
+ op = row.operator(
+ "bim.assign_parameterized_profile", icon="GREASEPENCIL" if item["Profile"] else "ADD", text=""
+ )
op.ifc_class = self.props.parameterized_profile_classes
op.material_profile = item["id"]
else:
@@ -316,11 +322,11 @@ class BIM_PT_object_material(Panel):
item_name = item.get("Name", "Unnamed") or "Unnamed"
thickness = item.get("LayerThickness")
if thickness:
- item_name += f" ({thickness})"
+ item_name += f" ({thickness:.3f})"
total_thickness += thickness
row.label(text=item_name, icon="ALIGN_CENTER")
row.label(text=Data.materials[item["Material"]]["Name"], icon="MATERIAL")
if total_thickness:
row = self.layout.row(align=True)
- row.label(text=f"Total Thickness: {total_thickness}")
+ row.label(text=f"Total Thickness: {total_thickness:.3f}")
diff --git a/src/blenderbim/blenderbim/bim/module/model/__init__.py b/src/blenderbim/blenderbim/bim/module/model/__init__.py
index 6bf79bfd1d..bd456e2658 100644
--- a/src/blenderbim/blenderbim/bim/module/model/__init__.py
+++ b/src/blenderbim/blenderbim/bim/module/model/__init__.py
@@ -3,11 +3,16 @@ from . import handler, prop, ui, grid, product, wall, slab, stair, door, window,
classes = (
product.AddTypeInstance,
- wall.AddWall,
+ product.AlignProduct,
+ product.DynamicallyVoidProduct,
+ workspace.Hotkey,
wall.JoinWall,
wall.AlignWall,
wall.FlipWall,
wall.SplitWall,
+ wall.AddWallOpening,
+ slab.AddSlabOpening,
+ profile.ExtendProfile,
prop.BIMModelProperties,
ui.BIM_PT_authoring,
ui.BIM_PT_authoring_architectural,
@@ -28,7 +33,8 @@ addon_keymaps = []
def register():
- bpy.utils.register_tool(workspace.BimTool, after={"builtin.scale_cage"}, separator=True, group=True)
+ if not bpy.app.background:
+ bpy.utils.register_tool(workspace.BimTool, after={"builtin.scale_cage"}, separator=True, group=True)
bpy.types.Scene.BIMModelProperties = bpy.props.PointerProperty(type=prop.BIMModelProperties)
bpy.types.VIEW3D_MT_mesh_add.append(grid.add_object_button)
bpy.types.VIEW3D_MT_mesh_add.append(stair.add_object_button)
@@ -45,7 +51,8 @@ def register():
def unregister():
- bpy.utils.unregister_tool(workspace.BimTool)
+ if not bpy.app.background:
+ bpy.utils.unregister_tool(workspace.BimTool)
del bpy.types.Scene.BIMModelProperties
bpy.app.handlers.load_post.remove(handler.load_post)
bpy.types.VIEW3D_MT_mesh_add.remove(grid.add_object_button)
diff --git a/src/blenderbim/blenderbim/bim/module/model/column.py b/src/blenderbim/blenderbim/bim/module/model/column.py
deleted file mode 100644
index 9adf87eb59..0000000000
--- a/src/blenderbim/blenderbim/bim/module/model/column.py
+++ /dev/null
@@ -1,168 +0,0 @@
-import bpy
-import bmesh
-import math
-import ifcopenshell
-import ifcopenshell.util.type
-import ifcopenshell.util.unit
-import ifcopenshell.util.element
-import mathutils.geometry
-import blenderbim.bim.handler
-from blenderbim.bim.ifc import IfcStore
-from math import pi, degrees
-from mathutils import Vector, Matrix
-from ifcopenshell.api.pset.data import Data as PsetData
-from ifcopenshell.api.material.data import Data as MaterialData
-from blenderbim.bim.module.geometry.helper import Helper
-
-
-def element_listener(element, obj):
- blenderbim.bim.handler.subscribe_to(obj, "mode", mode_callback)
-
-
-def mode_callback(obj, data):
- for obj in bpy.context.selected_objects + [bpy.context.active_object]:
- if (
- obj.mode != "EDIT"
- or not obj.data
- or not isinstance(obj.data, (bpy.types.Mesh, bpy.types.Curve, bpy.types.TextCurve))
- or not obj.BIMObjectProperties.ifc_definition_id
- or not bpy.context.scene.BIMProjectProperties.is_authoring
- ):
- return
- product = IfcStore.get_file().by_id(obj.BIMObjectProperties.ifc_definition_id)
- parametric = ifcopenshell.util.element.get_psets(product).get("EPset_Parametric")
- if not parametric or parametric["Engine"] != "BlenderBIM.DumbColumn":
- return
- IfcStore.edited_objs.add(obj)
- bm = bmesh.from_edit_mesh(obj.data)
- bmesh.ops.dissolve_limit(bm, angle_limit=pi / 180 * 1, verts=bm.verts, edges=bm.edges)
- bmesh.update_edit_mesh(obj.data)
- bm.free()
-
-
-def ensure_solid(usecase_path, ifc_file, settings):
- product = ifc_file.by_id(settings["blender_object"].BIMObjectProperties.ifc_definition_id)
- parametric = ifcopenshell.util.element.get_psets(product).get("EPset_Parametric")
- if not parametric or parametric["Engine"] != "BlenderBIM.DumbColumn":
- return
- material = ifcopenshell.util.element.get_material(product)
- if material and material.is_a("IfcMaterialProfileSetUsage"):
- settings["profile_set_usage"] = material
- else:
- return
- settings["ifc_representation_class"] = "IfcExtrudedAreaSolid/IfcMaterialProfileSetUsage"
-
-
-class DumbColumnGenerator:
- def __init__(self, relating_type):
- self.relating_type = relating_type
-
- def generate(self):
- self.file = IfcStore.get_file()
- unit_scale = ifcopenshell.util.unit.calculate_unit_scale(IfcStore.get_file())
- material = ifcopenshell.util.element.get_material(self.relating_type)
- if material and material.is_a("IfcMaterialProfileSet"):
- self.profile_set = material
- else:
- return
-
- self.collection = bpy.context.view_layer.active_layer_collection.collection
- self.collection_obj = bpy.data.objects.get(self.collection.name)
- self.length = 3
- self.rotation = 0
- self.location = Vector((0, 0, 0))
- return self.derive_from_cursor()
-
- def derive_from_cursor(self):
- self.location = bpy.context.scene.cursor.location
- return self.create_column()
-
- def create_column(self):
- # A cube
- verts = [
- Vector((-1, -1, -1)),
- Vector((-1, -1, 1)),
- Vector((-1, 1, -1)),
- Vector((-1, 1, 1)),
- Vector((1, -1, -1)),
- Vector((1, -1, 1)),
- Vector((1, 1, -1)),
- Vector((1, 1, 1)),
- ]
- edges = []
- faces = [
- [0, 2, 3, 1],
- [2, 3, 7, 6],
- [4, 5, 7, 6],
- [0, 1, 5, 4],
- [1, 3, 7, 5],
- [0, 2, 6, 4],
- ]
-
- mesh = bpy.data.meshes.new(name="Dumb Column")
- mesh.from_pydata(verts, edges, faces)
- obj = bpy.data.objects.new("Column", mesh)
- obj.name = "Column"
- obj.location = self.location
- if self.collection_obj and self.collection_obj.BIMObjectProperties.ifc_definition_id:
- obj.location[2] = self.collection_obj.location[2]
- self.collection.objects.link(obj)
- bpy.ops.bim.assign_class(
- obj=obj.name, ifc_class="IfcColumn", predefined_type="COLUMN", should_add_representation=False
- )
- element = self.file.by_id(obj.BIMObjectProperties.ifc_definition_id)
- bpy.ops.bim.assign_type(relating_type=self.relating_type.id(), related_object=obj.name)
- profile_set_usage = ifcopenshell.util.element.get_material(element)
- bpy.ops.bim.add_representation(
- obj=obj.name,
- context_id=ifcopenshell.util.representation.get_context(self.file, "Model", "Body", "MODEL_VIEW").id(),
- ifc_representation_class="IfcExtrudedAreaSolid/IfcMaterialProfileSetUsage",
- profile_set_usage=profile_set_usage.id(),
- )
- representation = ifcopenshell.util.representation.get_representation(element, "Model", "Body", "MODEL_VIEW")
- bpy.ops.bim.switch_representation(obj=obj.name, ifc_definition_id=representation.id(), should_reload=True)
- pset = ifcopenshell.api.run("pset.add_pset", self.file, product=element, name="EPset_Parametric")
- ifcopenshell.api.run("pset.edit_pset", self.file, pset=pset, properties={"Engine": "BlenderBIM.DumbColumn"})
- MaterialData.load(self.file)
- obj.select_set(True)
- return obj
-
-
-class DumbColumnRegenerator:
- def regenerate_from_profile(self, usecase_path, ifc_file, settings):
- self.file = IfcStore.get_file()
- self.unit_scale = ifcopenshell.util.unit.calculate_unit_scale(ifc_file)
- profile = settings["profile"].Profile
- if not profile:
- return
- for profile_set in [
- mp.ToMaterialProfileSet[0] for mp in self.file.get_inverse(profile) if mp.is_a("IfcMaterialProfile")
- ]:
- for inverse in ifc_file.get_inverse(profile_set):
- if not inverse.is_a("IfcMaterialProfileSetUsage"):
- continue
- if ifc_file.schema == "IFC2X3":
- for rel in ifc_file.get_inverse(inverse):
- if not rel.is_a("IfcRelAssociatesMaterial"):
- continue
- for element in rel.RelatedObjects:
- self.change_profile(element)
- else:
- for rel in inverse.AssociatedTo:
- for element in rel.RelatedObjects:
- self.change_profile(element)
-
- def regenerate_from_type(self, usecase_path, ifc_file, settings):
- self.unit_scale = ifcopenshell.util.unit.calculate_unit_scale(ifc_file)
- new_material = ifcopenshell.util.element.get_material(settings["relating_type"])
- if not new_material or not new_material.is_a("IfcMaterialProfileSet"):
- return
- self.change_profile(settings["related_object"])
-
- def change_profile(self, element):
- obj = IfcStore.get_element(element.id())
- if not obj:
- return
- representation = ifcopenshell.util.representation.get_representation(element, "Model", "Body", "MODEL_VIEW")
- if representation:
- bpy.ops.bim.switch_representation(obj=obj.name, ifc_definition_id=representation.id(), should_reload=True)
diff --git a/src/blenderbim/blenderbim/bim/module/model/door.py b/src/blenderbim/blenderbim/bim/module/model/door.py
index 3ff27af14a..9c4a7f7935 100644
--- a/src/blenderbim/blenderbim/bim/module/model/door.py
+++ b/src/blenderbim/blenderbim/bim/module/model/door.py
@@ -82,7 +82,7 @@ def add_object(self, context):
obj = bpy.data.objects.new("Door Profile", mesh)
context.view_layer.active_layer_collection.collection.objects.link(obj)
- bpy.context.view_layer.objects.active = obj
+ context.view_layer.objects.active = obj
obj.select_set(True)
bpy.ops.object.convert(target="CURVE")
@@ -100,7 +100,7 @@ def add_object(self, context):
obj2 = bpy.data.objects.new("Door", mesh)
context.view_layer.active_layer_collection.collection.objects.link(obj2)
- bpy.context.view_layer.objects.active = obj2
+ context.view_layer.objects.active = obj2
obj2.select_set(True)
bpy.ops.object.convert(target="CURVE")
@@ -130,11 +130,11 @@ def add_object(self, context):
modifier.thickness = self.overall_height - 0.045
context.view_layer.active_layer_collection.collection.objects.link(obj3)
- bpy.context.view_layer.objects.active = obj3
+ context.view_layer.objects.active = obj3
obj3.select_set(True)
bpy.ops.object.convert(target="MESH")
- ctx = bpy.context.copy()
+ ctx = context.copy()
ctx["active_object"] = obj2
ctx["selected_editable_objects"] = [obj2, obj3]
bpy.ops.object.join(ctx)
@@ -156,7 +156,7 @@ def add_object(self, context):
modifier.thickness = self.overall_height + 0.1
context.view_layer.active_layer_collection.collection.objects.link(obj4)
- bpy.context.view_layer.objects.active = obj4
+ context.view_layer.objects.active = obj4
obj4.select_set(True)
bpy.ops.object.convert(target="MESH")
diff --git a/src/blenderbim/blenderbim/bim/module/model/grid.py b/src/blenderbim/blenderbim/bim/module/model/grid.py
index 28a4e18626..78c2e0bdff 100644
--- a/src/blenderbim/blenderbim/bim/module/model/grid.py
+++ b/src/blenderbim/blenderbim/bim/module/model/grid.py
@@ -12,7 +12,7 @@ def add_object(self, context):
collection = bpy.data.collections.new(obj.name)
has_site_collection = False
- for child in bpy.context.view_layer.layer_collection.children:
+ for child in context.view_layer.layer_collection.children:
if "IfcProject/" not in child.name:
continue
for grandchild in child.children:
@@ -22,7 +22,7 @@ def add_object(self, context):
grandchild.collection.children.link(collection)
break
if not has_site_collection:
- bpy.context.view_layer.active_layer_collection.collection.children.link(collection)
+ context.view_layer.active_layer_collection.collection.children.link(collection)
collection.objects.link(obj)
self.file = IfcStore.get_file()
diff --git a/src/blenderbim/blenderbim/bim/module/model/handler.py b/src/blenderbim/blenderbim/bim/module/model/handler.py
index 91f6182871..559a5ad169 100644
--- a/src/blenderbim/blenderbim/bim/module/model/handler.py
+++ b/src/blenderbim/blenderbim/bim/module/model/handler.py
@@ -1,13 +1,17 @@
import bpy
import ifcopenshell
import ifcopenshell.api
-from blenderbim.bim.module.model import product, wall, slab, column
+from blenderbim.bim.module.model import root, product, wall, slab, profile, opening
from blenderbim.bim.ifc import IfcStore
from bpy.app.handlers import persistent
@persistent
def load_post(*args):
+ ifcopenshell.api.add_pre_listener(
+ "attribute.edit_attributes", "BlenderBIM.Root.SyncName", root.sync_name
+ )
+
ifcopenshell.api.add_post_listener(
"geometry.add_representation", "BlenderBIM.Product.GenerateBox", product.generate_box
)
@@ -17,6 +21,8 @@ def load_post(*args):
product.regenerate_profile_usage,
)
+ IfcStore.add_element_listener(opening.element_listener)
+
IfcStore.add_element_listener(wall.element_listener)
ifcopenshell.api.add_pre_listener(
"geometry.add_representation", "BlenderBIM.DumbWall.EnsureSolid", wall.ensure_solid
@@ -51,17 +57,22 @@ def load_post(*args):
"type.assign_type", "BlenderBIM.DumbSlab.RegenerateFromType", slab.DumbSlabPlaner().regenerate_from_type
)
- IfcStore.add_element_listener(column.element_listener)
+ IfcStore.add_element_listener(profile.element_listener)
ifcopenshell.api.add_pre_listener(
- "geometry.add_representation", "BlenderBIM.DumbColumn.EnsureSolid", column.ensure_solid
+ "geometry.add_representation", "BlenderBIM.DumbProfile.EnsureSolid", profile.ensure_solid
+ )
+ ifcopenshell.api.add_pre_listener(
+ "material.edit_profile",
+ "BlenderBIM.DumbProfile.SyncObjectFromProfile",
+ profile.DumbProfileRegenerator().sync_object_from_profile,
)
ifcopenshell.api.add_post_listener(
"material.edit_profile",
- "BlenderBIM.DumbColumn.RegenerateFromProfile",
- column.DumbColumnRegenerator().regenerate_from_profile,
+ "BlenderBIM.DumbProfile.RegenerateFromProfile",
+ profile.DumbProfileRegenerator().regenerate_from_profile,
)
ifcopenshell.api.add_post_listener(
"type.assign_type",
- "BlenderBIM.DumbColumn.RegenerateFromType",
- column.DumbColumnRegenerator().regenerate_from_type,
+ "BlenderBIM.DumbProfile.RegenerateFromType",
+ profile.DumbProfileRegenerator().regenerate_from_type,
)
diff --git a/src/blenderbim/blenderbim/bim/module/model/opening.py b/src/blenderbim/blenderbim/bim/module/model/opening.py
index e2dcdd33c2..4a53b564dc 100644
--- a/src/blenderbim/blenderbim/bim/module/model/opening.py
+++ b/src/blenderbim/blenderbim/bim/module/model/opening.py
@@ -1,10 +1,57 @@
import bpy
import bmesh
+import blenderbim.bim.handler
+import ifcopenshell
+import ifcopenshell.util.representation
+from blenderbim.bim.ifc import IfcStore
+from math import pi
from bpy.types import Operator
from bpy.props import FloatProperty
from bpy_extras.object_utils import AddObjectHelper, object_data_add
+def element_listener(element, obj):
+ blenderbim.bim.handler.subscribe_to(obj, "mode", mode_callback)
+
+
+def mode_callback(obj, data):
+ for obj in set(bpy.context.selected_objects + [bpy.context.active_object]):
+ if (
+ obj.mode != "EDIT"
+ or not obj.data
+ or not isinstance(obj.data, (bpy.types.Mesh, bpy.types.Curve, bpy.types.TextCurve))
+ or not obj.BIMObjectProperties.ifc_definition_id
+ or not bpy.context.scene.BIMProjectProperties.is_authoring
+ ):
+ return
+ product = IfcStore.get_file().by_id(obj.BIMObjectProperties.ifc_definition_id)
+ if not product.is_a("IfcOpeningElement"):
+ return
+ for rel in product.VoidsElements:
+ building_element_obj = IfcStore.get_element(rel.RelatingBuildingElement.id())
+ if not building_element_obj:
+ continue
+ if [m for m in building_element_obj.modifiers if m.type == "BOOLEAN"]:
+ continue
+ representation = ifcopenshell.util.representation.get_representation(
+ rel.RelatingBuildingElement, "Model", "Body", "MODEL_VIEW"
+ )
+ if not representation:
+ continue
+ bpy.ops.bim.switch_representation(
+ obj=building_element_obj.name,
+ should_switch_all_meshes=True,
+ should_reload=True,
+ ifc_definition_id=representation.id(),
+ disable_opening_subtractions=True,
+ )
+ IfcStore.edited_objs.add(obj)
+ bm = bmesh.from_edit_mesh(obj.data)
+ bmesh.ops.dissolve_limit(bm, angle_limit=pi / 180 * 1, verts=bm.verts, edges=bm.edges)
+ bmesh.update_edit_mesh(obj.data)
+ bm.free()
+
+
def add_object(self, context):
bm = bmesh.new()
bmesh.ops.create_cube(bm, size=self.size)
diff --git a/src/blenderbim/blenderbim/bim/module/model/pie.py b/src/blenderbim/blenderbim/bim/module/model/pie.py
index 94be5224e4..d2f2f2f296 100644
--- a/src/blenderbim/blenderbim/bim/module/model/pie.py
+++ b/src/blenderbim/blenderbim/bim/module/model/pie.py
@@ -1,5 +1,5 @@
import bpy
-
+from blenderbim.bim.ifc import IfcStore
class OpenPieClass(bpy.types.Operator):
bl_idname = "bim.open_pie_class"
diff --git a/src/blenderbim/blenderbim/bim/module/model/product.py b/src/blenderbim/blenderbim/bim/module/model/product.py
index af51797a0c..0c0fb24f47 100644
--- a/src/blenderbim/blenderbim/bim/module/model/product.py
+++ b/src/blenderbim/blenderbim/bim/module/model/product.py
@@ -1,12 +1,13 @@
import bpy
+import mathutils
import ifcopenshell
import ifcopenshell.api
import ifcopenshell.util.element
import ifcopenshell.util.representation
-from . import wall, slab, column
+from . import wall, slab, profile
from blenderbim.bim.ifc import IfcStore
from ifcopenshell.api.pset.data import Data as PsetData
-from mathutils import Vector
+from mathutils import Vector, Matrix
class AddTypeInstance(bpy.types.Operator):
@@ -22,21 +23,22 @@ class AddTypeInstance(bpy.types.Operator):
def _execute(self, context):
tprops = context.scene.BIMTypeProperties
ifc_class = self.ifc_class or tprops.ifc_class
- relating_type = self.relating_type or tprops.relating_type
- if not ifc_class or not relating_type:
+ relating_type_id = self.relating_type or tprops.relating_type
+ if not ifc_class or not relating_type_id:
return {"FINISHED"}
self.file = IfcStore.get_file()
instance_class = ifcopenshell.util.type.get_applicable_entities(ifc_class, self.file.schema)[0]
- if ifc_class == "IfcWallType":
- obj = wall.DumbWallGenerator(self.file.by_id(int(relating_type))).generate()
+ relating_type = self.file.by_id(int(relating_type_id))
+ material = ifcopenshell.util.element.get_material(relating_type)
+ if material.is_a("IfcMaterialProfileSet"):
+ obj = profile.DumbProfileGenerator(relating_type).generate()
if obj:
return {"FINISHED"}
- elif ifc_class == "IfcSlabType":
- obj = slab.DumbSlabGenerator(self.file.by_id(int(relating_type))).generate()
- if obj:
- return {"FINISHED"}
- elif ifc_class == "IfcColumnType":
- obj = column.DumbColumnGenerator(self.file.by_id(int(relating_type))).generate()
+ elif material.is_a("IfcMaterialLayerSet"):
+ if ifc_class in ["IfcSlabType", "IfcRoofType", "IfcRampType", "IfcPlateType"]:
+ obj = slab.DumbSlabGenerator(relating_type).generate()
+ else:
+ obj = wall.DumbWallGenerator(relating_type).generate()
if obj:
return {"FINISHED"}
# A cube
@@ -63,7 +65,7 @@ class AddTypeInstance(bpy.types.Operator):
mesh.from_pydata(verts, edges, faces)
obj = bpy.data.objects.new("Instance", mesh)
obj.location = context.scene.cursor.location
- collection = bpy.context.view_layer.active_layer_collection.collection
+ collection = context.view_layer.active_layer_collection.collection
collection.objects.link(obj)
collection_obj = bpy.data.objects.get(collection.name)
bpy.ops.bim.assign_class(obj=obj.name, ifc_class=instance_class)
@@ -73,6 +75,83 @@ class AddTypeInstance(bpy.types.Operator):
return {"FINISHED"}
+class AlignProduct(bpy.types.Operator):
+ bl_idname = "bim.align_product"
+ bl_label = "Align Product"
+ bl_options = {"REGISTER", "UNDO"}
+ align_type: bpy.props.StringProperty()
+
+ def execute(self, context):
+ selected_objs = context.selected_objects
+ if len(selected_objs) < 2 or not context.active_object:
+ return {"FINISHED"}
+ if self.align_type == "CENTERLINE":
+ point = context.active_object.matrix_world @ (
+ Vector(context.active_object.bound_box[0]) + (context.active_object.dimensions / 2)
+ )
+ elif self.align_type == "POSITIVE":
+ point = context.active_object.matrix_world @ Vector(context.active_object.bound_box[6])
+ elif self.align_type == "NEGATIVE":
+ point = context.active_object.matrix_world @ Vector(context.active_object.bound_box[0])
+
+ active_x_axis = context.active_object.matrix_world.to_quaternion() @ Vector((1, 0, 0))
+ active_y_axis = context.active_object.matrix_world.to_quaternion() @ Vector((0, 1, 0))
+ active_z_axis = context.active_object.matrix_world.to_quaternion() @ Vector((0, 0, 1))
+
+ x_distances = self.get_axis_distances(point, active_x_axis, context)
+ y_distances = self.get_axis_distances(point, active_y_axis, context)
+ if abs(sum(x_distances)) < abs(sum(y_distances)):
+ for i, obj in enumerate(selected_objs):
+ obj.matrix_world = Matrix.Translation(active_x_axis * -x_distances[i]) @ obj.matrix_world
+ else:
+ for i, obj in enumerate(selected_objs):
+ obj.matrix_world = Matrix.Translation(active_y_axis * -y_distances[i]) @ obj.matrix_world
+ return {"FINISHED"}
+
+ def get_axis_distances(self, point, axis, context):
+ results = []
+ for obj in context.selected_objects:
+ if self.align_type == "CENTERLINE":
+ obj_point = obj.matrix_world @ (Vector(obj.bound_box[0]) + (obj.dimensions / 2))
+ elif self.align_type == "POSITIVE":
+ obj_point = obj.matrix_world @ Vector(obj.bound_box[6])
+ elif self.align_type == "NEGATIVE":
+ obj_point = obj.matrix_world @ Vector(obj.bound_box[0])
+ results.append(mathutils.geometry.distance_point_to_plane(obj_point, point, axis))
+ return results
+
+
+class DynamicallyVoidProduct(bpy.types.Operator):
+ bl_idname = "bim.dynamically_void_product"
+ bl_label = "Dynamically Void Product"
+ bl_options = {"REGISTER", "UNDO"}
+ obj: bpy.props.StringProperty()
+
+ def execute(self, context):
+ obj = bpy.data.objects.get(self.obj)
+ product = IfcStore.get_file().by_id(obj.BIMObjectProperties.ifc_definition_id)
+ if not product.HasOpenings:
+ return {"FINISHED"}
+ if [m for m in obj.modifiers if m.type == "BOOLEAN"]:
+ return {"FINISHED"}
+ representation = ifcopenshell.util.representation.get_representation(product, "Model", "Body", "MODEL_VIEW")
+ if not representation:
+ return {"FINISHED"}
+ was_edit_mode = obj.mode == "EDIT"
+ if was_edit_mode:
+ bpy.ops.object.mode_set(mode="OBJECT")
+ bpy.ops.bim.switch_representation(
+ obj=obj.name,
+ should_switch_all_meshes=True,
+ should_reload=True,
+ ifc_definition_id=representation.id(),
+ disable_opening_subtractions=True,
+ )
+ if was_edit_mode:
+ bpy.ops.object.mode_set(mode="EDIT")
+ return {"FINISHED"}
+
+
def generate_box(usecase_path, ifc_file, settings):
box_context = ifcopenshell.util.representation.get_context(ifc_file, "Model", "Box", "MODEL_VIEW")
if not box_context:
@@ -98,6 +177,7 @@ def generate_box(usecase_path, ifc_file, settings):
**{"product": product, "representation": new_box}
)
+
def regenerate_profile_usage(usecase_path, ifc_file, settings):
elements = []
if ifc_file.schema == "IFC2X3":
@@ -117,4 +197,6 @@ def regenerate_profile_usage(usecase_path, ifc_file, settings):
continue
representation = ifcopenshell.util.representation.get_representation(element, "Model", "Body", "MODEL_VIEW")
if representation:
- bpy.ops.bim.switch_representation(obj=obj.name, ifc_definition_id=representation.id(), should_reload=True)
+ bpy.ops.bim.switch_representation(
+ obj=obj.name, ifc_definition_id=representation.id(), should_reload=True, should_switch_all_meshes=True
+ )
diff --git a/src/blenderbim/blenderbim/bim/module/model/profile.py b/src/blenderbim/blenderbim/bim/module/model/profile.py
new file mode 100644
index 0000000000..493d3db501
--- /dev/null
+++ b/src/blenderbim/blenderbim/bim/module/model/profile.py
@@ -0,0 +1,359 @@
+import bpy
+import bmesh
+import math
+import ifcopenshell
+import ifcopenshell.util.type
+import ifcopenshell.util.unit
+import ifcopenshell.util.element
+import mathutils.geometry
+import blenderbim.bim.handler
+from blenderbim.bim.ifc import IfcStore
+from math import pi, degrees, inf
+from mathutils import Vector, Matrix
+from ifcopenshell.api.pset.data import Data as PsetData
+from ifcopenshell.api.material.data import Data as MaterialData
+from blenderbim.bim.module.geometry.helper import Helper
+
+
+def element_listener(element, obj):
+ blenderbim.bim.handler.subscribe_to(obj, "mode", mode_callback)
+
+
+def mode_callback(obj, data):
+ for obj in set(bpy.context.selected_objects + [bpy.context.active_object]):
+ if (
+ not obj.data
+ or not isinstance(obj.data, (bpy.types.Mesh, bpy.types.Curve, bpy.types.TextCurve))
+ or not obj.BIMObjectProperties.ifc_definition_id
+ or not bpy.context.scene.BIMProjectProperties.is_authoring
+ ):
+ return
+ product = IfcStore.get_file().by_id(obj.BIMObjectProperties.ifc_definition_id)
+ parametric = ifcopenshell.util.element.get_psets(product).get("EPset_Parametric")
+ if not parametric or parametric["Engine"] != "BlenderBIM.DumbProfile":
+ return
+ if obj.mode == "EDIT":
+ IfcStore.edited_objs.add(obj)
+ bm = bmesh.from_edit_mesh(obj.data)
+ bmesh.ops.dissolve_limit(bm, angle_limit=pi / 180 * 1, verts=bm.verts, edges=bm.edges)
+ bmesh.update_edit_mesh(obj.data)
+ bm.free()
+ else:
+ material_usage = ifcopenshell.util.element.get_material(product)
+ x, y = obj.dimensions[0:2]
+ if not material_usage.CardinalPoint:
+ new_origin = obj.matrix_world @ (Vector(obj.bound_box[0]) + (Vector((x, y, 0)) / 2))
+ elif material_usage.CardinalPoint == 1:
+ new_origin = obj.matrix_world @ Vector(obj.bound_box[4])
+ elif material_usage.CardinalPoint == 2:
+ new_origin = obj.matrix_world @ (Vector(obj.bound_box[0]) + (Vector((x, 0, 0)) / 2))
+ elif material_usage.CardinalPoint == 3:
+ new_origin = obj.matrix_world @ Vector(obj.bound_box[0])
+ elif material_usage.CardinalPoint == 4:
+ new_origin = obj.matrix_world @ (Vector(obj.bound_box[4]) + (Vector((0, y, 0)) / 2))
+ elif material_usage.CardinalPoint == 5:
+ new_origin = obj.matrix_world @ (Vector(obj.bound_box[0]) + (Vector((x, y, 0)) / 2))
+ elif material_usage.CardinalPoint == 6:
+ new_origin = obj.matrix_world @ (Vector(obj.bound_box[0]) + (Vector((0, y, 0)) / 2))
+ elif material_usage.CardinalPoint == 7:
+ new_origin = obj.matrix_world @ Vector(obj.bound_box[7])
+ elif material_usage.CardinalPoint == 8:
+ new_origin = obj.matrix_world @ (Vector(obj.bound_box[3]) + (Vector((x, 0, 0)) / 2))
+ elif material_usage.CardinalPoint == 9:
+ new_origin = obj.matrix_world @ Vector(obj.bound_box[3])
+ if (obj.matrix_world.translation - new_origin).length < 0.001:
+ return
+ obj.data.transform(
+ Matrix.Translation(
+ (obj.matrix_world.inverted().to_quaternion() @ (obj.matrix_world.translation - new_origin))
+ )
+ )
+ obj.matrix_world.translation = new_origin
+
+
+def ensure_solid(usecase_path, ifc_file, settings):
+ product = ifc_file.by_id(settings["blender_object"].BIMObjectProperties.ifc_definition_id)
+ parametric = ifcopenshell.util.element.get_psets(product).get("EPset_Parametric")
+ if not parametric or parametric["Engine"] != "BlenderBIM.DumbProfile":
+ return
+ material = ifcopenshell.util.element.get_material(product)
+ if material and material.is_a("IfcMaterialProfileSetUsage"):
+ settings["profile_set_usage"] = material
+ else:
+ return
+ settings["ifc_representation_class"] = "IfcExtrudedAreaSolid/IfcMaterialProfileSetUsage"
+
+
+class DumbProfileGenerator:
+ def __init__(self, relating_type):
+ self.relating_type = relating_type
+
+ def generate(self):
+ self.file = IfcStore.get_file()
+ unit_scale = ifcopenshell.util.unit.calculate_unit_scale(IfcStore.get_file())
+ material = ifcopenshell.util.element.get_material(self.relating_type)
+ if material and material.is_a("IfcMaterialProfileSet"):
+ self.profile_set = material
+ else:
+ return
+
+ self.collection = bpy.context.view_layer.active_layer_collection.collection
+ self.collection_obj = bpy.data.objects.get(self.collection.name)
+ self.length = 3
+ self.rotation = 0
+ self.location = Vector((0, 0, 0))
+ return self.derive_from_cursor()
+
+ def derive_from_cursor(self):
+ self.location = bpy.context.scene.cursor.location
+ return self.create_profile()
+
+ def create_profile(self):
+ # A cube
+ verts = [
+ Vector((-1, -1, -1)),
+ Vector((-1, -1, 1)),
+ Vector((-1, 1, -1)),
+ Vector((-1, 1, 1)),
+ Vector((1, -1, -1)),
+ Vector((1, -1, 1)),
+ Vector((1, 1, -1)),
+ Vector((1, 1, 1)),
+ ]
+ edges = []
+ faces = [
+ [0, 2, 3, 1],
+ [2, 3, 7, 6],
+ [4, 5, 7, 6],
+ [0, 1, 5, 4],
+ [1, 3, 7, 5],
+ [0, 2, 6, 4],
+ ]
+
+ mesh = bpy.data.meshes.new(name="Dumb Profile")
+ mesh.from_pydata(verts, edges, faces)
+ obj = bpy.data.objects.new("Profile", mesh)
+ obj.location = self.location
+ if self.collection_obj and self.collection_obj.BIMObjectProperties.ifc_definition_id:
+ obj.location[2] = self.collection_obj.location[2]
+ self.collection.objects.link(obj)
+
+ ifc_classes = ifcopenshell.util.type.get_applicable_entities(self.relating_type.is_a(), self.file.schema)
+ # Standard cases are deprecated, so let's cull them
+ ifc_class = [c for c in ifc_classes if "StandardCase" not in c][0]
+ obj.name = ifc_class[3:]
+ bpy.ops.bim.assign_class(obj=obj.name, ifc_class=ifc_class, should_add_representation=False)
+
+ if self.relating_type.is_a() in ["IfcBeamType", "IfcMemberType"]:
+ obj.rotation_euler[0] = math.pi / 2
+ obj.rotation_euler[2] = math.pi / 2
+
+ element = self.file.by_id(obj.BIMObjectProperties.ifc_definition_id)
+ bpy.ops.bim.assign_type(relating_type=self.relating_type.id(), related_object=obj.name)
+ profile_set_usage = ifcopenshell.util.element.get_material(element)
+ bpy.ops.bim.add_representation(
+ obj=obj.name,
+ context_id=ifcopenshell.util.representation.get_context(self.file, "Model", "Body", "MODEL_VIEW").id(),
+ ifc_representation_class="IfcExtrudedAreaSolid/IfcMaterialProfileSetUsage",
+ profile_set_usage=profile_set_usage.id(),
+ )
+ representation = ifcopenshell.util.representation.get_representation(element, "Model", "Body", "MODEL_VIEW")
+ bpy.ops.bim.switch_representation(
+ obj=obj.name, ifc_definition_id=representation.id(), should_reload=True, should_switch_all_meshes=True
+ )
+ pset = ifcopenshell.api.run("pset.add_pset", self.file, product=element, name="EPset_Parametric")
+ ifcopenshell.api.run("pset.edit_pset", self.file, pset=pset, properties={"Engine": "BlenderBIM.DumbProfile"})
+ MaterialData.load(self.file)
+ obj.select_set(True)
+ return obj
+
+
+class DumbProfileRegenerator:
+ def regenerate_from_profile(self, usecase_path, ifc_file, settings):
+ self.file = ifc_file
+ profile = settings["profile"].Profile
+ if not profile:
+ return
+ for element in self.get_elements_using_profile(profile):
+ self.change_profile(element)
+
+ def sync_object_from_profile(self, usecase_path, ifc_file, settings):
+ self.file = ifc_file
+ profile = settings["profile"].Profile
+ if not profile:
+ return
+ for element in self.get_elements_using_profile(profile):
+ self.sync_object(element)
+
+ def get_elements_using_profile(self, profile):
+ results = []
+ for profile_set in [
+ mp.ToMaterialProfileSet[0] for mp in self.file.get_inverse(profile) if mp.is_a("IfcMaterialProfile")
+ ]:
+ for inverse in self.file.get_inverse(profile_set):
+ if not inverse.is_a("IfcMaterialProfileSetUsage"):
+ continue
+ if self.file.schema == "IFC2X3":
+ for rel in self.file.get_inverse(inverse):
+ if not rel.is_a("IfcRelAssociatesMaterial"):
+ continue
+ results.extend(rel.RelatedObjects)
+ else:
+ for rel in inverse.AssociatedTo:
+ results.extend(rel.RelatedObjects)
+ return results
+
+ def regenerate_from_type(self, usecase_path, ifc_file, settings):
+ new_material = ifcopenshell.util.element.get_material(settings["relating_type"])
+ if not new_material or not new_material.is_a("IfcMaterialProfileSet"):
+ return
+ self.change_profile(settings["related_object"])
+
+ def change_profile(self, element):
+ obj = IfcStore.get_element(element.id())
+ if not obj:
+ return
+ representation = ifcopenshell.util.representation.get_representation(element, "Model", "Body", "MODEL_VIEW")
+ if representation:
+ bpy.ops.bim.switch_representation(
+ obj=obj.name, ifc_definition_id=representation.id(), should_reload=True, should_switch_all_meshes=True
+ )
+
+ def sync_object(self, element):
+ obj = IfcStore.get_element(element.id())
+ if not obj or obj not in IfcStore.edited_objs:
+ return
+ bpy.ops.bim.update_representation(obj=obj.name)
+
+
+class ExtendProfile(bpy.types.Operator):
+ bl_idname = "bim.extend_profile"
+ bl_label = "Extend Profile"
+ bl_options = {"REGISTER", "UNDO"}
+
+ def execute(self, context):
+ selected_objs = context.selected_objects
+ for obj in selected_objs:
+ bpy.ops.bim.dynamically_void_product(obj=obj.name)
+ if len(selected_objs) == 0:
+ return {"FINISHED"}
+ if not context.active_object:
+ return {"FINISHED"}
+ if len(selected_objs) == 1:
+ DumbProfileExtender(context.active_object, target_coordinate=context.scene.cursor.location).extend()
+ IfcStore.edited_objs.add(context.active_object)
+ return {"FINISHED"}
+ if len(selected_objs) < 2:
+ return {"FINISHED"}
+ for obj in selected_objs:
+ if obj == context.active_object:
+ continue
+ DumbProfileExtender(obj, context.active_object).extend()
+ IfcStore.edited_objs.add(obj)
+ return {"FINISHED"}
+
+
+class DumbProfileExtender:
+ # A profile is a prismatic extrusion along its local Z axis.
+ def __init__(self, profile, target=None, target_coordinate=None):
+ self.profile = profile
+ self.target = target
+ self.target_coordinate = target_coordinate
+
+ # An extension of a profile is determined by casting a ray from the cardinal
+ # point of either extreme along the profiles local Z axis to a target
+ # object. The nearest result from this raycast will be the target extension
+ # point.
+ def extend(self):
+ extension_data = self.get_closest_extension_point()
+ if not extension_data:
+ return
+ if extension_data["end"] == "bottom":
+ self.profile.matrix_world.translation = extension_data["contact"]
+ if extension_data["direction"] == "up":
+ self.shift_top_faces(-extension_data["distance"])
+ elif extension_data["direction"] == "down":
+ self.shift_top_faces(extension_data["distance"])
+ if extension_data["end"] == "top":
+ if extension_data["direction"] == "up":
+ self.shift_top_faces(extension_data["distance"])
+ elif extension_data["direction"] == "down":
+ self.shift_top_faces(-extension_data["distance"])
+
+ def shift_top_faces(self, z):
+ vertices = []
+ for f in self.get_profile_top_faces():
+ vertices.extend(f.vertices)
+ for v in set(vertices):
+ self.profile.data.vertices[v].co.z += z
+
+ # An top face is defined as having at least one vertex on the max
+ # Z-axis, and a non-insignificant Z component of its face normal
+ def get_profile_top_faces(self):
+ faces = []
+ max_z = max([v[2] for v in self.profile.bound_box])
+ for f in self.profile.data.polygons:
+ if abs(f.normal.z) < 0.1:
+ continue
+ for v in f.vertices:
+ if self.profile.data.vertices[v].co.z == max_z:
+ faces.append(f)
+ break
+ return faces
+
+ def get_closest_extension_point(self):
+ top = self.profile.matrix_world @ Vector((0, 0, self.profile.dimensions[2]))
+ bottom = self.profile.matrix_world.translation
+ up = self.profile.matrix_world.to_quaternion() @ Vector((0, 0, 1))
+ down = self.profile.matrix_world.to_quaternion() @ Vector((0, 0, -1))
+
+ if self.target:
+ return self.get_closest_extension_point_from_target_obj(top, bottom, up, down)
+ elif self.target_coordinate:
+ return self.get_closest_extension_point_from_target_coordinate(top, bottom, up, down)
+
+ def get_closest_extension_point_from_target_coordinate(self, top, bottom, up, down):
+ point = mathutils.geometry.intersect_line_plane(
+ bottom, top, self.target_coordinate, self.profile.matrix_world.to_quaternion() @ Vector((0, 0, 1))
+ )
+ if not point:
+ return
+ top_distance = (point - top).length
+ bottom_distance = (point - bottom).length
+ if top_distance < bottom_distance:
+ intersection_point, signed_distance = mathutils.geometry.intersect_point_line(point, top, bottom)
+ if signed_distance > 0:
+ return {"contact": point, "distance": top_distance, "end": "top", "direction": "down"}
+ else:
+ return {"contact": point, "distance": top_distance, "end": "top", "direction": "up"}
+ else:
+ intersection_point, signed_distance = mathutils.geometry.intersect_point_line(point, bottom, top)
+ if signed_distance > 0:
+ return {"contact": point, "distance": bottom_distance, "end": "bottom", "direction": "up"}
+ else:
+ return {"contact": point, "distance": bottom_distance, "end": "bottom", "direction": "down"}
+
+ def get_closest_extension_point_from_target_obj(self, top, bottom, up, down):
+ t_top = self.target.matrix_world.inverted() @ top
+ t_bottom = self.target.matrix_world.inverted() @ bottom
+ t_up = self.target.matrix_world.inverted().to_quaternion() @ up
+ t_down = self.target.matrix_world.inverted().to_quaternion() @ down
+
+ results = []
+ results.append((self.target.ray_cast(t_top, t_up, distance=50), top, "top", "up"))
+ results.append((self.target.ray_cast(t_top, t_down, distance=50), top, "top", "down"))
+ results.append((self.target.ray_cast(t_bottom, t_up, distance=50), bottom, "bottom", "up"))
+ results.append((self.target.ray_cast(t_bottom, t_down, distance=50), bottom, "bottom", "down"))
+
+ min_distance = float(inf)
+ final = None
+
+ for result in results:
+ if result[0][0]:
+ contact = self.target.matrix_world @ result[0][1]
+ distance = (contact - result[1]).length
+ if distance < min_distance:
+ min_distance = distance
+ final = {"contact": contact, "distance": distance, "end": result[2], "direction": result[3]}
+
+ return final
diff --git a/src/blenderbim/blenderbim/bim/module/model/root.py b/src/blenderbim/blenderbim/bim/module/model/root.py
new file mode 100644
index 0000000000..729d477b94
--- /dev/null
+++ b/src/blenderbim/blenderbim/bim/module/model/root.py
@@ -0,0 +1,22 @@
+import bpy
+from blenderbim.bim.ifc import IfcStore
+from ifcopenshell.api.style.data import Data as StyleData
+
+
+def sync_name(usecase_path, ifc_file, settings):
+ if "Name" not in settings["attributes"]:
+ return
+ obj = IfcStore.get_element(settings["product"].id())
+ if not obj:
+ return
+ if isinstance(obj, bpy.types.Object):
+ new_name = "{}/{}".format(settings["product"].is_a(), settings["attributes"]["Name"] or "Unnamed")
+ elif isinstance(obj, bpy.types.Material):
+ new_name = settings["attributes"]["Name"] or "Unnamed"
+ if obj.BIMMaterialProperties.ifc_style_id:
+ IfcStore.get_file().by_id(obj.BIMMaterialProperties.ifc_style_id).Name = new_name
+ StyleData.load(IfcStore.get_file(), obj.BIMMaterialProperties.ifc_style_id)
+ collection = bpy.data.collections.get(obj.name)
+ if collection:
+ collection.name = new_name
+ obj.name = new_name
diff --git a/src/blenderbim/blenderbim/bim/module/model/slab.py b/src/blenderbim/blenderbim/bim/module/model/slab.py
index 26b47def02..b16b0b847b 100644
--- a/src/blenderbim/blenderbim/bim/module/model/slab.py
+++ b/src/blenderbim/blenderbim/bim/module/model/slab.py
@@ -195,6 +195,42 @@ def calculate_quantities(usecase_path, ifc_file, settings):
PsetData.load(ifc_file, obj.BIMObjectProperties.ifc_definition_id)
+class AddSlabOpening(bpy.types.Operator):
+ bl_idname = "bim.add_slab_opening"
+ bl_label = "Add Slab Opening"
+ bl_options = {"REGISTER", "UNDO"}
+
+ def execute(self, context):
+ return IfcStore.execute_ifc_operator(self, context)
+
+ def _execute(self, context):
+ selected_objs = context.selected_objects
+ if len(selected_objs) == 0 or not context.active_object:
+ return {"FINISHED"}
+ slab_obj = context.active_object
+ if not slab_obj.BIMObjectProperties.ifc_definition_id:
+ return {"FINISHED"}
+ slab = IfcStore.get_file().by_id(slab_obj.BIMObjectProperties.ifc_definition_id)
+ local_location = slab_obj.matrix_world.inverted() @ context.scene.cursor.location
+ raycast = slab_obj.closest_point_on_mesh(local_location, distance=0.01)
+ if not raycast[0]:
+ return {"FINISHED"}
+ bpy.ops.mesh.primitive_cube_add(size=slab_obj.dimensions[2] * 2)
+ opening = context.selected_objects[0]
+
+ # Place the opening in the middle of the slab
+ global_location = slab_obj.matrix_world @ raycast[1]
+ normal = raycast[2]
+ normal.negate()
+ global_normal = slab_obj.matrix_world.to_quaternion() @ normal
+ opening.location = global_location + (global_normal * (slab_obj.dimensions[2] / 2))
+
+ opening.rotation_euler = slab_obj.rotation_euler
+ opening.name = "Opening"
+ bpy.ops.bim.add_opening(opening=opening.name, obj=slab_obj.name)
+ return {"FINISHED"}
+
+
class DumbSlabGenerator:
def __init__(self, relating_type):
self.relating_type = relating_type
@@ -242,7 +278,12 @@ class DumbSlabGenerator:
modifier.use_even_offset = True
modifier.offset = 1
modifier.thickness = self.depth
- obj.name = "Slab"
+
+ ifc_classes = ifcopenshell.util.type.get_applicable_entities(self.relating_type.is_a(), self.file.schema)
+ # Standard cases are deprecated, so let's cull them
+ ifc_class = [c for c in ifc_classes if "StandardCase" not in c][0]
+
+ obj.name = ifc_class[3:]
obj.location = self.location
if self.collection_obj and self.collection_obj.BIMObjectProperties.ifc_definition_id:
obj.location[2] = self.collection_obj.location[2] - self.depth
@@ -251,8 +292,7 @@ class DumbSlabGenerator:
self.collection.objects.link(obj)
bpy.ops.bim.assign_class(
obj=obj.name,
- ifc_class="IfcSlab",
- predefined_type="FLOOR",
+ ifc_class=ifc_class,
ifc_representation_class="IfcExtrudedAreaSolid/IfcArbitraryProfileDefWithVoids",
)
bpy.ops.bim.assign_type(relating_type=self.relating_type.id(), related_object=obj.name)
diff --git a/src/blenderbim/blenderbim/bim/module/model/ui.py b/src/blenderbim/blenderbim/bim/module/model/ui.py
index 0eae3f114e..9e5db798a4 100644
--- a/src/blenderbim/blenderbim/bim/module/model/ui.py
+++ b/src/blenderbim/blenderbim/bim/module/model/ui.py
@@ -9,6 +9,10 @@ class BIM_PT_authoring(Panel):
bl_region_type = "UI"
bl_category = "BlenderBIM"
+ @classmethod
+ def poll(cls, context):
+ return IfcStore.get_file()
+
def draw(self, context):
tprops = context.scene.BIMTypeProperties
col = self.layout.column(align=True)
diff --git a/src/blenderbim/blenderbim/bim/module/model/wall.py b/src/blenderbim/blenderbim/bim/module/model/wall.py
index 98d9f6b691..340ecf7612 100644
--- a/src/blenderbim/blenderbim/bim/module/model/wall.py
+++ b/src/blenderbim/blenderbim/bim/module/model/wall.py
@@ -20,7 +20,7 @@ def element_listener(element, obj):
def mode_callback(obj, data):
- for obj in bpy.context.selected_objects + [bpy.context.active_object]:
+ for obj in set(bpy.context.selected_objects + [bpy.context.active_object]):
if (
obj.mode != "EDIT"
or not obj.data
@@ -33,21 +33,47 @@ def mode_callback(obj, data):
parametric = ifcopenshell.util.element.get_psets(product).get("EPset_Parametric")
if not parametric or parametric["Engine"] != "BlenderBIM.DumbWall":
return
+ bpy.ops.bim.dynamically_void_product(obj=obj.name)
IfcStore.edited_objs.add(obj)
+ bm = bmesh.from_edit_mesh(obj.data)
+ bmesh.ops.dissolve_limit(bm, angle_limit=pi / 180 * 1, verts=bm.verts, edges=bm.edges)
+ bmesh.update_edit_mesh(obj.data)
+ bm.free()
-class AddWall(bpy.types.Operator):
- bl_idname = "bim.add_wall"
- bl_label = "Add Wall"
+class AddWallOpening(bpy.types.Operator):
+ bl_idname = "bim.add_wall_opening"
+ bl_label = "Add Wall Opening"
bl_options = {"REGISTER", "UNDO"}
- join_type: bpy.props.StringProperty()
def execute(self, context):
return IfcStore.execute_ifc_operator(self, context)
def _execute(self, context):
- props = context.scene.BIMModelProperties
- bpy.ops.bim.add_type_instance(ifc_class="IfcWallType", relating_type=int(props.relating_type))
+ selected_objs = context.selected_objects
+ if len(selected_objs) == 0 or not context.active_object:
+ return {"FINISHED"}
+ wall_obj = context.active_object
+ if not wall_obj.BIMObjectProperties.ifc_definition_id:
+ return {"FINISHED"}
+ wall = IfcStore.get_file().by_id(wall_obj.BIMObjectProperties.ifc_definition_id)
+ local_location = wall_obj.matrix_world.inverted() @ context.scene.cursor.location
+ raycast = wall_obj.closest_point_on_mesh(local_location, distance=0.01)
+ if not raycast[0]:
+ return {"FINISHED"}
+ bpy.ops.mesh.primitive_cube_add(size=wall_obj.dimensions[1] * 2)
+ opening = bpy.context.selected_objects[0]
+
+ # Place the opening in the middle of the wall
+ global_location = wall_obj.matrix_world @ raycast[1]
+ normal = raycast[2]
+ normal.negate()
+ global_normal = wall_obj.matrix_world.to_quaternion() @ normal
+ opening.location = global_location + (global_normal * (wall_obj.dimensions[1] / 2))
+
+ opening.rotation_euler = wall_obj.rotation_euler
+ opening.name = "Opening"
+ bpy.ops.bim.add_opening(opening=opening.name, obj=wall_obj.name)
return {"FINISHED"}
@@ -59,13 +85,21 @@ class JoinWall(bpy.types.Operator):
def execute(self, context):
selected_objs = context.selected_objects
+ for obj in selected_objs:
+ bpy.ops.bim.dynamically_void_product(obj=obj.name)
if len(selected_objs) == 0:
return {"FINISHED"}
if not self.join_type:
for obj in selected_objs:
DumbWallJoiner(obj, obj).unjoin()
return {"FINISHED"}
- if len(selected_objs) < 2 or not context.active_object:
+ if not context.active_object:
+ return {"FINISHED"}
+ if len(selected_objs) == 1:
+ DumbWallJoiner(context.active_object, target_coordinate=context.scene.cursor.location).extend()
+ IfcStore.edited_objs.add(context.active_object)
+ return {"FINISHED"}
+ if len(selected_objs) < 2:
return {"FINISHED"}
for obj in selected_objs:
if obj == context.active_object:
@@ -148,6 +182,8 @@ def recalculate_dumb_wall_origin(wall, new_origin=None):
)
)
wall.matrix_world.translation = new_origin
+ for child in wall.children:
+ child.matrix_parent_inverse = wall.matrix_world.inverted()
class DumbWallSplitter:
@@ -223,6 +259,9 @@ class DumbWallFlipper:
).length < 0.001:
recalculate_dumb_wall_origin(self.wall, self.wall.matrix_world @ Vector(self.wall.bound_box[7]))
self.rotate_wall_180()
+ bpy.context.view_layer.update()
+ for child in self.wall.children:
+ child.matrix_parent_inverse = self.wall.matrix_world.inverted()
else:
recalculate_dumb_wall_origin(self.wall)
@@ -327,16 +366,19 @@ class DumbWallJoiner:
# 2. Given an "end face", identify a side "target face" of the other wall
# to project towards.
# 3. Project the vertices of an "end face" to the "target face".
- def __init__(self, wall1, wall2):
+ # Alternatively, a target coordinate may be provided as an imaginary point for the wall to join to
+ def __init__(self, wall1, wall2=None, target_coordinate=None):
self.wall1 = wall1
self.wall2 = wall2
+ self.target_coordinate = target_coordinate
self.should_project_to_frontface = True
self.should_attempt_v_junction_projection = False
self.initialise_convenience_variables()
def initialise_convenience_variables(self):
self.wall1_matrix = self.wall1.matrix_world
- self.wall2_matrix = self.wall2.matrix_world
+ if self.wall2:
+ self.wall2_matrix = self.wall2.matrix_world
self.pos_x = self.wall1_matrix.to_quaternion() @ Vector((1, 0, 0))
self.neg_x = self.wall1_matrix.to_quaternion() @ Vector((-1, 0, 0))
@@ -354,6 +396,26 @@ class DumbWallJoiner:
self.wall1.data.vertices[v].co[0] = max_x
self.recalculate_origins()
+ # An extension is where a single end of wall1 is projected to an imaginary
+ # plane denoted by the target coordinate.
+ def extend(self):
+ wall1_min_faces, wall1_max_faces = self.get_wall_end_faces(self.wall1)
+ ef1_distance = abs(mathutils.geometry.distance_point_to_plane(
+ self.wall1_matrix @ self.wall1.data.vertices[wall1_min_faces[0].vertices[0]].co,
+ self.target_coordinate,
+ self.pos_x,
+ ))
+ ef2_distance = abs(mathutils.geometry.distance_point_to_plane(
+ self.wall1_matrix @ self.wall1.data.vertices[wall1_max_faces[0].vertices[0]].co,
+ self.target_coordinate,
+ self.neg_x,
+ ))
+ if ef1_distance < ef2_distance:
+ self.project_end_faces_to_target(wall1_min_faces)
+ else:
+ self.project_end_faces_to_target(wall1_max_faces)
+ self.recalculate_origins()
+
# A T-junction is an ordered operation where a single end of wall1 is joined
# to wall2 if possible (i.e. walls aren't parallel). Wall2 is not modified.
# First, wall1 end faces are identified. We attempt to project an end face
@@ -439,7 +501,8 @@ class DumbWallJoiner:
def recalculate_origins(self):
bpy.context.view_layer.update()
recalculate_dumb_wall_origin(self.wall1)
- recalculate_dumb_wall_origin(self.wall2)
+ if self.wall2:
+ recalculate_dumb_wall_origin(self.wall2)
def swap_walls(self):
self.wall1, self.wall2 = self.wall2, self.wall1
@@ -467,6 +530,14 @@ class DumbWallJoiner:
local_point = wall_matrix.inverted() @ point
wall.data.vertices[v].co = local_point
+ def project_end_faces_to_target(self, end_faces):
+ for end_face in end_faces:
+ for v in end_face.vertices:
+ vertex = self.wall1_matrix @ self.wall1.data.vertices[v].co
+ self.wall1.data.vertices[v].co = self.wall1_matrix.inverted() @ mathutils.geometry.intersect_line_plane(
+ vertex, vertex + self.pos_x, self.target_coordinate, self.pos_x
+ )
+
# A projection target face is a side face on the target wall that has a
# significant local Y component to its normal (i.e. is not pointing up or
# down or something). In addition, its plane must intersect with the
@@ -536,6 +607,8 @@ class DumbWallJoiner:
min_x = min([v[0] for v in wall.bound_box])
max_x = max([v[0] for v in wall.bound_box])
for f in wall.data.polygons:
+ if abs(f.normal.x) < 0.1:
+ continue
end_face_index = self.get_wall_face_end(wall, f, min_x, max_x)
if end_face_index == 1:
min_faces.append(f)
@@ -546,9 +619,9 @@ class DumbWallJoiner:
# 1 is the leftmost (minimum local X axis) end, and 2 is the rightmost end
def get_wall_face_end(self, wall, face, min_x, max_x):
for v in face.vertices:
- if wall.data.vertices[v].co.x == min_x and abs(face.normal.x) > 0.1:
+ if wall.data.vertices[v].co.x == min_x:
return 1
- if wall.data.vertices[v].co.x == max_x and abs(face.normal.x) > 0.1:
+ if wall.data.vertices[v].co.x == max_x:
return 2
@@ -698,17 +771,24 @@ class DumbWallGenerator:
]
mesh = bpy.data.meshes.new(name="Wall")
mesh.from_pydata(verts, [], faces)
- obj = bpy.data.objects.new("Wall", mesh)
+
+ ifc_classes = ifcopenshell.util.type.get_applicable_entities(self.relating_type.is_a(), self.file.schema)
+ # Standard cases are deprecated, so let's cull them
+ ifc_class = [c for c in ifc_classes if "StandardCase" not in c][0]
+
+ obj = bpy.data.objects.new(ifc_class[3:], mesh)
obj.location = self.location
obj.rotation_euler[2] = self.rotation
if self.collection_obj and self.collection_obj.BIMObjectProperties.ifc_definition_id:
obj.location[2] = self.collection_obj.location[2]
self.collection.objects.link(obj)
+
bpy.ops.bim.assign_class(
obj=obj.name,
- ifc_class="IfcWall",
+ ifc_class=ifc_class,
ifc_representation_class="IfcExtrudedAreaSolid/IfcArbitraryClosedProfileDef",
)
+
bpy.ops.bim.assign_type(relating_type=self.relating_type.id(), related_object=obj.name)
element = self.file.by_id(obj.BIMObjectProperties.ifc_definition_id)
pset = ifcopenshell.api.run("pset.add_pset", self.file, product=element, name="EPset_Parametric")
diff --git a/src/blenderbim/blenderbim/bim/module/model/window.py b/src/blenderbim/blenderbim/bim/module/model/window.py
index 938573eb8b..ba491f4413 100644
--- a/src/blenderbim/blenderbim/bim/module/model/window.py
+++ b/src/blenderbim/blenderbim/bim/module/model/window.py
@@ -67,7 +67,7 @@ def add_object(self, context):
obj = bpy.data.objects.new("Window Profile", mesh)
context.view_layer.active_layer_collection.collection.objects.link(obj)
- bpy.context.view_layer.objects.active = obj
+ context.view_layer.objects.active = obj
obj.select_set(True)
bpy.ops.object.convert(target="CURVE")
@@ -85,7 +85,7 @@ def add_object(self, context):
obj2 = bpy.data.objects.new("Window", mesh)
context.view_layer.active_layer_collection.collection.objects.link(obj2)
- bpy.context.view_layer.objects.active = obj2
+ context.view_layer.objects.active = obj2
obj2.select_set(True)
bpy.ops.object.convert(target="CURVE")
obj2.data.splines[0].use_cyclic_u = True
@@ -116,11 +116,11 @@ def add_object(self, context):
modifier.thickness = self.overall_height - 0.08
context.view_layer.active_layer_collection.collection.objects.link(obj3)
- bpy.context.view_layer.objects.active = obj3
+ context.view_layer.objects.active = obj3
obj3.select_set(True)
bpy.ops.object.convert(target="MESH")
- ctx = bpy.context.copy()
+ ctx = context.copy()
ctx["active_object"] = obj2
ctx["selected_editable_objects"] = [obj2, obj3]
bpy.ops.object.join(ctx)
@@ -142,7 +142,7 @@ def add_object(self, context):
modifier.thickness = self.overall_height
context.view_layer.active_layer_collection.collection.objects.link(obj4)
- bpy.context.view_layer.objects.active = obj4
+ context.view_layer.objects.active = obj4
obj4.select_set(True)
bpy.ops.object.convert(target="MESH")
obj4.display_type = "WIRE"
diff --git a/src/blenderbim/blenderbim/bim/module/model/workspace.py b/src/blenderbim/blenderbim/bim/module/model/workspace.py
index 741276a526..4b29e5092f 100644
--- a/src/blenderbim/blenderbim/bim/module/model/workspace.py
+++ b/src/blenderbim/blenderbim/bim/module/model/workspace.py
@@ -1,6 +1,7 @@
import os
import bpy
from bpy.types import WorkSpaceTool
+from blenderbim.bim.ifc import IfcStore
class BimTool(WorkSpaceTool):
@@ -16,44 +17,138 @@ class BimTool(WorkSpaceTool):
bl_keymap = (
# ("bim.wall_tool_op", {"type": 'MOUSEMOVE', "value": 'ANY'}, {"properties": []}),
# ("mesh.add_wall", {"type": 'LEFTMOUSE', "value": 'PRESS'}, {"properties": []}),
- ("bim.add_wall", {"type": "A", "value": "PRESS", "shift": True}, {"properties": []}),
- ("bim.join_wall", {"type": "E", "value": "PRESS", "shift": True}, {"properties": [("join_type", "T")]}),
+ ("bim.add_type_instance", {"type": "A", "value": "PRESS", "shift": True}, {"properties": []}),
+ ("bim.hotkey", {"type": "E", "value": "PRESS", "shift": True}, {"properties": [("hotkey", "S_E")]}),
("bim.join_wall", {"type": "T", "value": "PRESS", "shift": True}, {"properties": [("join_type", "L")]}),
("bim.join_wall", {"type": "Y", "value": "PRESS", "shift": True}, {"properties": [("join_type", "V")]}),
("bim.flip_wall", {"type": "F", "value": "PRESS", "shift": True}, {"properties": []}),
("bim.split_wall", {"type": "S", "value": "PRESS", "shift": True}, {"properties": []}),
- (
- "bim.align_wall",
- {"type": "X", "value": "PRESS", "shift": True},
- {"properties": [("align_type", "EXTERIOR")]},
- ),
- (
- "bim.align_wall",
- {"type": "C", "value": "PRESS", "shift": True},
- {"properties": [("align_type", "CENTERLINE")]},
- ),
- (
- "bim.align_wall",
- {"type": "V", "value": "PRESS", "shift": True},
- {"properties": [("align_type", "INTERIOR")]},
- ),
+ ("bim.hotkey", {"type": "X", "value": "PRESS", "shift": True}, {"properties": [("hotkey", "S_X")]}),
+ ("bim.hotkey", {"type": "C", "value": "PRESS", "shift": True}, {"properties": [("hotkey", "S_C")]}),
+ ("bim.hotkey", {"type": "V", "value": "PRESS", "shift": True}, {"properties": [("hotkey", "S_V")]}),
+ ("bim.hotkey", {"type": "O", "value": "PRESS", "shift": True}, {"properties": [("hotkey", "S_O")]}),
+ ("bim.hotkey", {"type": "O", "value": "PRESS", "alt": True}, {"properties": [("hotkey", "A_O")]}),
+ ("bim.hotkey", {"type": "D", "value": "PRESS", "alt": True}, {"properties": [("hotkey", "A_D")]}),
)
def draw_settings(context, layout, tool):
- props = context.scene.BIMModelProperties
row = layout.row(align=True)
+ props = context.scene.BIMTypeProperties
+ row.prop(props, "ifc_class", text="")
row.prop(props, "relating_type", text="")
row.label(text="", icon="BLANK1")
+ row = layout.row(align=True)
row.label(text="", icon="EVENT_SHIFT")
- row.label(text="Add", icon="EVENT_A")
- row.label(text="Extend", icon="EVENT_E")
- row.label(text="Butt", icon="EVENT_T")
- row.label(text="Mitre", icon="EVENT_Y")
- row.label(text="Flip", icon="EVENT_F")
- row.label(text="Split", icon="EVENT_S")
- row.label(text="", icon="EVENT_X")
- row.label(text="", icon="EVENT_C")
- row.label(text="", icon="EVENT_V")
+ row.label(text="Add Type Instance", icon="EVENT_A")
+
+ if props.ifc_class == "IfcWallType":
+ row = layout.row()
+ row.label(text="Join")
+ row = layout.row(align=True)
+ row.label(text="", icon="EVENT_SHIFT")
+ row.label(text="Extend", icon="EVENT_E")
+ row = layout.row(align=True)
+ row.label(text="", icon="EVENT_SHIFT")
+ row.label(text="Butt", icon="EVENT_T")
+ row = layout.row(align=True)
+ row.label(text="", icon="EVENT_SHIFT")
+ row.label(text="Mitre", icon="EVENT_Y")
+
+ row = layout.row()
+ row.label(text="Wall Tools")
+ row = layout.row(align=True)
+ row.label(text="", icon="EVENT_SHIFT")
+ row.label(text="Flip", icon="EVENT_F")
+ row = layout.row(align=True)
+ row.label(text="", icon="EVENT_SHIFT")
+ row.label(text="Split", icon="EVENT_S")
+ row = layout.row(align=True)
+ row.label(text="", icon="EVENT_SHIFT")
+ row.label(text="Opening", icon="EVENT_O")
+
+ if props.ifc_class == "IfcSlabType":
+ row = layout.row(align=True)
+ row.label(text="", icon="EVENT_SHIFT")
+ row.label(text="Opening", icon="EVENT_O")
+
+ if props.ifc_class in ["IfcColumnType", "IfcBeamType", "IfcMemberType"]:
+ row = layout.row()
+ row.label(text="Join")
+ row = layout.row(align=True)
+ row.label(text="", icon="EVENT_SHIFT")
+ row.label(text="Extend", icon="EVENT_E")
+
+ row = layout.row(align=True)
row.label(text="Align")
+ row = layout.row(align=True)
+ row.label(text="", icon="EVENT_SHIFT")
+ row.label(text="Align Exterior", icon="EVENT_X")
+ row = layout.row(align=True)
+ row.label(text="", icon="EVENT_SHIFT")
+ row.label(text="Align Centerline", icon="EVENT_C")
+ row = layout.row(align=True)
+ row.label(text="", icon="EVENT_SHIFT")
+ row.label(text="Align Interior", icon="EVENT_V")
+ row = layout.row(align=True)
+
+ row = layout.row(align=True)
+ row.label(text="Mode")
+ row = layout.row(align=True)
+ row.label(text="", icon="EVENT_ALT")
+ row.label(text="Opening", icon="EVENT_O")
+ row = layout.row(align=True)
+ row.label(text="", icon="EVENT_ALT")
+ row.label(text="Decomposition", icon="EVENT_D")
+
+
+class Hotkey(bpy.types.Operator):
+ bl_idname = "bim.hotkey"
+ bl_label = "Hotkey"
+ bl_options = {"REGISTER", "UNDO"}
+ hotkey: bpy.props.StringProperty()
+
+ def execute(self, context):
+ return IfcStore.execute_ifc_operator(self, context)
+
+ def _execute(self, context):
+ self.props = context.scene.BIMTypeProperties
+ getattr(self, f"hotkey_{self.hotkey}")()
+ return {"FINISHED"}
+
+ def hotkey_S_C(self):
+ if self.props.ifc_class == "IfcWallType":
+ bpy.ops.bim.align_wall(align_type="CENTERLINE")
+ else:
+ bpy.ops.bim.align_product(align_type="CENTERLINE")
+
+ def hotkey_S_E(self):
+ if self.props.ifc_class == "IfcWallType":
+ bpy.ops.bim.join_wall(join_type="T")
+ elif self.props.ifc_class in ["IfcColumnType", "IfcBeamType", "IfcMemberType"]:
+ bpy.ops.bim.extend_profile()
+
+ def hotkey_S_V(self):
+ if self.props.ifc_class == "IfcWallType":
+ bpy.ops.bim.align_wall(align_type="INTERIOR")
+ else:
+ bpy.ops.bim.align_product(align_type="POSITIVE")
+
+ def hotkey_S_X(self):
+ if self.props.ifc_class == "IfcWallType":
+ bpy.ops.bim.align_wall(align_type="EXTERIOR")
+ else:
+ bpy.ops.bim.align_product(align_type="NEGATIVE")
+
+ def hotkey_S_O(self):
+ if self.props.ifc_class == "IfcWallType":
+ bpy.ops.bim.add_wall_opening()
+ elif self.props.ifc_class == "IfcSlabType":
+ bpy.ops.bim.add_slab_opening()
+
+ def hotkey_A_D(self):
+ bpy.ops.bim.toggle_decomposition_parenting()
+
+ def hotkey_A_O(self):
+ bpy.ops.bim.toggle_opening_visibility()
diff --git a/src/blenderbim/blenderbim/bim/module/owner/__init__.py b/src/blenderbim/blenderbim/bim/module/owner/__init__.py
index a097f0fb07..592e0e0167 100644
--- a/src/blenderbim/blenderbim/bim/module/owner/__init__.py
+++ b/src/blenderbim/blenderbim/bim/module/owner/__init__.py
@@ -2,6 +2,7 @@ import bpy
from . import ui, prop, operator
classes = (
+ operator.AddOrRemoveElementFromCollection,
operator.EnableEditingPerson,
operator.DisableEditingPerson,
operator.AddPerson,
diff --git a/src/blenderbim/blenderbim/bim/module/owner/operator.py b/src/blenderbim/blenderbim/bim/module/owner/operator.py
index 20e4affca3..744822911a 100644
--- a/src/blenderbim/blenderbim/bim/module/owner/operator.py
+++ b/src/blenderbim/blenderbim/bim/module/owner/operator.py
@@ -1,10 +1,49 @@
import bpy
-import json
import ifcopenshell.api
from blenderbim.bim.ifc import IfcStore
from ifcopenshell.api.owner.data import Data
+def flatten_collection(collection):
+ return [v.name for v in collection] if collection else None
+
+
+def populate_collection(collection, collection_data):
+ collection.clear()
+ if collection_data:
+ for value in collection_data:
+ collection.add().name = value
+ else:
+ collection.add()
+
+
+class AddOrRemoveElementFromCollection(bpy.types.Operator):
+ bl_idname = "bim.add_or_remove_element_from_collection"
+ bl_label = "Add or Remove Element From Collection"
+ bl_options = {"REGISTER", "UNDO"}
+ operation : bpy.props.EnumProperty(
+ items=(
+ ("+", 'Add', "Add item to collection"),
+ ("-", 'Remove', "Remove item from collection")
+ ),
+ default="+",
+ )
+ collection_path : bpy.props.StringProperty()
+ selected_item_idx : bpy.props.IntProperty(default=-1)
+
+ def execute(self, context):
+ # Ugly but I hate using eval()
+ collection = context.scene
+ for attr in self.collection_path.split("."):
+ if hasattr(collection, attr):
+ collection = getattr(collection, attr)
+ if self.operation == "+" and hasattr(collection, "add"):
+ collection.add()
+ elif hasattr(collection, "remove") and 0 <= self.selected_item_idx < len(collection):
+ collection.remove(self.selected_item_idx)
+ return {"FINISHED"}
+
+
class EnableEditingPerson(bpy.types.Operator):
bl_idname = "bim.enable_editing_person"
bl_label = "Enable Editing Person"
@@ -17,12 +56,13 @@ class EnableEditingPerson(bpy.types.Operator):
props.active_person_id = self.person_id
data = Data.people[self.person_id]
name = data["Id"] if self.file.schema == "IFC2X3" else data["Identification"]
- props.person.name = name or ""
- props.person.family_name = data["FamilyName"] or ""
- props.person.given_name = data["GivenName"] or ""
- props.person.middle_names = json.dumps(data["MiddleNames"]) if data["MiddleNames"] else ""
- props.person.prefix_titles = json.dumps(data["PrefixTitles"]) if data["PrefixTitles"] else ""
- props.person.suffix_titles = json.dumps(data["SuffixTitles"]) if data["SuffixTitles"] else ""
+ person = props.person
+ person.name = name or ""
+ person.family_name = data["FamilyName"] or ""
+ person.given_name = data["GivenName"] or ""
+ populate_collection(person.middle_names, data.get("MiddleNames", None))
+ populate_collection(person.prefix_titles, data.get("PrefixTitles", None))
+ populate_collection(person.suffix_titles, data.get("SuffixTitles", None))
return {"FINISHED"}
@@ -61,13 +101,14 @@ class EditPerson(bpy.types.Operator):
def _execute(self, context):
self.file = IfcStore.get_file()
props = context.scene.BIMOwnerProperties
+ person = props.person
attributes = {
- "Identification": props.person.name or None,
- "FamilyName": props.person.family_name or None,
- "GivenName": props.person.given_name or None,
- "MiddleNames": json.loads(props.person.middle_names) if props.person.middle_names else None,
- "PrefixTitles": json.loads(props.person.prefix_titles) if props.person.prefix_titles else None,
- "SuffixTitles": json.loads(props.person.suffix_titles) if props.person.suffix_titles else None,
+ "Identification": person.name or None,
+ "FamilyName": person.family_name or None,
+ "GivenName": person.given_name or None,
+ "MiddleNames": flatten_collection(person.middle_names),
+ "PrefixTitles": flatten_collection(person.prefix_titles),
+ "SuffixTitles": flatten_collection(person.suffix_titles),
}
if self.file.schema == "IFC2X3":
attributes["Id"] = attributes["Identification"]
@@ -215,29 +256,28 @@ class EnableEditingAddress(bpy.types.Operator):
props = context.scene.BIMOwnerProperties
props.active_address_id = self.address_id
data = Data.addresses[self.address_id]
- props.address.name = data["type"]
- props.address.purpose = data["Purpose"] or "None"
- props.address.description = data["Description"] or ""
- props.address.user_defined_purpose = data["UserDefinedPurpose"] or ""
+ address = props.address
+ address.name = data["type"]
+ address.purpose = data["Purpose"] or "None"
+ address.description = data["Description"] or ""
+ address.user_defined_purpose = data["UserDefinedPurpose"] or ""
- if data["type"] == "IfcTelecomAddress":
- props.address.telephone_numbers = json.dumps(data["TelephoneNumbers"]) if data["TelephoneNumbers"] else ""
- props.address.facsimile_numbers = json.dumps(data["FacsimileNumbers"]) if data["FacsimileNumbers"] else ""
- props.address.pager_number = data["PagerNumber"] or ""
- props.address.electronic_mail_addresses = (
- json.dumps(data["ElectronicMailAddresses"]) if data["ElectronicMailAddresses"] else ""
- )
- props.address.www_home_page_url = data["WWWHomePageURL"] or ""
+ if data["type"] == "IfcTelecomAddress":
+ populate_collection(address.telephone_numbers, data.get("TelephoneNumbers", None))
+ populate_collection(address.facsimile_numbers, data.get("FacsimileNumbers", None))
+ address.pager_number = data["PagerNumber"] or ""
+ populate_collection(address.electronic_mail_addresses, data.get("ElectronicMailAddresses", None))
+ address.www_home_page_url = data["WWWHomePageURL"] or ""
if self.file.schema != "IFC2X3":
- props.address.messaging_ids = json.dumps(data["MessagingIDs"]) if data["MessagingIDs"] else ""
+ populate_collection(address.messaging_ids, data.get("MessagingIDs", None))
elif data["type"] == "IfcPostalAddress":
- props.address.internal_location = data["InternalLocation"] or ""
- props.address.address_lines = json.dumps(data["AddressLines"]) if data["AddressLines"] else ""
- props.address.postal_box = data["PostalBox"] or ""
- props.address.town = data["Town"] or ""
- props.address.region = data["Region"] or ""
- props.address.postal_code = data["PostalCode"] or ""
- props.address.country = data["Country"] or ""
+ address.internal_location = data["InternalLocation"] or ""
+ populate_collection(address.address_lines, data.get("AddressLines", None))
+ address.postal_box = data["PostalBox"] or ""
+ address.town = data["Town"] or ""
+ address.region = data["Region"] or ""
+ address.postal_code = data["PostalCode"] or ""
+ address.country = data["Country"] or ""
return {"FINISHED"}
@@ -273,18 +313,12 @@ class EditAddress(bpy.types.Operator):
if address.is_a("IfcTelecomAddress"):
attributes.update(
{
- "TelephoneNumbers": json.loads(props.address.telephone_numbers)
- if props.address.telephone_numbers
- else None,
- "FacsimileNumbers": json.loads(props.address.facsimile_numbers)
- if props.address.facsimile_numbers
- else None,
+ "TelephoneNumbers": flatten_collection(props.address.telephone_numbers),
+ "FacsimileNumbers": flatten_collection(props.address.facsimile_numbers),
"PagerNumber": props.address.pager_number or None,
- "ElectronicMailAddresses": json.loads(props.address.electronic_mail_addresses)
- if props.address.electronic_mail_addresses
- else None,
+ "ElectronicMailAddresses": flatten_collection(props.address.electronic_mail_addresses),
"WWWHomePageURL": props.address.www_home_page_url or None,
- "MessagingIDs": json.loads(props.address.messaging_ids) if props.address.messaging_ids else None,
+ "MessagingIDs": flatten_collection(props.address.messaging_ids),
}
)
if self.file.schema == "IFC2X3":
@@ -293,7 +327,7 @@ class EditAddress(bpy.types.Operator):
attributes.update(
{
"InternalLocation": props.address.internal_location or None,
- "AddressLines": json.loads(props.address.address_lines) if props.address.address_lines else None,
+ "AddressLines": flatten_collection(props.address.address_lines),
"PostalBox": props.address.postal_box or None,
"Town": props.address.town or None,
"Region": props.address.region or None,
diff --git a/src/blenderbim/blenderbim/bim/module/owner/prop.py b/src/blenderbim/blenderbim/bim/module/owner/prop.py
index a92a6488fe..367aa13784 100644
--- a/src/blenderbim/blenderbim/bim/module/owner/prop.py
+++ b/src/blenderbim/blenderbim/bim/module/owner/prop.py
@@ -14,27 +14,37 @@ from bpy.props import (
CollectionProperty,
)
+_persons_enum = []
+_organisations_enum = []
+
+def purge():
+ global _persons_enum
+ global _organisations_enum
+ _persons_enum.clear()
+ _organisations_enum.clear()
def getPersons(self, context):
+ global _persons_enum
if not Data.is_loaded:
Data.load(IfcStore.get_file())
- results = []
+ _persons_enum.clear()
for ifc_id, person in Data.people.items():
if "Id" in person:
identifier = person["Id"] or ""
else:
identifier = person["Identification"] or ""
- results.append((str(ifc_id), identifier, ""))
- return results
+ _persons_enum.append((str(ifc_id), identifier, ""))
+ return _persons_enum
def getOrganisations(self, context):
+ global _organisations_enum
if not Data.is_loaded:
Data.load(IfcStore.get_file())
- results = []
+ _organisations_enum.clear()
for ifc_id, organisation in Data.organisations.items():
- results.append((str(ifc_id), organisation["Name"], ""))
- return results
+ _organisations_enum.append((str(ifc_id), organisation["Name"], ""))
+ return _organisations_enum
class Address(PropertyGroup):
@@ -54,19 +64,19 @@ class Address(PropertyGroup):
user_defined_purpose: StringProperty(name="Custom Purpose")
internal_location: StringProperty(name="Internal Location")
- address_lines: StringProperty(name="Address")
+ address_lines: CollectionProperty(type=StrProperty, name="Address")
postal_box: StringProperty(name="Postal Box")
town: StringProperty(name="Town")
region: StringProperty(name="Region")
postal_code: StringProperty(name="Postal Code")
country: StringProperty(name="Country")
- telephone_numbers: StringProperty(name="Telephone Numbers")
- facsimile_numbers: StringProperty(name="Facsimile Numbers")
+ telephone_numbers: CollectionProperty(type=StrProperty, name="Telephone Numbers")
+ facsimile_numbers: CollectionProperty(type=StrProperty, name="Facsimile Numbers")
pager_number: StringProperty(name="Pager Number")
- electronic_mail_addresses: StringProperty(name="Emails")
- www_home_page_url: StringProperty(name="Websites")
- messaging_ids: StringProperty(name="IMs")
+ electronic_mail_addresses: CollectionProperty(type=StrProperty, name="Emails")
+ www_home_page_url: StringProperty(name="Website")
+ messaging_ids: CollectionProperty(type=StrProperty, name="IMs")
class Role(PropertyGroup):
@@ -112,9 +122,9 @@ class Person(PropertyGroup):
name: StringProperty(name="Identification")
family_name: StringProperty(name="Family Name")
given_name: StringProperty(name="Given Name")
- middle_names: StringProperty(name="Middle Names")
- prefix_titles: StringProperty(name="Prefixes")
- suffix_titles: StringProperty(name="Suffixes")
+ middle_names: CollectionProperty(type=StrProperty, name="Middle Names")
+ prefix_titles: CollectionProperty(type=StrProperty, name="Prefixes")
+ suffix_titles: CollectionProperty(type=StrProperty, name="Suffixes")
class BIMOwnerProperties(PropertyGroup):
diff --git a/src/blenderbim/blenderbim/bim/module/owner/ui.py b/src/blenderbim/blenderbim/bim/module/owner/ui.py
index d47cc605e5..42c91c5603 100644
--- a/src/blenderbim/blenderbim/bim/module/owner/ui.py
+++ b/src/blenderbim/blenderbim/bim/module/owner/ui.py
@@ -2,10 +2,39 @@ import bpy
from bpy.types import Panel
from ifcopenshell.api.owner.data import Data
from blenderbim.bim.ifc import IfcStore
+from .operator import AddOrRemoveElementFromCollection
-def draw_roles_ui(box, assigned_object_id, roles):
- props = bpy.context.scene.BIMOwnerProperties
+def draw_string_collection(layout, owner, collection_name):
+ column = layout.column(align=True)
+ collection = getattr(owner, collection_name)
+ for i in range(len(collection)):
+ if i == 0:
+ row = draw_prop_on_new_row(
+ column,
+ collection[i],
+ "name",
+ align=True,
+ text=f"{owner.bl_rna.properties[collection_name].name}")
+ add_op = row.operator(AddOrRemoveElementFromCollection.bl_idname, icon="ADD", text="")
+ add_op.operation = "+"
+ add_op.collection_path = collection.path_from_id()
+ else:
+ row = draw_prop_on_new_row(column, collection[i], "name", align=True, text=f"#{i + 1}")
+ rem_op = row.operator(AddOrRemoveElementFromCollection.bl_idname, icon="REMOVE", text="")
+ rem_op.operation = "-"
+ rem_op.collection_path = collection.path_from_id()
+ rem_op.selected_item_idx = i
+
+
+def draw_prop_on_new_row(layout, owner, attribute, align=False, **kwargs):
+ row = layout.row(align=align)
+ row.prop(owner, attribute, **kwargs)
+ return row
+
+
+def draw_roles_ui(box, assigned_object_id, roles, context):
+ props = context.scene.BIMOwnerProperties
row = box.row(align=True)
row.label(text="Roles")
row.operator("bim.add_role", icon="ADD", text="").assigned_object_id = assigned_object_id
@@ -14,15 +43,12 @@ def draw_roles_ui(box, assigned_object_id, roles):
if props.active_role_id == role_id:
blender_role = props.role
box2 = box.box()
- row = box2.row(align=True)
- row.prop(blender_role, "name", icon="MOD_CLOTH", text="")
+ row = draw_prop_on_new_row(box2, blender_role, "name", align=True, icon="MOD_CLOTH", text="")
row.operator("bim.edit_role", icon="CHECKMARK", text="")
row.operator("bim.disable_editing_role", icon="X", text="")
if blender_role.name == "USERDEFINED":
- row = box2.row()
- row.prop(blender_role, "user_defined_role")
- row = box2.row()
- row.prop(blender_role, "description")
+ draw_prop_on_new_row(box2, blender_role, "user_defined_role")
+ draw_prop_on_new_row(box2, blender_role, "description")
else:
row = box.row(align=True)
row.label(text=role["UserDefinedRole"] or role["Role"])
@@ -30,8 +56,8 @@ def draw_roles_ui(box, assigned_object_id, roles):
row.operator("bim.remove_role", icon="X", text="").role_id = role_id
-def draw_addresses_ui(box, assigned_object_id, addresses, file):
- props = bpy.context.scene.BIMOwnerProperties
+def draw_addresses_ui(box, assigned_object_id, addresses, file, context):
+ props = context.scene.BIMOwnerProperties
row = box.row(align=True)
row.label(text="Addresses")
op = row.operator("bim.add_address", icon="LINK_BLEND", text="")
@@ -45,45 +71,29 @@ def draw_addresses_ui(box, assigned_object_id, addresses, file):
if props.active_address_id == address_id:
blender_address = props.address
box2 = box.box()
- row = box2.row(align=True)
- row.prop(blender_address, "purpose", icon="MOD_CLOTH", text="")
+ row = draw_prop_on_new_row(box2, blender_address, "purpose", align=True, icon="MOD_CLOTH", text="")
row.operator("bim.edit_address", icon="CHECKMARK", text="")
row.operator("bim.disable_editing_address", icon="X", text="")
if blender_address.purpose == "USERDEFINED":
- row = box2.row()
- row.prop(blender_address, "user_defined_purpose")
- row = box2.row()
- row.prop(blender_address, "description")
+ draw_prop_on_new_row(box2, blender_address, "user_defined_purpose")
+ draw_prop_on_new_row(box2, blender_address, "description")
if address["type"] == "IfcTelecomAddress":
- row = box2.row()
- row.prop(blender_address, "telephone_numbers")
- row = box2.row()
- row.prop(blender_address, "facsimile_numbers")
- row = box2.row()
- row.prop(blender_address, "pager_number")
- row = box2.row()
- row.prop(blender_address, "electronic_mail_addresses")
- row = box2.row()
- row.prop(blender_address, "www_home_page_url")
- if file.schema != "IFC2X3":
- row = box2.row()
- row.prop(blender_address, "messaging_ids")
+ draw_string_collection(box2, blender_address, "telephone_numbers")
+ draw_string_collection(box2, blender_address, "facsimile_numbers")
+ draw_prop_on_new_row(box2, blender_address, "pager_number")
+ draw_string_collection(box2, blender_address, "electronic_mail_addresses")
+ draw_prop_on_new_row(box2, blender_address, "www_home_page_url")
+ if file.schema != "IFC2X3":
+ draw_string_collection(box2, blender_address, "messaging_ids")
elif address["type"] == "IfcPostalAddress":
- row = box2.row()
- row.prop(blender_address, "internal_location")
- row = box2.row()
- row.prop(blender_address, "address_lines")
- row = box2.row()
- row.prop(blender_address, "postal_box")
- row = box2.row()
- row.prop(blender_address, "town")
- row = box2.row()
- row.prop(blender_address, "region")
- row = box2.row()
- row.prop(blender_address, "postal_code")
- row = box2.row()
- row.prop(blender_address, "country")
+ draw_prop_on_new_row(box2, blender_address, "internal_location")
+ draw_string_collection(box2, blender_address, "address_lines")
+ draw_prop_on_new_row(box2, blender_address, "postal_box")
+ draw_prop_on_new_row(box2, blender_address, "town")
+ draw_prop_on_new_row(box2, blender_address, "region")
+ draw_prop_on_new_row(box2, blender_address, "postal_code")
+ draw_prop_on_new_row(box2, blender_address, "country")
else:
row = box.row(align=True)
row.label(text=address["type"])
@@ -91,7 +101,6 @@ def draw_addresses_ui(box, assigned_object_id, addresses, file):
row.operator("bim.remove_address", icon="X", text="").address_id = address_id
-
class BIM_PT_people(Panel):
bl_label = "IFC People"
bl_idname = "BIM_PT_people"
@@ -120,23 +129,16 @@ class BIM_PT_people(Panel):
if props.active_person_id == person_id:
blender_person = props.person
box = self.layout.box()
- row = box.row(align=True)
- row.prop(blender_person, "name", icon="USER", text="")
+ row = draw_prop_on_new_row(box, blender_person, "name", align=True, icon="USER", text="")
row.operator("bim.edit_person", icon="CHECKMARK", text="")
row.operator("bim.disable_editing_person", icon="X", text="")
- row = box.row()
- row.prop(blender_person, "family_name")
- row = box.row()
- row.prop(blender_person, "given_name")
- row = box.row()
- row.prop(blender_person, "middle_names")
- row = box.row()
- row.prop(blender_person, "prefix_titles")
- row = box.row()
- row.prop(blender_person, "suffix_titles")
-
- draw_roles_ui(box, person_id, person["Roles"])
- draw_addresses_ui(box, person_id, person["Addresses"], self.file)
+ draw_prop_on_new_row(box, blender_person, "family_name")
+ draw_prop_on_new_row(box, blender_person, "given_name")
+ draw_string_collection(box, blender_person, "middle_names")
+ draw_string_collection(box, blender_person, "prefix_titles")
+ draw_string_collection(box, blender_person, "suffix_titles")
+ draw_roles_ui(box, person_id, person["Roles"], context)
+ draw_addresses_ui(box, person_id, person["Addresses"], self.file, context)
else:
row = self.layout.row(align=True)
name = person["Id"] if self.file.schema == "IFC2X3" else person["Identification"]
@@ -183,14 +185,12 @@ class BIM_PT_organisations(Panel):
row = box.row(align=True)
row.prop(blender_organisation, "name", icon="USER", text="")
row.operator("bim.edit_organisation", icon="CHECKMARK", text="")
- row.operator("bim.disable_editing_organisation", icon="X", text="")
- row = box.row()
- row.prop(blender_organisation, "identification")
- row = box.row()
- row.prop(blender_organisation, "description")
+ row.operator("bim.disable_editing_organisation", icon="X", text="")
+ draw_prop_on_new_row(box, blender_organisation, "identification")
+ draw_prop_on_new_row(box, blender_organisation, "description")
- draw_roles_ui(box, organisation_id, organisation["Roles"])
- draw_addresses_ui(box, organisation_id, organisation["Addresses"], self.file)
+ draw_roles_ui(box, organisation_id, organisation["Roles"], context)
+ draw_addresses_ui(box, organisation_id, organisation["Addresses"], self.file, context)
else:
row = self.layout.row(align=True)
row.label(text=organisation["Name"])
@@ -224,11 +224,9 @@ class BIM_PT_owner(Panel):
if not Data.people:
self.layout.label(text="No people found.")
else:
- row = self.layout.row()
- row.prop(props, "user_person")
+ draw_prop_on_new_row(self.layout, props, "user_person")
if not Data.organisations:
self.layout.label(text="No organisations found.")
else:
- row = self.layout.row()
- row.prop(props, "user_organisation")
+ draw_prop_on_new_row(self.layout, props, "user_organisation")
diff --git a/src/blenderbim/blenderbim/bim/module/patch/operator.py b/src/blenderbim/blenderbim/bim/module/patch/operator.py
index 6060c7a76d..5015942931 100644
--- a/src/blenderbim/blenderbim/bim/module/patch/operator.py
+++ b/src/blenderbim/blenderbim/bim/module/patch/operator.py
@@ -40,6 +40,11 @@ class ExecuteIfcPatch(bpy.types.Operator):
bl_label = "Execute IFCPatch"
file_format: bpy.props.StringProperty()
+ @classmethod
+ def poll(cls, context):
+ input_file = context.scene.BIMPatchProperties.ifc_patch_input
+ return os.path.isfile(input_file) and "ifc" in os.path.splitext(input_file)[1]
+
def execute(self, context):
import ifcpatch
diff --git a/src/blenderbim/blenderbim/bim/module/profile/__init__.py b/src/blenderbim/blenderbim/bim/module/profile/__init__.py
new file mode 100644
index 0000000000..3f64d0c93c
--- /dev/null
+++ b/src/blenderbim/blenderbim/bim/module/profile/__init__.py
@@ -0,0 +1,9 @@
+classes = ()
+
+
+def register():
+ pass
+
+
+def unregister():
+ pass
diff --git a/src/blenderbim/blenderbim/bim/module/project/operator.py b/src/blenderbim/blenderbim/bim/module/project/operator.py
index 9cf97be604..5b8a69c62e 100644
--- a/src/blenderbim/blenderbim/bim/module/project/operator.py
+++ b/src/blenderbim/blenderbim/bim/module/project/operator.py
@@ -29,17 +29,17 @@ class CreateProject(bpy.types.Operator):
return {"FINISHED"}
IfcStore.file = ifcopenshell.api.run(
- "project.create_file", **{"version": bpy.context.scene.BIMProperties.export_schema}
+ "project.create_file", **{"version": context.scene.BIMProperties.export_schema}
)
self.file = IfcStore.get_file()
bpy.ops.bim.add_person()
bpy.ops.bim.add_organisation()
- project = bpy.data.objects.new("My Project", None)
- site = bpy.data.objects.new("My Site", None)
- building = bpy.data.objects.new("My Building", None)
- building_storey = bpy.data.objects.new("Ground Floor", None)
+ project = bpy.data.objects.new(self.get_name("IfcProject", "My Project"), None)
+ site = bpy.data.objects.new(self.get_name("IfcSite", "My Site"), None)
+ building = bpy.data.objects.new(self.get_name("IfcBuilding", "My Building"), None)
+ building_storey = bpy.data.objects.new(self.get_name("IfcBuildingStorey", "My Storey"), None)
bpy.ops.bim.assign_class(obj=project.name, ifc_class="IfcProject")
bpy.ops.bim.assign_unit()
@@ -49,7 +49,7 @@ class CreateProject(bpy.types.Operator):
bpy.ops.bim.add_subcontext(context="Plan")
bpy.ops.bim.add_subcontext(context="Plan", subcontext="Annotation", target_view="PLAN_VIEW")
- bpy.context.scene.BIMProperties.contexts = str(
+ context.scene.BIMProperties.contexts = str(
ifcopenshell.util.representation.get_context(self.file, "Model", "Body", "MODEL_VIEW").id()
)
@@ -62,6 +62,14 @@ class CreateProject(bpy.types.Operator):
return {"FINISHED"}
+ def get_name(self, ifc_class, name):
+ if not bpy.data.objects.get(f"{ifc_class}/{name}"):
+ return name
+ i = 2
+ while bpy.data.objects.get(f"{ifc_class}/{name} {i}"):
+ i += 1
+ return f"{name} {i}"
+
def rollback(self, data):
IfcStore.file = None
@@ -89,7 +97,7 @@ class CreateProjectLibrary(bpy.types.Operator):
return {"FINISHED"}
IfcStore.file = ifcopenshell.api.run(
- "project.create_file", **{"version": bpy.context.scene.BIMProperties.export_schema}
+ "project.create_file", **{"version": context.scene.BIMProperties.export_schema}
)
self.file = IfcStore.get_file()
@@ -164,9 +172,10 @@ class RefreshLibrary(bpy.types.Operator):
self.props.active_library_element = ""
types = IfcStore.library_file.wrapped_data.types_with_super()
- if "IfcTypeProduct" in types:
- new = self.props.library_elements.add()
- new.name = "IfcTypeProduct"
+ for importable_type in ["IfcTypeProduct", "IfcMaterial", "IfcCostSchedule"]:
+ if importable_type in types:
+ new = self.props.library_elements.add()
+ new.name = importable_type
return {"FINISHED"}
@@ -193,7 +202,9 @@ class ChangeLibraryElement(bpy.types.Operator):
new.ifc_definition_id = element.id()
if IfcStore.library_file.schema == "IFC2X3" or not IfcStore.library_file.by_type("IfcProjectLibrary"):
new.is_declared = False
- elif element.HasContext and element.HasContext[0].RelatingContext.is_a("IfcProjectLibrary"):
+ elif getattr(element, "HasContext", None) and element.HasContext[0].RelatingContext.is_a(
+ "IfcProjectLibrary"
+ ):
new.is_declared = True
else:
for ifc_class in ifc_classes:
@@ -318,14 +329,28 @@ class AppendLibraryElement(bpy.types.Operator):
library=IfcStore.library_file,
element=IfcStore.library_file.by_id(self.definition),
)
- self.import_type_from_ifc(element)
+ if not element:
+ return {"FINISHED"}
+ if element.is_a("IfcTypeProduct"):
+ self.import_type_from_ifc(element, context)
+ elif element.is_a("IfcMaterial"):
+ self.import_material_from_ifc(element, context)
blenderbim.bim.handler.purge_module_data()
return {"FINISHED"}
- def import_type_from_ifc(self, element):
+ def import_material_from_ifc(self, element, context):
self.file = IfcStore.get_file()
logger = logging.getLogger("ImportIFC")
- ifc_import_settings = import_ifc.IfcImportSettings.factory(bpy.context, IfcStore.path, logger)
+ ifc_import_settings = import_ifc.IfcImportSettings.factory(context, IfcStore.path, logger)
+ ifc_importer = import_ifc.IfcImporter(ifc_import_settings)
+ ifc_importer.file = self.file
+ blender_material = ifc_importer.create_material(element)
+ self.import_material_styles(blender_material, element, ifc_importer)
+
+ def import_type_from_ifc(self, element, context):
+ self.file = IfcStore.get_file()
+ logger = logging.getLogger("ImportIFC")
+ ifc_import_settings = import_ifc.IfcImportSettings.factory(context, IfcStore.path, logger)
type_collection = bpy.data.collections.get("Types")
if not type_collection:
@@ -338,9 +363,37 @@ class AppendLibraryElement(bpy.types.Operator):
ifc_importer = import_ifc.IfcImporter(ifc_import_settings)
ifc_importer.file = self.file
ifc_importer.type_collection = type_collection
+ self.import_type_materials(element, ifc_importer)
+ self.import_type_styles(element, ifc_importer)
ifc_importer.create_type_product(element)
ifc_importer.place_objects_in_spatial_tree()
+ def import_type_materials(self, element, ifc_importer):
+ for rel in element.HasAssociations:
+ if not rel.is_a("IfcRelAssociatesMaterial"):
+ continue
+ for material in [e for e in self.file.traverse(rel) if e.is_a("IfcMaterial")]:
+ if IfcStore.get_element(material.id()):
+ continue
+ blender_material = ifc_importer.create_material(material)
+ self.import_material_styles(blender_material, material, ifc_importer)
+
+ def import_type_styles(self, element, ifc_importer):
+ for representation_map in element.RepresentationMaps or []:
+ for element in self.file.traverse(representation_map):
+ if not element.is_a("IfcRepresentationItem") or not element.StyledByItem:
+ continue
+ for element2 in self.file.traverse(element.StyledByItem[0]):
+ if element2.is_a("IfcSurfaceStyle") and not IfcStore.get_element(element2.id()):
+ ifc_importer.create_style(element2)
+
+ def import_material_styles(self, blender_material, material, ifc_importer):
+ if not material.HasRepresentation:
+ return
+ for element in self.file.traverse(material.HasRepresentation[0]):
+ if element.is_a("IfcSurfaceStyle") and not IfcStore.get_element(element.id()):
+ ifc_importer.create_style(element, blender_material)
+
class EnableEditingHeader(bpy.types.Operator):
bl_idname = "bim.enable_editing_header"
diff --git a/src/blenderbim/blenderbim/bim/module/pset/operator.py b/src/blenderbim/blenderbim/bim/module/pset/operator.py
index ea490c6617..869af7db35 100644
--- a/src/blenderbim/blenderbim/bim/module/pset/operator.py
+++ b/src/blenderbim/blenderbim/bim/module/pset/operator.py
@@ -7,6 +7,7 @@ import ifcopenshell.util.attribute
import blenderbim.bim.schema
from blenderbim.bim.ifc import IfcStore
from ifcopenshell.api.pset.data import Data
+from ifcopenshell.api.cost.data import Data as CostData
from blenderbim.bim.module.pset.qto_calculator import QtoCalculator
@@ -16,7 +17,7 @@ class TogglePsetExpansion(bpy.types.Operator):
pset_id: bpy.props.IntProperty()
def execute(self, context):
- obj = bpy.context.active_object
+ obj = context.active_object
data = Data.psets if self.pset_id in Data.psets else Data.qtos
data[self.pset_id]["is_expanded"] = not data[self.pset_id]["is_expanded"]
return {"FINISHED"}
@@ -195,6 +196,7 @@ class EditPset(bpy.types.Operator):
"pset": self.file.by_id(pset_id),
"name": props.active_pset_name,
"properties": properties,
+ "pset_template": blenderbim.bim.schema.ifc.psetqto.get_by_name(props.active_pset_name),
},
)
else:
@@ -210,6 +212,7 @@ class EditPset(bpy.types.Operator):
"properties": properties,
},
)
+ CostData.purge()
Data.load(IfcStore.get_file(), oprops.ifc_definition_id)
bpy.ops.bim.disable_pset_editing(obj=self.obj, obj_type=self.obj_type)
return {"FINISHED"}
@@ -294,7 +297,7 @@ class AddQto(bpy.types.Operator):
def _execute(self, context):
self.file = IfcStore.get_file()
- obj = bpy.context.active_object
+ obj = context.active_object
oprops = obj.BIMObjectProperties
props = obj.PsetProperties
ifcopenshell.api.run(
@@ -317,23 +320,23 @@ class GuessQuantity(bpy.types.Operator):
def execute(self, context):
self.qto_calculator = QtoCalculator()
- obj = bpy.context.active_object
+ obj = context.active_object
prop = obj.PsetProperties.properties.get(self.prop)
- prop.float_value = self.guess_quantity(obj)
+ prop.float_value = self.guess_quantity(obj, context)
return {"FINISHED"}
- def guess_quantity(self, obj):
+ def guess_quantity(self, obj, context):
quantity = self.qto_calculator.guess_quantity(self.prop, [p.name for p in obj.PsetProperties.properties], obj)
if "area" in self.prop.lower():
- if bpy.context.scene.BIMProperties.area_unit:
- prefix, name = self.get_prefix_name(bpy.context.scene.BIMProperties.area_unit)
+ if context.scene.BIMProperties.area_unit:
+ prefix, name = self.get_prefix_name(context.scene.BIMProperties.area_unit)
quantity = ifcopenshell.util.unit.convert(quantity, None, "SQUARE_METRE", prefix, name)
elif "volume" in self.prop.lower():
- if bpy.context.scene.BIMProperties.volume_unit:
- prefix, name = self.get_prefix_name(bpy.context.scene.BIMProperties.volume_unit)
+ if context.scene.BIMProperties.volume_unit:
+ prefix, name = self.get_prefix_name(context.scene.BIMProperties.volume_unit)
quantity = ifcopenshell.util.unit.convert(quantity, None, "CUBIC_METRE", prefix, name)
else:
- prefix, name = self.get_blender_prefix_name()
+ prefix, name = self.get_blender_prefix_name(context)
quantity = ifcopenshell.util.unit.convert(quantity, None, "METRE", prefix, name)
return round(quantity, 3)
@@ -342,13 +345,14 @@ class GuessQuantity(bpy.types.Operator):
return value.split("/")
return None, value
- def get_blender_prefix_name(self):
- if bpy.context.scene.unit_settings.system == "IMPERIAL":
- if bpy.context.scene.unit_settings.length_unit == "INCHES":
+ def get_blender_prefix_name(self, context):
+ unit_settings = context.scene.unit_settings
+ if unit_settings.system == "IMPERIAL":
+ if unit_settings.length_unit == "INCHES":
return None, "inch"
- elif bpy.context.scene.unit_settings.length_unit == "FEET":
+ elif unit_settings.length_unit == "FEET":
return None, "foot"
- elif bpy.context.scene.unit_settings.system == "METRIC":
- if bpy.context.scene.unit_settings.length_unit == "METERS":
+ elif unit_settings.system == "METRIC":
+ if unit_settings.length_unit == "METERS":
return None, "METRE"
- return bpy.context.scene.unit_settings.length_unit[0 : -len("METERS")], "METRE"
+ return unit_settings.length_unit[0 : -len("METERS")], "METRE"
diff --git a/src/blenderbim/blenderbim/bim/module/pset/prop.py b/src/blenderbim/blenderbim/bim/module/pset/prop.py
index d4dcbb75c9..659ec986e9 100644
--- a/src/blenderbim/blenderbim/bim/module/pset/prop.py
+++ b/src/blenderbim/blenderbim/bim/module/pset/prop.py
@@ -1,7 +1,8 @@
import bpy
+import blenderbim.bim.schema
from blenderbim.bim.prop import Attribute
from ifcopenshell.api.pset.data import Data
-import blenderbim.bim.schema
+from blenderbim.bim.ifc import IfcStore
from bpy.types import PropertyGroup
from bpy.props import (
PointerProperty,
@@ -29,16 +30,17 @@ def purge():
def getPsetNames(self, context):
global psetnames
obj = context.active_object
- if "/" in obj.name:
- ifc_class = obj.name.split("/")[0]
- if ifc_class not in psetnames:
- psets = blenderbim.bim.schema.ifc.psetqto.get_applicable(ifc_class, pset_only=True)
- psetnames[ifc_class] = [(p.Name, p.Name, "") for p in psets]
- assigned_names = [
- Data.psets[p]["Name"] for p in Data.products[obj.BIMObjectProperties.ifc_definition_id]["psets"]
- ]
- return [p for p in psetnames[ifc_class] if p[0] not in assigned_names]
- return []
+ if not obj.BIMObjectProperties.ifc_definition_id:
+ return []
+ element = IfcStore.get_file().by_id(obj.BIMObjectProperties.ifc_definition_id)
+ ifc_class = element.is_a()
+ if ifc_class not in psetnames:
+ psets = blenderbim.bim.schema.ifc.psetqto.get_applicable(ifc_class, pset_only=True)
+ psetnames[ifc_class] = [(p.Name, p.Name, "") for p in psets]
+ assigned_names = [
+ Data.psets[p]["Name"] for p in Data.products[obj.BIMObjectProperties.ifc_definition_id]["psets"]
+ ]
+ return [p for p in psetnames[ifc_class] if p[0] not in assigned_names]
def getMaterialPsetNames(self, context):
diff --git a/src/blenderbim/blenderbim/bim/module/pset/ui.py b/src/blenderbim/blenderbim/bim/module/pset/ui.py
index f3f257b8bb..e46aabc048 100644
--- a/src/blenderbim/blenderbim/bim/module/pset/ui.py
+++ b/src/blenderbim/blenderbim/bim/module/pset/ui.py
@@ -122,8 +122,8 @@ class BIM_PT_object_psets(Panel):
op.obj = context.active_object.name
op.obj_type = "Object"
- for pset_id in Data.products[oprops.ifc_definition_id]["psets"]:
- pset = Data.psets[pset_id]
+ psets = [(pset_id, Data.psets[pset_id]) for pset_id in Data.products[oprops.ifc_definition_id]["psets"]]
+ for pset_id, pset in sorted(psets, key = lambda v: v[1]["Name"]):
draw_psetqto_ui(context, pset_id, pset, props, self.layout, "Object")
# TODO reimplement. See #1222.
@@ -165,8 +165,8 @@ class BIM_PT_object_qtos(Panel):
row.prop(props, "qto_name", text="")
row.operator("bim.add_qto", icon="ADD", text="")
- for qto_id in Data.products[oprops.ifc_definition_id]["qtos"]:
- qto = Data.qtos[qto_id]
+ qtos = [(qto_id, Data.qtos[qto_id]) for qto_id in Data.products[oprops.ifc_definition_id]["qtos"]]
+ for qto_id, qto in sorted(qtos, key = lambda v: v[1]["Name"]):
draw_psetqto_ui(context, qto_id, qto, props, self.layout, "Object")
@@ -207,6 +207,6 @@ class BIM_PT_material_psets(Panel):
op.obj = context.active_object.active_material.name
op.obj_type = "Material"
- for pset_id in Data.products[oprops.ifc_definition_id]["psets"]:
- pset = Data.psets[pset_id]
+ psets = [(pset_id, Data.psets[pset_id]) for pset_id in Data.products[oprops.ifc_definition_id]["psets"]]
+ for pset_id, pset in sorted(psets, key = lambda v: v[1]["Name"]):
draw_psetqto_ui(context, pset_id, pset, props, self.layout, "Material")
diff --git a/src/blenderbim/blenderbim/bim/module/pset_template/operator.py b/src/blenderbim/blenderbim/bim/module/pset_template/operator.py
index 13bf59933d..452470240c 100644
--- a/src/blenderbim/blenderbim/bim/module/pset_template/operator.py
+++ b/src/blenderbim/blenderbim/bim/module/pset_template/operator.py
@@ -1,6 +1,8 @@
import bpy
import ifcopenshell
import ifcopenshell.api
+import blenderbim.bim.schema
+import blenderbim.bim.handler
from blenderbim.bim.module.pset_template.prop import updatePsetTemplateFiles, updatePsetTemplates
from ifcopenshell.api.pset_template.data import Data
from blenderbim.bim.ifc import IfcStore
@@ -165,6 +167,8 @@ class SavePsetTemplateFile(bpy.types.Operator):
def execute(self, context):
IfcStore.pset_template_file.write(IfcStore.pset_template_path)
+ blenderbim.bim.handler.purge_module_data()
+ blenderbim.bim.schema.reload()
return {"FINISHED"}
diff --git a/src/blenderbim/blenderbim/bim/module/qto/helper.py b/src/blenderbim/blenderbim/bim/module/qto/helper.py
index b55992bf00..56ff71b73a 100644
--- a/src/blenderbim/blenderbim/bim/module/qto/helper.py
+++ b/src/blenderbim/blenderbim/bim/module/qto/helper.py
@@ -14,7 +14,7 @@ def calculate_volume(obj):
return result
-def calculate_formwork_area(objs):
+def calculate_formwork_area(objs, context):
"""
Formwork is defined as the surface area required to cover all exposed
surfaces of one or more objects, excluding top surfaces (i.e. that have a
@@ -27,7 +27,7 @@ def calculate_formwork_area(objs):
new_obj = obj.copy()
new_obj.data = obj.data.copy()
new_obj.animation_data_clear()
- bpy.context.collection.objects.link(new_obj)
+ context.collection.objects.link(new_obj)
copied_objs.append(new_obj)
context_override = {}
@@ -53,7 +53,7 @@ def calculate_formwork_area(objs):
else:
modifier.octree_depth = 5
- mesh = copied_objs[0].evaluated_get(bpy.context.evaluated_depsgraph_get()).to_mesh()
+ mesh = copied_objs[0].evaluated_get(context.evaluated_depsgraph_get()).to_mesh()
for polygon in mesh.polygons:
if polygon.normal.z > 0.5:
continue
diff --git a/src/blenderbim/blenderbim/bim/module/qto/operator.py b/src/blenderbim/blenderbim/bim/module/qto/operator.py
index 02d1f32916..ef6b12268c 100644
--- a/src/blenderbim/blenderbim/bim/module/qto/operator.py
+++ b/src/blenderbim/blenderbim/bim/module/qto/operator.py
@@ -14,13 +14,13 @@ class CalculateEdgeLengths(bpy.types.Operator):
def execute(self, context):
result = 0
- for obj in bpy.context.selected_objects:
+ for obj in context.selected_objects:
if not obj.data or not obj.data.edges:
continue
for edge in obj.data.edges:
if edge.select:
result += (obj.data.vertices[edge.vertices[1]].co - obj.data.vertices[edge.vertices[0]].co).length
- bpy.context.scene.BIMQtoProperties.qto_result = str(round(result, 3))
+ context.scene.BIMQtoProperties.qto_result = str(round(result, 3))
return {"FINISHED"}
@@ -31,13 +31,13 @@ class CalculateFaceAreas(bpy.types.Operator):
def execute(self, context):
result = 0
- for obj in bpy.context.selected_objects:
+ for obj in context.selected_objects:
if not obj.data or not obj.data.polygons:
continue
for polygon in obj.data.polygons:
if polygon.select:
result += polygon.area
- bpy.context.scene.BIMQtoProperties.qto_result = str(round(result, 3))
+ context.scene.BIMQtoProperties.qto_result = str(round(result, 3))
return {"FINISHED"}
@@ -48,14 +48,14 @@ class CalculateObjectVolumes(bpy.types.Operator):
def execute(self, context):
result = 0
- for obj in bpy.context.selected_objects:
+ for obj in context.selected_objects:
if not obj.data or not isinstance(obj.data, bpy.types.Mesh):
continue
bm = bmesh.new()
bm.from_mesh(obj.data)
result += bm.calc_volume()
bm.free()
- bpy.context.scene.BIMQtoProperties.qto_result = str(round(result, 3))
+ context.scene.BIMQtoProperties.qto_result = str(round(result, 3))
return {"FINISHED"}
@@ -65,16 +65,16 @@ class ExecuteQtoMethod(bpy.types.Operator):
bl_options = {"REGISTER", "UNDO"}
def execute(self, context):
- props = bpy.context.scene.BIMQtoProperties
+ props = context.scene.BIMQtoProperties
result = 0
if props.qto_methods == "HEIGHT":
- for obj in bpy.context.selected_objects:
+ for obj in context.selected_objects:
result += helper.calculate_height(obj)
elif props.qto_methods == "VOLUME":
- for obj in bpy.context.selected_objects:
+ for obj in context.selected_objects:
result += helper.calculate_volume(obj)
elif props.qto_methods == "FORMWORK":
- result = helper.calculate_formwork_area(bpy.context.selected_objects)
+ result = helper.calculate_formwork_area(context.selected_objects, context)
props.qto_result = str(round(result, 3))
return {"FINISHED"}
@@ -88,9 +88,9 @@ class QuantifyObjects(bpy.types.Operator):
return IfcStore.execute_ifc_operator(self, context)
def _execute(self, context):
- props = bpy.context.scene.BIMQtoProperties
+ props = context.scene.BIMQtoProperties
self.file = IfcStore.get_file()
- for obj in bpy.context.selected_objects:
+ for obj in context.selected_objects:
if not obj.BIMObjectProperties.ifc_definition_id:
continue
result = 0
@@ -99,7 +99,7 @@ class QuantifyObjects(bpy.types.Operator):
elif props.qto_methods == "VOLUME":
result = helper.calculate_volume(obj)
elif props.qto_methods == "FORMWORK":
- result = helper.calculate_formwork_area([obj])
+ result = helper.calculate_formwork_area([obj], context)
if not result:
continue
result = round(result, 3)
diff --git a/src/blenderbim/blenderbim/bim/module/resource/__init__.py b/src/blenderbim/blenderbim/bim/module/resource/__init__.py
index 38db174c0d..c401265b4d 100644
--- a/src/blenderbim/blenderbim/bim/module/resource/__init__.py
+++ b/src/blenderbim/blenderbim/bim/module/resource/__init__.py
@@ -14,6 +14,9 @@ classes = (
operator.ContractResource,
operator.AssignResource,
operator.UnassignResource,
+ operator.EnableEditingResourceTime,
+ operator.EditResourceTime,
+ operator.DisableEditingResourceTime,
prop.Resource,
prop.BIMResourceProperties,
prop.BIMResourceTreeProperties,
diff --git a/src/blenderbim/blenderbim/bim/module/resource/operator.py b/src/blenderbim/blenderbim/bim/module/resource/operator.py
index 4872ee151f..4df0873846 100644
--- a/src/blenderbim/blenderbim/bim/module/resource/operator.py
+++ b/src/blenderbim/blenderbim/bim/module/resource/operator.py
@@ -3,6 +3,11 @@ import json
import ifcopenshell.api
from blenderbim.bim.ifc import IfcStore
from ifcopenshell.api.resource.data import Data
+import blenderbim.bim.helper
+import blenderbim.bim.module.sequence.helper as helper
+import time
+from datetime import datetime
+import isodate
class LoadResources(bpy.types.Operator):
@@ -50,6 +55,7 @@ class EnableEditingResource(bpy.types.Operator):
self.props.active_resource_id = self.resource
while len(self.props.resource_attributes) > 0:
self.props.resource_attributes.remove(0)
+ self.props.editing_resource_type = "ATTRIBUTES"
self.enable_editing_resource()
return {"FINISHED"}
@@ -72,6 +78,7 @@ class EnableEditingResource(bpy.types.Operator):
new.enum_value = data[attribute.name()]
+
class LoadResourceProperties(bpy.types.Operator):
bl_idname = "bim.load_resource_properties"
bl_label = "Load Resource Properties"
@@ -98,6 +105,7 @@ class DisableEditingResource(bpy.types.Operator):
def execute(self, context):
context.scene.BIMResourceProperties.active_resource_id = 0
+ context.scene.BIMResourceProperties.active_task_time_id = 0
return {"FINISHED"}
@@ -143,15 +151,7 @@ class EditResource(bpy.types.Operator):
def _execute(self, context):
props = context.scene.BIMResourceProperties
- attributes = {}
- for attribute in props.resource_attributes:
- if attribute.is_null:
- attributes[attribute.name] = None
- else:
- if attribute.data_type == "string":
- attributes[attribute.name] = attribute.string_value
- elif attribute.data_type == "enum":
- attributes[attribute.name] = attribute.enum_value
+ attributes = blenderbim.bim.helper.export_attributes(props.resource_attributes)
self.file = IfcStore.get_file()
ifcopenshell.api.run(
"resource.edit_resource",
@@ -230,7 +230,7 @@ class AssignResource(bpy.types.Operator):
def _execute(self, context):
related_objects = (
- [bpy.data.objects.get(self.related_object)] if self.related_object else bpy.context.selected_objects
+ [bpy.data.objects.get(self.related_object)] if self.related_object else context.selected_objects
)
for related_object in related_objects:
self.file = IfcStore.get_file()
@@ -253,7 +253,7 @@ class UnassignResource(bpy.types.Operator):
def execute(self, context):
related_objects = (
- [bpy.data.objects.get(self.related_object)] if self.related_object else bpy.context.selected_objects
+ [bpy.data.objects.get(self.related_object)] if self.related_object else context.selected_objects
)
for related_object in related_objects:
self.file = IfcStore.get_file()
@@ -265,3 +265,87 @@ class UnassignResource(bpy.types.Operator):
)
Data.load(self.file)
return {"FINISHED"}
+
+
+class EnableEditingResourceTime(bpy.types.Operator):
+ bl_idname = "bim.enable_editing_resource_time"
+ bl_label = "Enable Editing Resource Usage"
+ bl_options = {"REGISTER", "UNDO"}
+ resource: bpy.props.IntProperty()
+
+ def execute(self, context):
+ return IfcStore.execute_ifc_operator(self, context)
+
+ def _execute(self, context):
+ props = context.scene.BIMResourceProperties
+ self.file = IfcStore.get_file()
+ resource_time_id = Data.resources[self.resource]["Usage"] or self.add_resource_time().id()
+ while len(props.resource_time_attributes) > 0:
+ props.resource_time_attributes.remove(0)
+
+ data = Data.resource_times[resource_time_id]
+
+ blenderbim.bim.helper.import_attributes("IfcResourceTime", props.resource_time_attributes, data, self.import_attributes)
+ props.active_resource_time_id = resource_time_id
+ props.active_resource_id = self.resource
+ props.editing_resource_type = "USAGE"
+ return {"FINISHED"}
+
+ def import_attributes(self, name, prop, data):
+ if prop.data_type == "string":
+ if isinstance(data[name], datetime):
+ prop.string_value = "" if prop.is_null else data[name].isoformat()
+ return True
+ elif isinstance(data[name], isodate.Duration):
+ prop.string_value = (
+ "" if prop.is_null else ifcopenshell.util.date.datetime2ifc(data[name], "IfcDuration")
+ )
+ return True
+
+ def add_resource_time(self):
+ resource_time = ifcopenshell.api.run("resource.add_resource_time", self.file, resource=self.file.by_id(self.resource))
+ Data.load(self.file)
+ return resource_time
+
+
+class DisableEditingResourceTime(bpy.types.Operator):
+ bl_idname = "bim.disable_editing_resource_time"
+ bl_label = "Disable Editing Resource Time"
+ bl_options = {"REGISTER", "UNDO"}
+
+ def execute(self, context):
+ context.scene.BIMResourceProperties.active_resource_time_id = 0
+ bpy.ops.bim.disable_editing_resource()
+ return {"FINISHED"}
+
+
+class EditResourceTime(bpy.types.Operator):
+ bl_idname = "bim.edit_resource_time"
+ bl_label = "Edit Resource Usage"
+ bl_options = {"REGISTER", "UNDO"}
+
+ def execute(self, context):
+ return IfcStore.execute_ifc_operator(self, context)
+
+ def _execute(self, context):
+ self.props = context.scene.BIMResourceProperties
+ attributes = blenderbim.bim.helper.export_attributes(self.props.resource_time_attributes, self.export_attributes)
+
+ self.file = IfcStore.get_file()
+ ifcopenshell.api.run(
+ "resource.edit_resource_time",
+ self.file,
+ **{"resource_time": self.file.by_id(self.props.active_resource_time_id), "attributes": attributes},
+ )
+ Data.load(self.file)
+ bpy.ops.bim.disable_editing_resource_time()
+ bpy.ops.bim.load_resource_properties(resource=self.props.active_resource_id)
+ return {"FINISHED"}
+
+ def export_attributes(self, attributes, prop):
+ if "Start" in prop.name or "Finish" in prop.name or prop.name == "StatusTime":
+ attributes[prop.name] = helper.parse_datetime(prop.string_value)
+ return True
+ elif prop.name =="LevelingDelay" or "Work" in prop.name:
+ attributes[prop.name] = helper.parse_duration(prop.string_value)
+ return True
diff --git a/src/blenderbim/blenderbim/bim/module/resource/prop.py b/src/blenderbim/blenderbim/bim/module/resource/prop.py
index db1ca153e2..d7b285d372 100644
--- a/src/blenderbim/blenderbim/bim/module/resource/prop.py
+++ b/src/blenderbim/blenderbim/bim/module/resource/prop.py
@@ -52,3 +52,6 @@ class BIMResourceProperties(PropertyGroup):
contracted_resources: StringProperty(name="Contracted Resources", default="[]")
is_resource_update_enabled: BoolProperty(name="Is Resource Update Enabled", default=True)
is_loaded: BoolProperty(name="Is Editing")
+ active_resource_time_id: IntProperty(name="Active Resource Usage Id")
+ resource_time_attributes: CollectionProperty(name="Resource Usage Attributes", type=Attribute)
+ editing_resource_type: StringProperty(name="Editing Resource Type")
diff --git a/src/blenderbim/blenderbim/bim/module/resource/ui.py b/src/blenderbim/blenderbim/bim/module/resource/ui.py
index 1544d3fd39..bb5c517202 100644
--- a/src/blenderbim/blenderbim/bim/module/resource/ui.py
+++ b/src/blenderbim/blenderbim/bim/module/resource/ui.py
@@ -1,7 +1,7 @@
from bpy.types import Panel, UIList
from blenderbim.bim.ifc import IfcStore
from ifcopenshell.api.resource.data import Data
-
+import blenderbim.bim.helper
class BIM_PT_resources(Panel):
bl_label = "IFC Resources"
@@ -13,7 +13,8 @@ class BIM_PT_resources(Panel):
@classmethod
def poll(cls, context):
- return IfcStore.get_file()
+ file = IfcStore.get_file()
+ return file and hasattr(file, "schema") and file.schema != "IFC2X3"
def draw(self, context):
self.props = context.scene.BIMResourceProperties
@@ -64,24 +65,17 @@ class BIM_PT_resources(Panel):
self.props,
"active_resource_index",
)
- if self.props.active_resource_id:
- self.draw_editable_resource_ui()
+ if self.props.active_resource_id and self.props.editing_resource_type == "ATTRIBUTES":
+ self.draw_editable_resource_attributes_ui()
- def draw_editable_resource_ui(self):
- for attribute in self.props.resource_attributes:
- row = self.layout.row(align=True)
- if attribute.data_type == "string":
- row.prop(attribute, "string_value", text=attribute.name)
- elif attribute.data_type == "boolean":
- row.prop(attribute, "bool_value", text=attribute.name)
- elif attribute.data_type == "integer":
- row.prop(attribute, "int_value", text=attribute.name)
- elif attribute.data_type == "float":
- row.prop(attribute, "float_value", text=attribute.name)
- elif attribute.data_type == "enum":
- row.prop(attribute, "enum_value", text=attribute.name)
- if attribute.is_optional:
- row.prop(attribute, "is_null", icon="RADIOBUT_OFF" if attribute.is_null else "RADIOBUT_ON", text="")
+ elif self.props.active_resource_id and self.props.editing_resource_type == "USAGE":
+ self.draw_editable_resource_time_attributes_ui()
+
+ def draw_editable_resource_attributes_ui(self):
+ blenderbim.bim.helper.draw_attributes(self.props.resource_attributes, self.layout)
+
+ def draw_editable_resource_time_attributes_ui(self):
+ blenderbim.bim.helper.draw_attributes(self.props.resource_time_attributes, self.layout)
class BIM_UL_resources(UIList):
@@ -123,9 +117,12 @@ class BIM_UL_resources(UIList):
op = row.operator("bim.assign_resource", text="", icon="KEYFRAME", emboss=False)
op.resource = item.ifc_definition_id
- if props.active_resource_id == item.ifc_definition_id:
+ if props.active_resource_id == item.ifc_definition_id and props.editing_resource_type == "ATTRIBUTES":
row.operator("bim.edit_resource", text="", icon="CHECKMARK")
row.operator("bim.disable_editing_resource", text="", icon="CANCEL")
+ elif props.active_resource_id == item.ifc_definition_id and props.editing_resource_type == "USAGE":
+ row.operator("bim.edit_resource_time", text="", icon="CHECKMARK")
+ row.operator("bim.disable_editing_resource_time", text="", icon="CANCEL")
elif props.active_resource_id:
row.operator("bim.add_resource", text="", icon="ADD").resource = item.ifc_definition_id
row.operator("bim.remove_resource", text="", icon="X").resource = item.ifc_definition_id
@@ -133,5 +130,5 @@ class BIM_UL_resources(UIList):
row.operator(
"bim.enable_editing_resource", text="", icon="GREASEPENCIL"
).resource = item.ifc_definition_id
-
+ row.operator("bim.enable_editing_resource_time", text="", icon="TIME").resource = item.ifc_definition_id
row.operator("bim.remove_resource", text="", icon="X").resource = item.ifc_definition_id
diff --git a/src/blenderbim/blenderbim/bim/module/root/operator.py b/src/blenderbim/blenderbim/bim/module/root/operator.py
index f6bffb0e3d..d0a5910a84 100644
--- a/src/blenderbim/blenderbim/bim/module/root/operator.py
+++ b/src/blenderbim/blenderbim/bim/module/root/operator.py
@@ -15,10 +15,10 @@ class EnableReassignClass(bpy.types.Operator):
bl_options = {"REGISTER", "UNDO"}
def execute(self, context):
- obj = bpy.context.active_object
+ obj = context.active_object
self.file = IfcStore.get_file()
ifc_class = obj.name.split("/")[0]
- bpy.context.active_object.BIMObjectProperties.is_reassigning_class = True
+ context.active_object.BIMObjectProperties.is_reassigning_class = True
ifc_products = [
"IfcElement",
"IfcElementType",
@@ -31,11 +31,11 @@ class EnableReassignClass(bpy.types.Operator):
]
for ifc_product in ifc_products:
if ifcopenshell.util.schema.is_a(IfcStore.get_schema().declaration_by_name(ifc_class), ifc_product):
- bpy.context.scene.BIMRootProperties.ifc_product = ifc_product
+ context.scene.BIMRootProperties.ifc_product = ifc_product
element = self.file.by_id(obj.BIMObjectProperties.ifc_definition_id)
- bpy.context.scene.BIMRootProperties.ifc_class = element.is_a()
+ context.scene.BIMRootProperties.ifc_class = element.is_a()
if hasattr(element, "PredefinedType") and element.PredefinedType:
- bpy.context.scene.BIMRootProperties.ifc_predefined_type = element.PredefinedType
+ context.scene.BIMRootProperties.ifc_predefined_type = element.PredefinedType
return {"FINISHED"}
@@ -45,7 +45,7 @@ class DisableReassignClass(bpy.types.Operator):
bl_options = {"REGISTER", "UNDO"}
def execute(self, context):
- bpy.context.active_object.BIMObjectProperties.is_reassigning_class = False
+ context.active_object.BIMObjectProperties.is_reassigning_class = False
return {"FINISHED"}
@@ -59,18 +59,18 @@ class ReassignClass(bpy.types.Operator):
return IfcStore.execute_ifc_operator(self, context)
def _execute(self, context):
- objects = [bpy.data.objects.get(self.obj)] if self.obj else bpy.context.selected_objects
+ objects = [bpy.data.objects.get(self.obj)] if self.obj else context.selected_objects
self.file = IfcStore.get_file()
- predefined_type = bpy.context.scene.BIMRootProperties.ifc_predefined_type
+ predefined_type = context.scene.BIMRootProperties.ifc_predefined_type
if predefined_type == "USERDEFINED":
- predefined_type = bpy.context.scene.BIMRootProperties.ifc_userdefined_type
+ predefined_type = context.scene.BIMRootProperties.ifc_userdefined_type
for obj in objects:
product = ifcopenshell.api.run(
"root.reassign_class",
self.file,
**{
"product": self.file.by_id(obj.BIMObjectProperties.ifc_definition_id),
- "ifc_class": bpy.context.scene.BIMRootProperties.ifc_class,
+ "ifc_class": context.scene.BIMRootProperties.ifc_class,
"predefined_type": predefined_type,
},
)
@@ -96,11 +96,11 @@ class AssignClass(bpy.types.Operator):
return IfcStore.execute_ifc_operator(self, context)
def _execute(self, context):
- objects = [bpy.data.objects.get(self.obj)] if self.obj else bpy.context.selected_objects
+ objects = [bpy.data.objects.get(self.obj)] if self.obj else context.selected_objects
self.file = IfcStore.get_file()
self.declaration = IfcStore.get_schema().declaration_by_name(self.ifc_class)
if self.predefined_type == "USERDEFINED":
- self.predefined_type = self.ifc_userdefined_type
+ self.predefined_type = self.userdefined_type
elif self.predefined_type == "":
predefined_type = None
for obj in objects:
@@ -128,20 +128,22 @@ class AssignClass(bpy.types.Operator):
)
if product.is_a("IfcElementType"):
- self.place_in_types_collection(obj)
+ self.place_in_types_collection(obj, context)
+ elif product.is_a("IfcOpeningElement"):
+ self.place_in_openings_collection(obj, context)
elif (
product.is_a("IfcSpatialElement")
or product.is_a("IfcSpatialStructureElement")
or product.is_a("IfcProject")
or product.is_a("IfcContext")
):
- self.place_in_spatial_collection(obj)
+ self.place_in_spatial_collection(obj, context)
else:
self.assign_potential_spatial_container(obj)
context.view_layer.objects.active = obj
- def place_in_types_collection(self, obj):
- for project in [c for c in bpy.context.view_layer.layer_collection.children if "IfcProject" in c.name]:
+ def place_in_types_collection(self, obj, context):
+ for project in [c for c in context.view_layer.layer_collection.children if "IfcProject" in c.name]:
if not [c for c in project.children if "Types" in c.name]:
types = bpy.data.collections.new("Types")
project.collection.children.link(types)
@@ -152,7 +154,19 @@ class AssignClass(bpy.types.Operator):
break
break
- def place_in_spatial_collection(self, obj):
+ def place_in_openings_collection(self, obj, context):
+ for project in [c for c in context.view_layer.layer_collection.children if "IfcProject" in c.name]:
+ if not [c for c in project.children if "IfcOpeningElements" in c.name]:
+ opening_elements = bpy.data.collections.new("IfcOpeningElements")
+ project.collection.children.link(opening_elements)
+ for collection in [c for c in project.children if "IfcOpeningElements" in c.name]:
+ for user_collection in obj.users_collection:
+ user_collection.objects.unlink(obj)
+ collection.collection.objects.link(obj)
+ break
+ break
+
+ def place_in_spatial_collection(self, obj, context):
for collection in obj.users_collection:
if collection.name == obj.name:
return
@@ -167,7 +181,7 @@ class AssignClass(bpy.types.Operator):
parent_collection.children.link(collection)
bpy.ops.bim.assign_object(related_object=obj.name, relating_object=parent_collection.name)
else:
- bpy.context.scene.collection.children.link(collection)
+ context.scene.collection.children.link(collection)
def assign_potential_spatial_container(self, obj):
for collection in obj.users_collection:
@@ -195,7 +209,7 @@ class UnassignClass(bpy.types.Operator):
if self.obj:
objects = [bpy.data.objects.get(self.obj)]
else:
- objects = bpy.context.selected_objects
+ objects = context.selected_objects
for obj in objects:
if not obj.BIMObjectProperties.ifc_definition_id:
continue
@@ -238,7 +252,7 @@ class UnlinkObject(bpy.types.Operator):
if self.obj:
objects = [bpy.data.objects.get(self.obj)]
else:
- objects = bpy.context.selected_objects
+ objects = context.selected_objects
for obj in objects:
if obj.BIMObjectProperties.ifc_definition_id:
IfcStore.unlink_element(obj=obj)
@@ -261,17 +275,33 @@ class CopyClass(bpy.types.Operator):
if self.obj:
objects = [bpy.data.objects.get(self.obj)]
else:
- objects = bpy.context.selected_objects
+ objects = context.selected_objects
for obj in objects:
if not obj.BIMObjectProperties.ifc_definition_id:
continue
- result = ifcopenshell.api.run(
- "root.copy_class", self.file, **{"product": self.file.by_id(obj.BIMObjectProperties.ifc_definition_id)}
- )
+ old_element = self.file.by_id(obj.BIMObjectProperties.ifc_definition_id)
+ result = ifcopenshell.api.run("root.copy_class", self.file, **{"product": old_element})
IfcStore.link_element(result, obj)
relating_type = ifcopenshell.util.element.get_type(result)
if relating_type and relating_type.RepresentationMaps:
bpy.ops.bim.assign_type(relating_type=relating_type.id(), related_object=obj.name)
else:
bpy.ops.bim.add_representation(obj=obj.name)
+ if result.is_a("IfcSpatialElement") or result.is_a("IfcSpatialStructureElement"):
+ self.place_in_spatial_collection(old_element, obj)
return {"FINISHED"}
+
+ def place_in_spatial_collection(self, old_element, obj):
+ aggregate = ifcopenshell.util.element.get_aggregate(old_element)
+ if not aggregate:
+ return
+ container_obj = IfcStore.get_element(aggregate.id())
+ for collection in obj.users_collection:
+ collection.objects.unlink(obj)
+ if "Ifc" in collection.name:
+ parent_collection = collection
+ for collection in container_obj.users_collection:
+ if collection.name == container_obj.name:
+ new = bpy.data.collections.new(obj.name)
+ new.objects.link(obj)
+ collection.children.link(new)
diff --git a/src/blenderbim/blenderbim/bim/module/root/prop.py b/src/blenderbim/blenderbim/bim/module/root/prop.py
index 80ba2a20e4..b79a2a94ea 100644
--- a/src/blenderbim/blenderbim/bim/module/root/prop.py
+++ b/src/blenderbim/blenderbim/bim/module/root/prop.py
@@ -1,4 +1,6 @@
import bpy
+import ifcopenshell
+import ifcopenshell.util.schema
from blenderbim.bim.ifc import IfcStore
from bpy.types import PropertyGroup
from bpy.props import (
@@ -82,17 +84,8 @@ def getIfcClasses(self, context):
file = IfcStore.get_file()
if len(classes_enum) < 1 and file:
declaration = IfcStore.get_schema().declaration_by_name(context.scene.BIMRootProperties.ifc_product)
-
- def get_classes(declaration):
- results = []
- if not declaration.is_abstract():
- results.append(declaration.name())
- for subtype in declaration.subtypes():
- results.extend(get_classes(subtype))
- return results
-
- classes = get_classes(declaration)
- classes_enum.extend([(c, c, "") for c in sorted(classes)])
+ declarations = ifcopenshell.util.schema.get_subtypes(declaration)
+ classes_enum.extend([(c, c, "") for c in sorted([d.name() for d in declarations])])
return classes_enum
diff --git a/src/blenderbim/blenderbim/bim/module/root/ui.py b/src/blenderbim/blenderbim/bim/module/root/ui.py
index f698b9ca75..6c92e39e26 100644
--- a/src/blenderbim/blenderbim/bim/module/root/ui.py
+++ b/src/blenderbim/blenderbim/bim/module/root/ui.py
@@ -29,17 +29,21 @@ class BIM_PT_class(Panel):
if props.is_reassigning_class:
row = self.layout.row(align=True)
row.operator("bim.reassign_class", icon="CHECKMARK")
- row.operator("bim.disable_reassign_class", icon="X", text="")
- self.draw_class_dropdowns()
+ row.operator("bim.disable_reassign_class", icon="CANCEL", text="")
+ self.draw_class_dropdowns(context)
else:
data = Data.products[props.ifc_definition_id]
name = data["type"]
if data["PredefinedType"] and data["PredefinedType"] == "USERDEFINED":
- name += "[{}]".format(data["ObjectType"])
+ if data["ObjectType"]:
+ name += "[{}]".format(data["ObjectType"])
+ elif data["ElementType"]:
+ name += "[{}]".format(data["ElementType"])
elif data["PredefinedType"]:
name += "[{}]".format(data["PredefinedType"])
row = self.layout.row(align=True)
row.label(text=name)
+ row.operator("bim.select_ifc_class", text="", icon="RESTRICT_SELECT_OFF").ifc_class = data["type"]
row.operator("bim.copy_class", icon="DUPLICATE", text="")
row.operator("bim.unlink_object", icon="UNLINKED", text="")
if IfcStore.get_file().by_id(props.ifc_definition_id).is_a("IfcRoot"):
@@ -49,15 +53,15 @@ class BIM_PT_class(Panel):
else:
row.operator("bim.unassign_class", icon="X", text="").obj = context.active_object.name
else:
- self.draw_class_dropdowns()
+ self.draw_class_dropdowns(context)
row = self.layout.row(align=True)
op = row.operator("bim.assign_class")
- op.ifc_class = bpy.context.scene.BIMRootProperties.ifc_class
- op.predefined_type = bpy.context.scene.BIMRootProperties.ifc_predefined_type
- op.userdefined_type = bpy.context.scene.BIMRootProperties.ifc_userdefined_type
+ op.ifc_class = context.scene.BIMRootProperties.ifc_class
+ op.predefined_type = context.scene.BIMRootProperties.ifc_predefined_type
+ op.userdefined_type = context.scene.BIMRootProperties.ifc_userdefined_type
- def draw_class_dropdowns(self):
- props = bpy.context.scene.BIMRootProperties
+ def draw_class_dropdowns(self, context):
+ props = context.scene.BIMRootProperties
row = self.layout.row()
row.prop(props, "ifc_product")
row = self.layout.row()
@@ -69,4 +73,4 @@ class BIM_PT_class(Panel):
row = self.layout.row()
row.prop(props, "ifc_userdefined_type")
row = self.layout.row()
- row.prop(bpy.context.scene.BIMProperties, "contexts")
+ row.prop(context.scene.BIMProperties, "contexts")
diff --git a/src/blenderbim/blenderbim/bim/module/search/operator.py b/src/blenderbim/blenderbim/bim/module/search/operator.py
index f4b938d654..3b39499657 100644
--- a/src/blenderbim/blenderbim/bim/module/search/operator.py
+++ b/src/blenderbim/blenderbim/bim/module/search/operator.py
@@ -22,23 +22,25 @@ colour_list = [
]
-def does_keyword_exist(pattern, string):
+def does_keyword_exist(pattern, string, context):
string = str(string)
+ props = context.scene.BIMSearchProperties
if (
- bpy.context.scene.BIMSearchProperties.should_use_regex
- and bpy.context.scene.BIMSearchProperties.should_ignorecase
+ props.should_use_regex
+ and props.should_ignorecase
and re.search(pattern, string, flags=re.IGNORECASE)
):
return True
- elif bpy.context.scene.BIMSearchProperties.should_use_regex and re.search(pattern, string):
+ elif props.should_use_regex and re.search(pattern, string):
return True
- elif bpy.context.scene.BIMSearchProperties.should_ignorecase and string.lower() == pattern.lower():
+ elif props.should_ignorecase and string.lower() == pattern.lower():
return True
elif string == pattern:
return True
class SelectGlobalId(bpy.types.Operator):
+ """Click to select the objects that match with the given Global ID"""
bl_idname = "bim.select_global_id"
bl_label = "Select GlobalId"
bl_options = {"REGISTER", "UNDO"}
@@ -59,23 +61,25 @@ class SelectGlobalId(bpy.types.Operator):
class SelectIfcClass(bpy.types.Operator):
+ """Click to select all objects that match with the given IFC class"""
bl_idname = "bim.select_ifc_class"
bl_label = "Select IFC Class"
bl_options = {"REGISTER", "UNDO"}
+ ifc_class: bpy.props.StringProperty()
def execute(self, context):
self.file = IfcStore.get_file()
- props = context.scene.BIMSearchProperties
for obj in context.visible_objects:
if not obj.BIMObjectProperties.ifc_definition_id:
continue
element = self.file.by_id(obj.BIMObjectProperties.ifc_definition_id)
- if does_keyword_exist(props.ifc_class, element.is_a()):
+ if does_keyword_exist(self.ifc_class, element.is_a(), context):
obj.select_set(True)
return {"FINISHED"}
class SelectAttribute(bpy.types.Operator):
+ """Click to select all objects that match with the given Attribute Name and Value"""
bl_idname = "bim.select_attribute"
bl_label = "Select Attribute"
bl_options = {"REGISTER", "UNDO"}
@@ -94,12 +98,13 @@ class SelectAttribute(bpy.types.Operator):
value = next((v for k, v in data.items() if k.lower() == attribute_name.lower()), None)
else:
value = getattr(element, attribute_name, None)
- if does_keyword_exist(pattern, value):
+ if does_keyword_exist(pattern, value, context):
obj.select_set(True)
return {"FINISHED"}
class SelectPset(bpy.types.Operator):
+ """Click to select all objects that match with the given Pset Name, Properties Name and Value"""
bl_idname = "bim.select_pset"
bl_label = "Select Pset"
bl_options = {"REGISTER", "UNDO"}
@@ -126,19 +131,20 @@ class SelectPset(bpy.types.Operator):
else:
props = props or psets.get(search_pset_name, {})
value = props.get(search_prop_name, None)
- if does_keyword_exist(pattern, value):
+ if does_keyword_exist(pattern, value, context):
obj.select_set(True)
return {"FINISHED"}
class ColourByAttribute(bpy.types.Operator):
+ """Click to colour different objects according to given Attribute Name"""
bl_idname = "bim.colour_by_attribute"
bl_label = "Colour by Attribute"
bl_options = {"REGISTER", "UNDO"}
def execute(self, context):
IfcStore.begin_transaction(self)
- self.store_state()
+ self.store_state(context)
result = self._execute(context)
IfcStore.add_transaction_operation(self)
IfcStore.end_transaction(self)
@@ -161,13 +167,13 @@ class ColourByAttribute(bpy.types.Operator):
if value not in values:
values[value] = next(colours)
obj.color = values[value]
- areas = [a for a in bpy.context.screen.areas if a.type == "VIEW_3D"]
+ areas = [a for a in context.screen.areas if a.type == "VIEW_3D"]
if areas:
areas[0].spaces[0].shading.color_type = "OBJECT"
return {"FINISHED"}
- def store_state(self):
- areas = [a for a in bpy.context.screen.areas if a.type == "VIEW_3D"]
+ def store_state(self, context):
+ areas = [a for a in context.screen.areas if a.type == "VIEW_3D"]
if areas:
self.transaction_data = {"area": areas[0], "color_type": areas[0].spaces[0].shading.color_type}
@@ -181,13 +187,14 @@ class ColourByAttribute(bpy.types.Operator):
class ColourByPset(bpy.types.Operator):
+ """Click to colour different objects according to given Prop Name"""
bl_idname = "bim.colour_by_pset"
bl_label = "Colour by Pset"
bl_options = {"REGISTER", "UNDO"}
def execute(self, context):
IfcStore.begin_transaction(self)
- self.store_state()
+ self.store_state(context)
result = self._execute(context)
IfcStore.add_transaction_operation(self)
IfcStore.end_transaction(self)
@@ -218,13 +225,13 @@ class ColourByPset(bpy.types.Operator):
if value not in values:
values[value] = next(colours)
obj.color = values[value]
- areas = [a for a in bpy.context.screen.areas if a.type == "VIEW_3D"]
+ areas = [a for a in context.screen.areas if a.type == "VIEW_3D"]
if areas:
areas[0].spaces[0].shading.color_type = "OBJECT"
return {"FINISHED"}
- def store_state(self):
- areas = [a for a in bpy.context.screen.areas if a.type == "VIEW_3D"]
+ def store_state(self, context):
+ areas = [a for a in context.screen.areas if a.type == "VIEW_3D"]
if areas:
self.transaction_data = {"area": areas[0], "color_type": areas[0].spaces[0].shading.color_type}
@@ -238,13 +245,14 @@ class ColourByPset(bpy.types.Operator):
class ColourByClass(bpy.types.Operator):
+ """Click to colour different objects according to their IFC Classes"""
bl_idname = "bim.colour_by_class"
bl_label = "Colour by Class"
bl_options = {"REGISTER", "UNDO"}
def execute(self, context):
IfcStore.begin_transaction(self)
- self.store_state()
+ self.store_state(context)
result = self._execute(context)
IfcStore.add_transaction_operation(self)
IfcStore.end_transaction(self)
@@ -254,7 +262,7 @@ class ColourByClass(bpy.types.Operator):
self.file = IfcStore.get_file()
colours = cycle(colour_list)
ifc_classes = {}
- for obj in bpy.context.visible_objects:
+ for obj in context.visible_objects:
if not obj.BIMObjectProperties.ifc_definition_id:
continue
element = self.file.by_id(obj.BIMObjectProperties.ifc_definition_id)
@@ -262,13 +270,13 @@ class ColourByClass(bpy.types.Operator):
if ifc_class not in ifc_classes:
ifc_classes[ifc_class] = next(colours)
obj.color = ifc_classes[ifc_class]
- areas = [a for a in bpy.context.screen.areas if a.type == "VIEW_3D"]
+ areas = [a for a in context.screen.areas if a.type == "VIEW_3D"]
if areas:
areas[0].spaces[0].shading.color_type = "OBJECT"
return {"FINISHED"}
- def store_state(self):
- areas = [a for a in bpy.context.screen.areas if a.type == "VIEW_3D"]
+ def store_state(self, context):
+ areas = [a for a in context.screen.areas if a.type == "VIEW_3D"]
if areas:
self.transaction_data = {"area": areas[0], "color_type": areas[0].spaces[0].shading.color_type}
@@ -282,10 +290,11 @@ class ColourByClass(bpy.types.Operator):
class ResetObjectColours(bpy.types.Operator):
+ """Reset the colour of selected objects"""
bl_idname = "bim.reset_object_colours"
bl_label = "Reset Colours"
def execute(self, context):
- for obj in bpy.context.selected_objects:
+ for obj in context.selected_objects:
obj.color = (1, 1, 1, 1)
return {"FINISHED"}
diff --git a/src/blenderbim/blenderbim/bim/module/search/ui.py b/src/blenderbim/blenderbim/bim/module/search/ui.py
index a12b4ace6a..c45339201f 100644
--- a/src/blenderbim/blenderbim/bim/module/search/ui.py
+++ b/src/blenderbim/blenderbim/bim/module/search/ui.py
@@ -28,11 +28,11 @@ class BIM_PT_search(Panel):
row = self.layout.row(align=True)
row.prop(props, "global_id", text="", icon="TRACKER")
- row.operator("bim.select_global_id", text="", icon="VIEWZOOM")
+ row.operator("bim.select_global_id", text="", icon="VIEWZOOM").global_id = props.global_id
row = self.layout.row(align=True)
row.prop(props, "ifc_class", text="", icon="OBJECT_DATA")
- row.operator("bim.select_ifc_class", text="", icon="VIEWZOOM")
+ row.operator("bim.select_ifc_class", text="", icon="VIEWZOOM").ifc_class = props.ifc_class
row.operator("bim.colour_by_class", text="", icon="BRUSH_DATA")
row = self.layout.row(align=True)
diff --git a/src/blenderbim/blenderbim/bim/module/sequence/__init__.py b/src/blenderbim/blenderbim/bim/module/sequence/__init__.py
index 553e9f4d77..1fae8dd723 100644
--- a/src/blenderbim/blenderbim/bim/module/sequence/__init__.py
+++ b/src/blenderbim/blenderbim/bim/module/sequence/__init__.py
@@ -76,6 +76,9 @@ classes = (
operator.AddTaskColumn,
operator.RemoveTaskColumn,
operator.SetTaskSortColumn,
+ operator.EnableAssigningResources,
+ operator.AssignResource,
+ operator.UnassignResource,
prop.WorkPlan,
prop.BIMWorkPlanProperties,
prop.Task,
diff --git a/src/blenderbim/blenderbim/bim/module/sequence/operator.py b/src/blenderbim/blenderbim/bim/module/sequence/operator.py
index 5a5a6852df..c66726e4e4 100644
--- a/src/blenderbim/blenderbim/bim/module/sequence/operator.py
+++ b/src/blenderbim/blenderbim/bim/module/sequence/operator.py
@@ -18,6 +18,7 @@ from dateutil import parser, relativedelta
from blenderbim.bim.ifc import IfcStore
from bpy_extras.io_utils import ImportHelper
from ifcopenshell.api.sequence.data import Data
+from ifcopenshell.api.resource.data import Data as ResourceData
class AddWorkPlan(bpy.types.Operator):
@@ -497,7 +498,7 @@ class RemoveTask(bpy.types.Operator):
class EnableEditingTaskTime(bpy.types.Operator):
bl_idname = "bim.enable_editing_task_time"
- bl_label = "Enable Editing Task"
+ bl_label = "Enable Editing Task Time"
bl_options = {"REGISTER", "UNDO"}
task: bpy.props.IntProperty()
@@ -534,7 +535,7 @@ class EnableEditingTaskTime(bpy.types.Operator):
def add_task_time(self):
task_time = ifcopenshell.api.run("sequence.add_task_time", self.file, task=self.file.by_id(self.task))
- Data.load(IfcStore.get_file())
+ Data.load(self.file)
return task_time
@@ -753,7 +754,7 @@ class AssignProduct(bpy.types.Operator):
def _execute(self, context):
relating_products = (
- [bpy.data.objects.get(self.relating_product)] if self.relating_product else bpy.context.selected_objects
+ [bpy.data.objects.get(self.relating_product)] if self.relating_product else context.selected_objects
)
for relating_product in relating_products:
self.file = IfcStore.get_file()
@@ -779,7 +780,7 @@ class UnassignProduct(bpy.types.Operator):
def _execute(self, context):
relating_products = (
- [bpy.data.objects.get(self.relating_product)] if self.relating_product else bpy.context.selected_objects
+ [bpy.data.objects.get(self.relating_product)] if self.relating_product else context.selected_objects
)
for relating_product in relating_products:
self.file = IfcStore.get_file()
@@ -805,7 +806,7 @@ class AssignProcess(bpy.types.Operator):
def _execute(self, context):
related_objects = (
- [bpy.data.objects.get(self.related_object)] if self.related_object else bpy.context.selected_objects
+ [bpy.data.objects.get(self.related_object)] if self.related_object else context.selected_objects
)
for related_object in related_objects:
self.file = IfcStore.get_file()
@@ -831,7 +832,7 @@ class UnassignProcess(bpy.types.Operator):
def _execute(self, context):
related_objects = (
- [bpy.data.objects.get(self.related_object)] if self.related_object else bpy.context.selected_objects
+ [bpy.data.objects.get(self.related_object)] if self.related_object else context.selected_objects
)
for related_object in related_objects:
self.file = IfcStore.get_file()
@@ -864,10 +865,10 @@ class GenerateGanttChart(bpy.types.Operator):
}
for task_id in Data.work_schedules[self.work_schedule]["RelatedObjects"]:
self.create_new_task_json(task_id)
- with open(os.path.join(bpy.context.scene.BIMProperties.data_dir, "gantt", "index.html"), "w") as f:
- with open(os.path.join(bpy.context.scene.BIMProperties.data_dir, "gantt", "index.mustache"), "r") as t:
+ with open(os.path.join(context.scene.BIMProperties.data_dir, "gantt", "index.html"), "w") as f:
+ with open(os.path.join(context.scene.BIMProperties.data_dir, "gantt", "index.mustache"), "r") as t:
f.write(pystache.render(t.read(), {"json_data": json.dumps(self.json)}))
- webbrowser.open("file://" + os.path.join(bpy.context.scene.BIMProperties.data_dir, "gantt", "index.html"))
+ webbrowser.open("file://" + os.path.join(context.scene.BIMProperties.data_dir, "gantt", "index.html"))
return {"FINISHED"}
def create_new_task_json(self, task_id):
@@ -996,7 +997,7 @@ class ImportP6(bpy.types.Operator, ImportHelper):
filter_glob: bpy.props.StringProperty(default="*.xml", options={"HIDDEN"})
def execute(self, context):
- from ifcp6.p62ifc import P62Ifc
+ from ifc4d.p62ifc import P62Ifc
self.file = IfcStore.get_file()
start = time.time()
@@ -1018,7 +1019,7 @@ class ImportMSP(bpy.types.Operator, ImportHelper):
filter_glob: bpy.props.StringProperty(default="*.xml", options={"HIDDEN"})
def execute(self, context):
- from ifcp6.msp2ifc import MSP2Ifc
+ from ifc4d.msp2ifc import MSP2Ifc
self.file = IfcStore.get_file()
start = time.time()
@@ -1568,7 +1569,7 @@ class SelectTaskRelatedProducts(bpy.types.Operator):
related_products = ifcopenshell.api.run(
"sequence.get_related_products", self.file, **{"related_object": self.file.by_id(self.task)}
)
- for obj in bpy.context.visible_objects:
+ for obj in context.visible_objects:
obj.select_set(False)
if obj.BIMObjectProperties.ifc_definition_id in related_products:
obj.select_set(True)
@@ -1644,7 +1645,7 @@ class VisualiseWorkScheduleDateRange(bpy.types.Operator):
self.finish = parser.parse(self.props.visualisation_finish, dayfirst=True, fuzzy=True)
self.duration = self.finish - self.start
self.start_frame = 1
- self.total_frames = self.calculate_total_frames()
+ self.total_frames = self.calculate_total_frames(context)
self.preprocess_tasks()
for obj in bpy.data.objects:
if not obj.BIMObjectProperties.ifc_definition_id:
@@ -1742,7 +1743,7 @@ class VisualiseWorkScheduleDateRange(bpy.types.Operator):
obj.keyframe_insert(data_path="color", frame=product_frame["COMPLETED"])
obj.keyframe_insert(data_path="hide_viewport", frame=product_frame["COMPLETED"])
- def calculate_total_frames(self):
+ def calculate_total_frames(self, context):
if self.props.speed_types == "FRAME_SPEED":
return self.calculate_using_frames(
self.start,
@@ -1754,7 +1755,7 @@ class VisualiseWorkScheduleDateRange(bpy.types.Operator):
return self.calculate_using_duration(
self.start,
self.finish,
- bpy.context.scene.render.fps,
+ context.scene.render.fps,
isodate.parse_duration(self.props.speed_animation_duration),
isodate.parse_duration(self.props.speed_real_duration),
)
@@ -1762,7 +1763,7 @@ class VisualiseWorkScheduleDateRange(bpy.types.Operator):
return self.calculate_using_multiplier(
self.start,
self.finish,
- bpy.context.scene.render.fps,
+ context.scene.render.fps,
self.props.speed_multiplier,
)
@@ -1940,10 +1941,11 @@ class RemoveTaskColumn(bpy.types.Operator):
bl_idname = "bim.remove_task_column"
bl_label = "Remove Task Column"
bl_options = {"REGISTER", "UNDO"}
+ name: bpy.props.StringProperty()
def execute(self, context):
self.props = context.scene.BIMWorkScheduleProperties
- self.props.columns.remove(self.props.active_column_index)
+ self.props.columns.remove(self.props.columns.find(self.name))
return {"FINISHED"}
@@ -1958,3 +1960,79 @@ class SetTaskSortColumn(bpy.types.Operator):
self.props.sort_column = self.column
bpy.ops.bim.enable_editing_tasks(work_schedule=self.props.active_work_schedule_id)
return {"FINISHED"}
+
+
+class EnableAssigningResources(bpy.types.Operator):
+ bl_idname = "bim.enable_assigning_resources"
+ bl_label = "Enable Assigning Resources To Tasks"
+ bl_options = {"REGISTER", "UNDO"}
+ task: bpy.props.IntProperty()
+
+ def execute(self, context):
+ self.props = context.scene.BIMWorkScheduleProperties
+ self.props.active_task_id = self.task
+ self.props.editing_task_type = "RESOURCES"
+ return {"FINISHED"}
+
+
+class AssignResource(bpy.types.Operator):
+ bl_idname = "bim.assign_resource"
+ bl_label = "Assign Resource"
+ bl_options = {"REGISTER", "UNDO"}
+ task: bpy.props.IntProperty()
+ parent_resource: bpy.props.IntProperty()
+
+ def execute(self, context):
+ return IfcStore.execute_ifc_operator(self, context)
+
+ def _execute(self, context):
+ self.file = IfcStore.get_file()
+ resource = ifcopenshell.api.run(
+ "resource.add_resource",
+ self.file,
+ **{
+ "parent_resource": self.file.by_id(self.parent_resource),
+ "ifc_class": self.file.by_id(self.parent_resource).is_a(),
+ "name": self.file.by_id(self.parent_resource).Name + ": " + self.file.by_id(self.task).Name,
+ },
+ )
+ ifcopenshell.api.run(
+ "sequence.assign_process",
+ self.file,
+ **{
+ "related_object": resource,
+ "relating_process": self.file.by_id(self.task),
+ },
+ )
+ Data.load(self.file)
+ ResourceData.load(self.file)
+ bpy.ops.bim.load_resources()
+ return {"FINISHED"}
+
+class UnassignResource(bpy.types.Operator):
+ bl_idname = "bim.unassign_resource"
+ bl_label = "Unassign Resource"
+ bl_options = {"REGISTER", "UNDO"}
+ task: bpy.props.IntProperty()
+ resource: bpy.props.IntProperty()
+
+ def execute(self, context):
+ return IfcStore.execute_ifc_operator(self, context)
+
+ def _execute(self, context):
+ self.file = IfcStore.get_file()
+ ifcopenshell.api.run(
+ "sequence.unassign_process",
+ self.file,
+ related_object=self.file.by_id(self.resource),
+ relating_process=self.file.by_id(self.task),
+ )
+ ifcopenshell.api.run(
+ "resource.remove_resource",
+ self.file,
+ resource=self.file.by_id(self.resource),
+ )
+ Data.load(self.file)
+ ResourceData.load(self.file)
+ bpy.ops.bim.load_resources()
+ return {"FINISHED"}
diff --git a/src/blenderbim/blenderbim/bim/module/sequence/prop.py b/src/blenderbim/blenderbim/bim/module/sequence/prop.py
index 02e6e6cbde..556878e411 100644
--- a/src/blenderbim/blenderbim/bim/module/sequence/prop.py
+++ b/src/blenderbim/blenderbim/bim/module/sequence/prop.py
@@ -3,6 +3,7 @@ import ifcopenshell.api
import ifcopenshell.util.attribute
from blenderbim.bim.ifc import IfcStore
from ifcopenshell.api.sequence.data import Data
+from ifcopenshell.api.resource.data import Data as ResourceData
from blenderbim.bim.prop import StrProperty, Attribute
from dateutil import parser
from bpy.types import PropertyGroup
@@ -116,7 +117,6 @@ def updateTaskTimeDateTime(self, context, startfinish):
return "-"
return time.strftime("%d/%m/%y")
- startfinish_key = "Schedule" + startfinish.capitalize()
startfinish_value = getattr(self, startfinish)
if startfinish_value == "-":
@@ -140,6 +140,7 @@ def updateTaskTimeDateTime(self, context, startfinish):
task_time = ifcopenshell.api.run("sequence.add_task_time", self.file, task=task)
Data.load(IfcStore.get_file())
+ startfinish_key = "Schedule" + startfinish.capitalize()
if Data.task_times[task_time.id()][startfinish_key] == startfinish_datetime:
canonical_startfinish_value = canonicalise_time(startfinish_datetime)
if startfinish_value != canonical_startfinish_value:
@@ -153,10 +154,9 @@ def updateTaskTimeDateTime(self, context, startfinish):
)
Data.load(IfcStore.get_file())
bpy.ops.bim.load_task_properties()
- setattr(self, startfinish, canonicalise_time(startfinish_datetime))
-def updateTaskduration(self, context):
+def updateTaskDuration(self, context):
props = context.scene.BIMWorkScheduleProperties
if not props.is_task_update_enabled:
return
@@ -208,6 +208,13 @@ def updateVisualisationStartFinish(self, context, startfinish):
setattr(self, startfinish, canonical_value)
+def getResources(self, context):
+ self.file = IfcStore.get_file()
+ return [(str(k), v["Name"], "") for k, v in ResourceData.resources.items()
+ if self.file.by_id(k).Nests and self.file.by_id(k).Nests[0].RelatingObject.HasContext
+ ]
+
+
class Task(PropertyGroup):
name: StringProperty(name="Name", update=updateTaskName)
identification: StringProperty(name="Identification", update=updateTaskIdentification)
@@ -216,7 +223,7 @@ class Task(PropertyGroup):
is_selected: BoolProperty(name="Is Selected")
is_expanded: BoolProperty(name="Is Expanded")
level_index: IntProperty(name="Level Index")
- duration: StringProperty(name="Duration", update=updateTaskduration)
+ duration: StringProperty(name="Duration", update=updateTaskDuration)
start: StringProperty(name="Start", update=updateTaskTimeStart)
finish: StringProperty(name="Finish", update=updateTaskTimeFinish)
calendar: StringProperty(name="Calendar")
@@ -274,7 +281,7 @@ class BIMWorkScheduleProperties(PropertyGroup):
],
name="Special Columns",
)
- active_task_time_id: IntProperty(name="Active Task Id")
+ active_task_time_id: IntProperty(name="Active Task Time Id")
task_time_attributes: CollectionProperty(name="Task Time Attributes", type=Attribute)
contracted_tasks: StringProperty(name="Contracted Task Items", default="[]")
is_task_update_enabled: BoolProperty(name="Is Task Update Enabled", default=True)
@@ -297,6 +304,7 @@ class BIMWorkScheduleProperties(PropertyGroup):
name="Speed Type",
default="FRAME_SPEED",
)
+ resources: EnumProperty(items=getResources, name="Resources")
class BIMTaskTreeProperties(PropertyGroup):
diff --git a/src/blenderbim/blenderbim/bim/module/sequence/ui.py b/src/blenderbim/blenderbim/bim/module/sequence/ui.py
index 529d48bd9e..2fbaff93fc 100644
--- a/src/blenderbim/blenderbim/bim/module/sequence/ui.py
+++ b/src/blenderbim/blenderbim/bim/module/sequence/ui.py
@@ -3,6 +3,7 @@ import blenderbim.bim.helper
from bpy.types import Panel, UIList
from blenderbim.bim.ifc import IfcStore
from ifcopenshell.api.sequence.data import Data
+from ifcopenshell.api.resource.data import Data as ResourceData
import blenderbim.bim.module.sequence.helper as helper
from datetime import datetime
@@ -17,7 +18,8 @@ class BIM_PT_work_plans(Panel):
@classmethod
def poll(cls, context):
- return IfcStore.get_file()
+ file = IfcStore.get_file()
+ return file and file.schema != "IFC2X3"
def draw(self, context):
if not Data.is_loaded:
@@ -88,7 +90,8 @@ class BIM_PT_work_schedules(Panel):
@classmethod
def poll(cls, context):
- return IfcStore.get_file()
+ file = IfcStore.get_file()
+ return file and hasattr(file, "schema") and file.schema != "IFC2X3"
def draw(self, context):
self.props = context.scene.BIMWorkScheduleProperties
@@ -212,6 +215,8 @@ class BIM_PT_work_schedules(Panel):
self.draw_editable_task_sequence_ui()
elif self.props.active_task_time_id and self.props.editing_task_type == "TASKTIME":
self.draw_editable_task_time_attributes_ui()
+ elif self.props.active_task_id and self.props.editing_task_type == "RESOURCES":
+ self.draw_editable_task_resource_ui()
def draw_editable_task_sequence_ui(self):
task = Data.tasks[self.props.active_task_id]
@@ -285,6 +290,23 @@ class BIM_PT_work_schedules(Panel):
def draw_editable_task_time_attributes_ui(self):
blenderbim.bim.helper.draw_attributes(self.props.task_time_attributes, self.layout)
+ def draw_editable_task_resource_ui(self):
+ row = self.layout.row(align=True)
+ row.prop(self.props, "resources", text="")
+ op = row.operator("bim.assign_resource", text="", icon="ADD")
+ op.parent_resource = int(self.props.resources)
+ op.task = self.props.active_task_id
+ task = Data.tasks[self.props.active_task_id]
+ ResourceData.load(IfcStore.get_file())
+
+ for related_obect_id in task["OperatesOn"]:
+ resource = ResourceData.resources[related_obect_id]
+ row = self.layout.row(align=True)
+ row.label(text=resource["Name"], icon="COMMUNITY")
+ op = row.operator("bim.unassign_resource", text="", icon="X")
+ op.task = self.props.active_task_id
+ op.resource = related_obect_id
+
class BIM_UL_task_columns(UIList):
def draw_item(self, context, layout, data, item, icon, active_data, active_propname):
@@ -294,7 +316,7 @@ class BIM_UL_task_columns(UIList):
row.prop(item, "name", emboss=False, text="")
if props.sort_column == item.name:
row.label(text="", icon="SORTALPHA")
- row.operator("bim.remove_task_column", text="", icon="X")
+ row.operator("bim.remove_task_column", text="", icon="X").name = item.name
class BIM_UL_tasks(UIList):
@@ -414,6 +436,7 @@ class BIM_UL_tasks(UIList):
row.operator(
"bim.enable_editing_task_calendar", text="", icon="VIEW_ORTHO"
).task = item.ifc_definition_id
+ row.operator("bim.enable_assigning_resources", text="", icon="COMMUNITY").task = item.ifc_definition_id
row.operator("bim.enable_editing_task", text="", icon="GREASEPENCIL").task = item.ifc_definition_id
row.operator("bim.add_task", text="", icon="ADD").task = item.ifc_definition_id
row.operator("bim.remove_task", text="", icon="X").task = item.ifc_definition_id
@@ -429,7 +452,8 @@ class BIM_PT_work_calendars(Panel):
@classmethod
def poll(cls, context):
- return IfcStore.get_file()
+ file = IfcStore.get_file()
+ return file and hasattr(file, "schema") and file.schema != "IFC2X3"
def draw(self, context):
if not Data.is_loaded:
diff --git a/src/blenderbim/blenderbim/bim/module/spatial/operator.py b/src/blenderbim/blenderbim/bim/module/spatial/operator.py
index 8441c197e6..9f7d5648d0 100644
--- a/src/blenderbim/blenderbim/bim/module/spatial/operator.py
+++ b/src/blenderbim/blenderbim/bim/module/spatial/operator.py
@@ -17,9 +17,12 @@ class AssignContainer(bpy.types.Operator):
return IfcStore.execute_ifc_operator(self, context)
def _execute(self, context):
+ # The active object pointer is lost when the object is unlinked from all collections in the view layer
+ # We need to store it first, then restore it at the end
+ active_object = context.active_object
self.file = IfcStore.get_file()
related_elements = (
- [bpy.data.objects.get(self.related_element)] if self.related_element else bpy.context.selected_objects
+ [bpy.data.objects.get(self.related_element)] if self.related_element else context.selected_objects
)
sprops = context.scene.BIMSpatialProperties
relating_structure = (
@@ -49,7 +52,7 @@ class AssignContainer(bpy.types.Operator):
relating_collection = bpy.data.collections.get(relating_structure_obj.name)
if aggregate_collection:
- self.remove_collection(bpy.context.scene.collection, aggregate_collection)
+ self.remove_collection(context.scene.collection, aggregate_collection)
for collection in bpy.data.collections:
self.remove_collection(collection, aggregate_collection)
relating_collection.children.link(aggregate_collection)
@@ -57,6 +60,8 @@ class AssignContainer(bpy.types.Operator):
for collection in related_element.users_collection:
collection.objects.unlink(related_element)
relating_collection.objects.link(related_element)
+ # Restore the active object :
+ context.view_layer.objects.active = active_object
return {"FINISHED"}
def remove_collection(self, parent, child):
@@ -72,7 +77,7 @@ class EnableEditingContainer(bpy.types.Operator):
bl_options = {"REGISTER", "UNDO"}
def execute(self, context):
- bpy.context.active_object.BIMObjectSpatialProperties.is_editing = True
+ context.active_object.BIMObjectSpatialProperties.is_editing = True
getSpatialContainers(self, context)
return {"FINISHED"}
@@ -95,7 +100,7 @@ class DisableEditingContainer(bpy.types.Operator):
obj: bpy.props.StringProperty()
def execute(self, context):
- obj = bpy.data.objects.get(self.obj) if self.obj else bpy.context.active_object
+ obj = bpy.data.objects.get(self.obj) if self.obj else context.active_object
obj.BIMObjectSpatialProperties.is_editing = False
return {"FINISHED"}
@@ -110,7 +115,7 @@ class RemoveContainer(bpy.types.Operator):
return IfcStore.execute_ifc_operator(self, context)
def _execute(self, context):
- obj = bpy.data.objects.get(self.obj) if self.obj else bpy.context.active_object
+ obj = bpy.data.objects.get(self.obj) if self.obj else context.active_object
oprops = obj.BIMObjectProperties
self.file = IfcStore.get_file()
ifcopenshell.api.run(
@@ -120,14 +125,14 @@ class RemoveContainer(bpy.types.Operator):
aggregate_collection = bpy.data.collections.get(obj.name)
if aggregate_collection:
- self.remove_collection(bpy.context.scene.collection, aggregate_collection)
+ self.remove_collection(context.scene.collection, aggregate_collection)
for collection in bpy.data.collections:
self.remove_collection(collection, spatial_collection)
- bpy.context.scene.collection.children.link(aggregate_collection)
+ context.scene.collection.children.link(aggregate_collection)
else:
for collection in obj.users_collection:
collection.objects.unlink(obj)
- bpy.context.scene.collection.objects.link(obj)
+ context.scene.collection.objects.link(obj)
return {"FINISHED"}
def remove_collection(self, parent, child):
@@ -148,7 +153,7 @@ class CopyToContainer(bpy.types.Operator):
def _execute(self, context):
self.file = IfcStore.get_file()
- objects = [bpy.data.objects.get(self.obj)] if self.obj else bpy.context.selected_objects
+ objects = [bpy.data.objects.get(self.obj)] if self.obj else context.selected_objects
sprops = context.scene.BIMSpatialProperties
container_ids = [c.ifc_definition_id for c in sprops.spatial_elements if c.is_selected]
for obj in objects:
diff --git a/src/blenderbim/blenderbim/bim/module/structural/operator.py b/src/blenderbim/blenderbim/bim/module/structural/operator.py
index 60323d36a8..6b036bccb0 100644
--- a/src/blenderbim/blenderbim/bim/module/structural/operator.py
+++ b/src/blenderbim/blenderbim/bim/module/structural/operator.py
@@ -20,7 +20,7 @@ class AddStructuralMemberConnection(bpy.types.Operator):
return IfcStore.execute_ifc_operator(self, context)
def _execute(self, context):
- obj = bpy.context.active_object
+ obj = context.active_object
oprops = obj.BIMObjectProperties
props = obj.BIMStructuralProperties
file = IfcStore.get_file()
@@ -46,7 +46,7 @@ class EnableEditingStructuralConnectionCondition(bpy.types.Operator):
connects_structural_member: bpy.props.IntProperty()
def execute(self, context):
- obj = bpy.context.active_object
+ obj = context.active_object
oprops = obj.BIMObjectProperties
props = obj.BIMStructuralProperties
applied_condition_id = Data.connects_structural_members[self.connects_structural_member]["AppliedCondition"]
@@ -60,7 +60,7 @@ class DisableEditingStructuralConnectionCondition(bpy.types.Operator):
bl_options = {"REGISTER", "UNDO"}
def execute(self, context):
- obj = bpy.context.active_object
+ obj = context.active_object
props = obj.BIMStructuralProperties
props.active_connects_structural_member = 0
return {"FINISHED"}
@@ -423,7 +423,7 @@ class EnableEditingStructuralItemAxis(bpy.types.Operator):
bl_options = {"REGISTER", "UNDO"}
def execute(self, context):
- obj = bpy.context.active_object
+ obj = context.active_object
oprops = obj.BIMObjectProperties
props = obj.BIMStructuralProperties
@@ -463,7 +463,7 @@ class DisableEditingStructuralItemAxis(bpy.types.Operator):
bl_options = {"REGISTER", "UNDO"}
def execute(self, context):
- obj = bpy.context.active_object
+ obj = context.active_object
props = obj.BIMStructuralProperties
props.is_editing_axis = False
if props.axis_empty:
@@ -479,7 +479,7 @@ class EditStructuralItemAxis(bpy.types.Operator):
return IfcStore.execute_ifc_operator(self, context)
def _execute(self, context):
- obj = bpy.context.active_object
+ obj = context.active_object
oprops = obj.BIMObjectProperties
props = obj.BIMStructuralProperties
relative_matrix = props.axis_empty.matrix_world @ obj.matrix_world.inverted()
@@ -501,7 +501,7 @@ class EnableEditingStructuralConnectionCS(bpy.types.Operator):
bl_options = {"REGISTER", "UNDO"}
def execute(self, context):
- obj = bpy.context.active_object
+ obj = context.active_object
oprops = obj.BIMObjectProperties
props = obj.BIMStructuralProperties
@@ -553,7 +553,7 @@ class DisableEditingStructuralConnectionCS(bpy.types.Operator):
bl_options = {"REGISTER", "UNDO"}
def execute(self, context):
- obj = bpy.context.active_object
+ obj = context.active_object
props = obj.BIMStructuralProperties
props.is_editing_connection_cs = False
if props.ccs_empty:
@@ -570,7 +570,7 @@ class EditStructuralConnectionCS(bpy.types.Operator):
return IfcStore.execute_ifc_operator(self, context)
def _execute(self, context):
- obj = bpy.context.active_object
+ obj = context.active_object
oprops = obj.BIMObjectProperties
props = obj.BIMStructuralProperties
relative_matrix = props.ccs_empty.matrix_world @ obj.matrix_world.inverted()
diff --git a/src/blenderbim/blenderbim/bim/module/structural/prop.py b/src/blenderbim/blenderbim/bim/module/structural/prop.py
index f7c853e17c..513c7fcf03 100644
--- a/src/blenderbim/blenderbim/bim/module/structural/prop.py
+++ b/src/blenderbim/blenderbim/bim/module/structural/prop.py
@@ -31,7 +31,7 @@ def getApplicableStructuralLoadTypes(self, context):
element_classes = set(
[
ifc_file.by_id(o.BIMObjectProperties.ifc_definition_id).is_a()
- for o in bpy.context.selected_objects
+ for o in context.selected_objects
if o.BIMObjectProperties.ifc_definition_id
]
)
diff --git a/src/blenderbim/blenderbim/bim/module/structural/ui.py b/src/blenderbim/blenderbim/bim/module/structural/ui.py
index 295cd0f1c5..5ce31355b8 100644
--- a/src/blenderbim/blenderbim/bim/module/structural/ui.py
+++ b/src/blenderbim/blenderbim/bim/module/structural/ui.py
@@ -261,7 +261,8 @@ class BIM_PT_structural_analysis_models(Panel):
@classmethod
def poll(cls, context):
- return IfcStore.get_file()
+ file = IfcStore.get_file()
+ return file and hasattr(file, "schema") and file.schema != "IFC2X3"
def draw(self, context):
if not Data.is_loaded:
@@ -345,7 +346,8 @@ class BIM_PT_structural_load_cases(Panel):
@classmethod
def poll(cls, context):
- return IfcStore.get_file()
+ file = IfcStore.get_file()
+ return file and hasattr(file, "schema") and file.schema != "IFC2X3"
def draw(self, context):
self.props = context.scene.BIMStructuralProperties
@@ -449,7 +451,8 @@ class BIM_PT_structural_loads(Panel):
@classmethod
def poll(cls, context):
- return IfcStore.get_file()
+ file = IfcStore.get_file()
+ return file and hasattr(file, "schema") and file.schema != "IFC2X3"
def draw(self, context):
if not Data.is_loaded:
@@ -516,7 +519,8 @@ class BIM_PT_boundary_conditions(Panel):
@classmethod
def poll(cls, context):
- return IfcStore.get_file()
+ file = IfcStore.get_file()
+ return file and hasattr(file, "schema") and file.schema != "IFC2X3"
def draw(self, context):
if not Data.is_loaded:
diff --git a/src/blenderbim/blenderbim/bim/module/style/operator.py b/src/blenderbim/blenderbim/bim/module/style/operator.py
index 8cb56ada3c..400a396d24 100644
--- a/src/blenderbim/blenderbim/bim/module/style/operator.py
+++ b/src/blenderbim/blenderbim/bim/module/style/operator.py
@@ -32,7 +32,7 @@ class UpdateStyleColours(bpy.types.Operator):
def _execute(self, context):
self.file = IfcStore.get_file()
- material = bpy.data.materials.get(self.material) if self.material else bpy.context.active_object.active_material
+ material = bpy.data.materials.get(self.material) if self.material else context.active_object.active_material
settings = get_colour_settings(material)
settings["style"] = self.file.by_id(material.BIMMaterialProperties.ifc_style_id)
ifcopenshell.api.run("style.edit_style_colours", self.file, **settings)
@@ -50,7 +50,7 @@ class RemoveStyle(bpy.types.Operator):
def _execute(self, context):
self.file = IfcStore.get_file()
- material = bpy.data.materials.get(self.material) if self.material else bpy.context.active_object.active_material
+ material = bpy.data.materials.get(self.material) if self.material else context.active_object.active_material
ifcopenshell.api.run(
"style.remove_style", self.file, style=self.file.by_id(material.BIMMaterialProperties.ifc_style_id)
)
@@ -69,12 +69,12 @@ class AddStyle(bpy.types.Operator):
def _execute(self, context):
self.file = IfcStore.get_file()
- material = bpy.data.materials.get(self.material) if self.material else bpy.context.active_object.active_material
+ material = bpy.data.materials.get(self.material) if self.material else context.active_object.active_material
settings = get_colour_settings(material)
settings["name"] = material.name
settings["external_definition"] = None # TODO: Implement. See #1222
style = ifcopenshell.api.run("style.add_style", self.file, **settings)
- material.BIMMaterialProperties.ifc_style_id = style.id()
+ IfcStore.link_element(style, material)
if material.BIMObjectProperties.ifc_definition_id:
context = ifcopenshell.util.representation.get_context(self.file, "Model", "Body", "MODEL_VIEW")
if context:
@@ -108,7 +108,7 @@ class EnableEditingStyle(bpy.types.Operator):
material: bpy.props.StringProperty()
def execute(self, context):
- material = bpy.data.materials.get(self.material) if self.material else bpy.context.active_object.active_material
+ material = bpy.data.materials.get(self.material) if self.material else context.active_object.active_material
props = material.BIMStyleProperties
while len(props.attributes) > 0:
props.attributes.remove(0)
@@ -126,7 +126,7 @@ class DisableEditingStyle(bpy.types.Operator):
material: bpy.props.StringProperty()
def execute(self, context):
- material = bpy.data.materials.get(self.material) if self.material else bpy.context.active_object.active_material
+ material = bpy.data.materials.get(self.material) if self.material else context.active_object.active_material
props = material.BIMStyleProperties
props.is_editing_attributes = False
return {"FINISHED"}
@@ -141,7 +141,7 @@ class EditStyle(bpy.types.Operator):
return IfcStore.execute_ifc_operator(self, context)
def _execute(self, context):
- material = bpy.context.active_object.active_material
+ material = context.active_object.active_material
props = material.BIMStyleProperties
attributes = blenderbim.bim.helper.export_attributes(props.attributes)
self.file = IfcStore.get_file()
diff --git a/src/blenderbim/blenderbim/bim/module/style/ui.py b/src/blenderbim/blenderbim/bim/module/style/ui.py
index 325e2c6178..089db774cf 100644
--- a/src/blenderbim/blenderbim/bim/module/style/ui.py
+++ b/src/blenderbim/blenderbim/bim/module/style/ui.py
@@ -20,14 +20,13 @@ class BIM_PT_style(Panel):
)
def draw(self, context):
- props = context.active_object.active_material.BIMMaterialProperties
+ material = context.active_object.active_material
+ props = material.BIMMaterialProperties
row = self.layout.row(align=True)
if props.ifc_style_id:
- row.operator("bim.update_style_colours", icon="GREASEPENCIL")
- op = row.operator("bim.unlink_style", icon="UNLINKED", text="")
- op.material = context.active_object.active_material.name
- op = row.operator("bim.remove_style", icon="X", text="")
- op.material = context.active_object.active_material.name
+ row.operator("bim.update_style_colours", icon="GREASEPENCIL").material = material.name
+ row.operator("bim.unlink_style", icon="UNLINKED", text="").material = material.name
+ row.operator("bim.remove_style", icon="X", text="").material = material.name
else:
row.operator("bim.add_style", icon="ADD")
diff --git a/src/blenderbim/blenderbim/bim/module/system/__init__.py b/src/blenderbim/blenderbim/bim/module/system/__init__.py
new file mode 100644
index 0000000000..0059a29f4d
--- /dev/null
+++ b/src/blenderbim/blenderbim/bim/module/system/__init__.py
@@ -0,0 +1,27 @@
+import bpy
+from . import ui, prop, operator
+
+classes = (
+ operator.LoadSystems,
+ operator.DisableSystemEditingUI,
+ operator.AddSystem,
+ operator.EditSystem,
+ operator.RemoveSystem,
+ operator.AssignSystem,
+ operator.UnassignSystem,
+ operator.EnableEditingSystem,
+ operator.DisableEditingSystem,
+ operator.SelectSystemProducts,
+ prop.System,
+ prop.BIMSystemProperties,
+ ui.BIM_PT_systems,
+ ui.BIM_UL_systems,
+)
+
+
+def register():
+ bpy.types.Scene.BIMSystemProperties = bpy.props.PointerProperty(type=prop.BIMSystemProperties)
+
+
+def unregister():
+ del bpy.types.Scene.BIMSystemProperties
diff --git a/src/blenderbim/blenderbim/bim/module/system/operator.py b/src/blenderbim/blenderbim/bim/module/system/operator.py
new file mode 100644
index 0000000000..ffff58bc78
--- /dev/null
+++ b/src/blenderbim/blenderbim/bim/module/system/operator.py
@@ -0,0 +1,196 @@
+import bpy
+import ifcopenshell.util.attribute
+import ifcopenshell.api
+from blenderbim.bim.ifc import IfcStore
+from ifcopenshell.api.system.data import Data
+
+
+class LoadSystems(bpy.types.Operator):
+ bl_idname = "bim.load_systems"
+ bl_label = "Load Systems"
+ bl_options = {"REGISTER", "UNDO"}
+
+ def execute(self, context):
+ props = context.scene.BIMSystemProperties
+ while len(props.systems) > 0:
+ props.systems.remove(0)
+ for ifc_definition_id, system in Data.systems.items():
+ new = props.systems.add()
+ new.ifc_definition_id = ifc_definition_id
+ new.name = system["Name"]
+ props.is_editing = True
+ bpy.ops.bim.disable_editing_system()
+ return {"FINISHED"}
+
+
+class DisableSystemEditingUI(bpy.types.Operator):
+ bl_idname = "bim.disable_system_editing_ui"
+ bl_label = "Disable System Editing UI"
+ bl_options = {"REGISTER", "UNDO"}
+
+ def execute(self, context):
+ context.scene.BIMSystemProperties.is_editing = False
+ return {"FINISHED"}
+
+
+class AddSystem(bpy.types.Operator):
+ bl_idname = "bim.add_system"
+ bl_label = "Add System"
+ bl_options = {"REGISTER", "UNDO"}
+
+ def execute(self, context):
+ return IfcStore.execute_ifc_operator(self, context)
+
+ def _execute(self, context):
+ result = ifcopenshell.api.run("system.add_system", IfcStore.get_file())
+ Data.load(IfcStore.get_file())
+ bpy.ops.bim.load_systems()
+ bpy.ops.bim.enable_editing_system(system=result.id())
+ return {"FINISHED"}
+
+
+class EditSystem(bpy.types.Operator):
+ bl_idname = "bim.edit_system"
+ bl_label = "Edit System"
+ bl_options = {"REGISTER", "UNDO"}
+
+ def execute(self, context):
+ return IfcStore.execute_ifc_operator(self, context)
+
+ def _execute(self, context):
+ props = context.scene.BIMSystemProperties
+ attributes = {}
+ for attribute in props.system_attributes:
+ if attribute.is_null:
+ attributes[attribute.name] = None
+ else:
+ attributes[attribute.name] = attribute.string_value
+ self.file = IfcStore.get_file()
+ ifcopenshell.api.run(
+ "system.edit_system", self.file, **{"system": self.file.by_id(props.active_system_id), "attributes": attributes}
+ )
+ Data.load(IfcStore.get_file())
+ bpy.ops.bim.load_systems()
+ return {"FINISHED"}
+
+
+class RemoveSystem(bpy.types.Operator):
+ bl_idname = "bim.remove_system"
+ bl_label = "Remove System"
+ bl_options = {"REGISTER", "UNDO"}
+ system: bpy.props.IntProperty()
+
+ def execute(self, context):
+ return IfcStore.execute_ifc_operator(self, context)
+
+ def _execute(self, context):
+ props = context.scene.BIMSystemProperties
+ self.file = IfcStore.get_file()
+ ifcopenshell.api.run("system.remove_system", self.file, **{"system": self.file.by_id(self.system)})
+ Data.load(IfcStore.get_file())
+ bpy.ops.bim.load_systems()
+ return {"FINISHED"}
+
+
+class EnableEditingSystem(bpy.types.Operator):
+ bl_idname = "bim.enable_editing_system"
+ bl_label = "Enable Editing System"
+ bl_options = {"REGISTER", "UNDO"}
+ system: bpy.props.IntProperty()
+
+ def execute(self, context):
+ props = context.scene.BIMSystemProperties
+ while len(props.system_attributes) > 0:
+ props.system_attributes.remove(0)
+
+ data = Data.systems[self.system]
+
+ for attribute in IfcStore.get_schema().declaration_by_name("IfcSystem").all_attributes():
+ data_type = ifcopenshell.util.attribute.get_primitive_type(attribute)
+ if data_type == "entity":
+ continue
+ new = props.system_attributes.add()
+ new.name = attribute.name()
+ new.is_null = data[attribute.name()] is None
+ new.is_optional = attribute.optional()
+ new.string_value = "" if new.is_null else data[attribute.name()]
+ props.active_system_id = self.system
+ return {"FINISHED"}
+
+
+class DisableEditingSystem(bpy.types.Operator):
+ bl_idname = "bim.disable_editing_system"
+ bl_label = "Disable Editing System"
+ bl_options = {"REGISTER", "UNDO"}
+
+ def execute(self, context):
+ context.scene.BIMSystemProperties.active_system_id = 0
+ return {"FINISHED"}
+
+
+class AssignSystem(bpy.types.Operator):
+ bl_idname = "bim.assign_system"
+ bl_label = "Assign System"
+ bl_options = {"REGISTER", "UNDO"}
+ product: bpy.props.StringProperty()
+ system: bpy.props.IntProperty()
+
+ def execute(self, context):
+ return IfcStore.execute_ifc_operator(self, context)
+
+ def _execute(self, context):
+ product = bpy.data.objects.get(self.product) if self.product else context.active_object
+ self.file = IfcStore.get_file()
+ ifcopenshell.api.run(
+ "system.assign_system",
+ self.file,
+ **{
+ "product": self.file.by_id(product.BIMObjectProperties.ifc_definition_id),
+ "system": self.file.by_id(self.system),
+ }
+ )
+ Data.load(IfcStore.get_file())
+ return {"FINISHED"}
+
+
+class UnassignSystem(bpy.types.Operator):
+ bl_idname = "bim.unassign_system"
+ bl_label = "Unassign System"
+ bl_options = {"REGISTER", "UNDO"}
+ product: bpy.props.StringProperty()
+ system: bpy.props.IntProperty()
+
+ def execute(self, context):
+ return IfcStore.execute_ifc_operator(self, context)
+
+ def _execute(self, context):
+ product = bpy.data.objects.get(self.product) if self.product else context.active_object
+ self.file = IfcStore.get_file()
+ ifcopenshell.api.run(
+ "system.unassign_system",
+ self.file,
+ **{
+ "product": self.file.by_id(product.BIMObjectProperties.ifc_definition_id),
+ "system": self.file.by_id(self.system),
+ }
+ )
+ Data.load(IfcStore.get_file())
+ return {"FINISHED"}
+
+
+class SelectSystemProducts(bpy.types.Operator):
+ bl_idname = "bim.select_system_products"
+ bl_label = "Select System Products"
+ bl_options = {"REGISTER", "UNDO"}
+ system: bpy.props.IntProperty()
+
+ def execute(self, context):
+ self.file = IfcStore.get_file()
+ for obj in context.visible_objects:
+ obj.select_set(False)
+ if not obj.BIMObjectProperties.ifc_definition_id:
+ continue
+ product_systems = Data.products.get(obj.BIMObjectProperties.ifc_definition_id, [])
+ if self.system in product_systems:
+ obj.select_set(True)
+ return {"FINISHED"}
diff --git a/src/blenderbim/blenderbim/bim/module/system/prop.py b/src/blenderbim/blenderbim/bim/module/system/prop.py
new file mode 100644
index 0000000000..5bed5a3fd9
--- /dev/null
+++ b/src/blenderbim/blenderbim/bim/module/system/prop.py
@@ -0,0 +1,26 @@
+import bpy
+from blenderbim.bim.prop import StrProperty, Attribute
+from bpy.types import PropertyGroup
+from bpy.props import (
+ PointerProperty,
+ StringProperty,
+ EnumProperty,
+ BoolProperty,
+ IntProperty,
+ FloatProperty,
+ FloatVectorProperty,
+ CollectionProperty,
+)
+
+
+class System(PropertyGroup):
+ name: StringProperty(name="Name")
+ ifc_definition_id: IntProperty(name="IFC Definition ID")
+
+
+class BIMSystemProperties(PropertyGroup):
+ system_attributes: CollectionProperty(name="System Attributes", type=Attribute)
+ is_editing: BoolProperty(name="Is Editing", default=False)
+ systems: CollectionProperty(name="Systems", type=System)
+ active_system_index: IntProperty(name="Active System Index")
+ active_system_id: IntProperty(name="Active System Id")
diff --git a/src/blenderbim/blenderbim/bim/module/system/ui.py b/src/blenderbim/blenderbim/bim/module/system/ui.py
new file mode 100644
index 0000000000..067dd038fc
--- /dev/null
+++ b/src/blenderbim/blenderbim/bim/module/system/ui.py
@@ -0,0 +1,85 @@
+from bpy.types import Panel, UIList
+from blenderbim.bim.ifc import IfcStore
+from ifcopenshell.api.system.data import Data
+
+
+class BIM_PT_systems(Panel):
+ bl_label = "IFC Systems"
+ bl_idname = "BIM_PT_systems"
+ bl_options = {"DEFAULT_CLOSED"}
+ bl_space_type = "PROPERTIES"
+ bl_region_type = "WINDOW"
+ bl_context = "scene"
+
+ @classmethod
+ def poll(cls, context):
+ return IfcStore.get_file()
+
+ def draw(self, context):
+ if not Data.is_loaded:
+ Data.load(IfcStore.get_file())
+ self.props = context.scene.BIMSystemProperties
+
+ row = self.layout.row(align=True)
+ row.label(text="{} Systems Found".format(len(Data.systems)), icon="OUTLINER")
+ if self.props.is_editing:
+ row.operator("bim.add_system", text="", icon="ADD")
+ row.operator("bim.disable_system_editing_ui", text="", icon="CANCEL")
+ else:
+ row.operator("bim.load_systems", text="", icon="GREASEPENCIL")
+
+ if self.props.is_editing:
+ self.layout.template_list(
+ "BIM_UL_systems",
+ "",
+ self.props,
+ "systems",
+ self.props,
+ "active_system_index",
+ )
+
+ if self.props.active_system_id:
+ self.draw_editable_ui(context)
+
+ def draw_editable_ui(self, context):
+ for attribute in self.props.system_attributes:
+ row = self.layout.row(align=True)
+ row.prop(attribute, "string_value", text=attribute.name)
+ if attribute.is_optional:
+ row.prop(attribute, "is_null", icon="RADIOBUT_OFF" if attribute.is_null else "RADIOBUT_ON", text="")
+
+
+
+class BIM_UL_systems(UIList):
+ def draw_item(self, context, layout, data, item, icon, active_data, active_propname):
+ if item:
+ row = layout.row(align=True)
+ row.label(text=item.name)
+
+ if context.active_object:
+ oprops = context.active_object.BIMObjectProperties
+ if (
+ oprops.ifc_definition_id in Data.products
+ and item.ifc_definition_id in Data.products[oprops.ifc_definition_id]
+ ):
+ op = row.operator("bim.unassign_system", text="", icon="KEYFRAME_HLT", emboss=False)
+ op.system = item.ifc_definition_id
+ else:
+ op = row.operator("bim.assign_system", text="", icon="KEYFRAME", emboss=False)
+ op.system = item.ifc_definition_id
+
+ if context.scene.BIMSystemProperties.active_system_id == item.ifc_definition_id:
+ op = row.operator("bim.select_system_products", text="", icon="RESTRICT_SELECT_OFF")
+ op.system = item.ifc_definition_id
+ row.operator("bim.edit_system", text="", icon="CHECKMARK")
+ row.operator("bim.disable_editing_system", text="", icon="CANCEL")
+ elif context.scene.BIMSystemProperties.active_system_id:
+ op = row.operator("bim.select_system_products", text="", icon="RESTRICT_SELECT_OFF")
+ op.system = item.ifc_definition_id
+ row.operator("bim.remove_system", text="", icon="X").system = item.ifc_definition_id
+ else:
+ op = row.operator("bim.select_system_products", text="", icon="RESTRICT_SELECT_OFF")
+ op.system = item.ifc_definition_id
+ op = row.operator("bim.enable_editing_system", text="", icon="GREASEPENCIL")
+ op.system = item.ifc_definition_id
+ row.operator("bim.remove_system", text="", icon="X").system = item.ifc_definition_id
diff --git a/src/blenderbim/blenderbim/bim/module/type/__init__.py b/src/blenderbim/blenderbim/bim/module/type/__init__.py
index dc1afcd7e2..e55172a517 100644
--- a/src/blenderbim/blenderbim/bim/module/type/__init__.py
+++ b/src/blenderbim/blenderbim/bim/module/type/__init__.py
@@ -7,6 +7,7 @@ classes = (
operator.EnableEditingType,
operator.DisableEditingType,
operator.SelectSimilarType,
+ operator.SelectTypeObjects,
prop.BIMTypeProperties,
prop.BIMTypeObjectProperties,
ui.BIM_PT_type,
diff --git a/src/blenderbim/blenderbim/bim/module/type/operator.py b/src/blenderbim/blenderbim/bim/module/type/operator.py
index 7e3c6a4450..8d3380362e 100644
--- a/src/blenderbim/blenderbim/bim/module/type/operator.py
+++ b/src/blenderbim/blenderbim/bim/module/type/operator.py
@@ -22,7 +22,9 @@ class AssignType(bpy.types.Operator):
self.file = IfcStore.get_file()
relating_type = self.relating_type or int(context.active_object.BIMTypeProperties.relating_type)
related_objects = (
- [bpy.data.objects.get(self.related_object)] if self.related_object else bpy.context.selected_objects
+ [bpy.data.objects.get(self.related_object)]
+ if self.related_object
+ else context.selected_objects or [context.active_object]
)
for related_object in related_objects:
oprops = related_object.BIMObjectProperties
@@ -39,15 +41,19 @@ class AssignType(bpy.types.Operator):
MaterialData.load(IfcStore.get_file(), oprops.ifc_definition_id)
representation_ids = GeometryData.products[oprops.ifc_definition_id]
if not representation_ids:
- pass # TODO: clear geometry? Make void? Make none type?
+ pass # TODO: clear geometry? Make void? Make none type?
has_switched = False
for representation_id in representation_ids:
representation = GeometryData.representations[representation_id]
if representation["ContextOfItems"]["ContextIdentifier"] == "Body":
- bpy.ops.bim.switch_representation(obj=related_object.name, ifc_definition_id=representation_id)
+ bpy.ops.bim.switch_representation(
+ obj=related_object.name, ifc_definition_id=representation_id, should_switch_all_meshes=False
+ )
has_switched = True
if not has_switched and representation_ids:
- bpy.ops.bim.switch_representation(obj=related_object.name, ifc_definition_id=representation_id)
+ bpy.ops.bim.switch_representation(
+ obj=related_object.name, ifc_definition_id=representation_id, should_switch_all_meshes=False
+ )
bpy.ops.bim.disable_editing_type(obj=related_object.name)
MaterialData.load(self.file)
@@ -66,7 +72,7 @@ class UnassignType(bpy.types.Operator):
def _execute(self, context):
self.file = IfcStore.get_file()
related_objects = (
- [bpy.data.objects.get(self.related_object)] if self.related_object else bpy.context.selected_objects
+ [bpy.data.objects.get(self.related_object)] if self.related_object else context.selected_objects
)
for related_object in related_objects:
oprops = related_object.BIMObjectProperties
@@ -87,7 +93,7 @@ class EnableEditingType(bpy.types.Operator):
bl_options = {"REGISTER", "UNDO"}
def execute(self, context):
- bpy.context.active_object.BIMTypeProperties.is_editing_type = True
+ context.active_object.BIMTypeProperties.is_editing_type = True
return {"FINISHED"}
@@ -98,7 +104,7 @@ class DisableEditingType(bpy.types.Operator):
obj: bpy.props.StringProperty()
def execute(self, context):
- obj = bpy.data.objects.get(self.obj) if self.obj else bpy.context.active_object
+ obj = bpy.data.objects.get(self.obj) if self.obj else context.active_object
obj.BIMTypeProperties.is_editing_type = False
return {"FINISHED"}
@@ -111,7 +117,7 @@ class SelectSimilarType(bpy.types.Operator):
def execute(self, context):
self.file = IfcStore.get_file()
- related_object = bpy.data.objects.get(self.related_object) if self.related_object else bpy.context.active_object
+ related_object = bpy.data.objects.get(self.related_object) if self.related_object else context.active_object
oprops = related_object.BIMObjectProperties
product = self.file.by_id(oprops.ifc_definition_id)
declaration = IfcStore.get_schema().declaration_by_name(product.is_a())
@@ -123,7 +129,24 @@ class SelectSimilarType(bpy.types.Operator):
related_objects = ifcopenshell.api.run(
"type.get_related_objects", self.file, **{"related_object": self.file.by_id(oprops.ifc_definition_id)}
)
- for obj in bpy.context.visible_objects:
+ for obj in context.visible_objects:
+ if obj.BIMObjectProperties.ifc_definition_id in related_objects:
+ obj.select_set(True)
+ return {"FINISHED"}
+
+
+class SelectTypeObjects(bpy.types.Operator):
+ bl_idname = "bim.select_type_objects"
+ bl_label = "Select Type Objects"
+ bl_options = {"REGISTER", "UNDO"}
+ relating_type: bpy.props.StringProperty()
+
+ def execute(self, context):
+ self.file = IfcStore.get_file()
+ relating_type = bpy.data.objects.get(self.relating_type) if self.relating_type else context.active_object
+ oprops = relating_type.BIMObjectProperties
+ related_objects = Data.types[oprops.ifc_definition_id]
+ for obj in context.visible_objects:
if obj.BIMObjectProperties.ifc_definition_id in related_objects:
obj.select_set(True)
return {"FINISHED"}
diff --git a/src/blenderbim/blenderbim/bim/module/type/prop.py b/src/blenderbim/blenderbim/bim/module/type/prop.py
index fc7b6acab0..1b20b1367a 100644
--- a/src/blenderbim/blenderbim/bim/module/type/prop.py
+++ b/src/blenderbim/blenderbim/bim/module/type/prop.py
@@ -42,7 +42,7 @@ def getIfcTypes(self, context):
def getAvailableTypes(self, context):
global available_types_enum
- if len(available_types_enum) < 1:
+ if len(available_types_enum) < 1 and getIfcTypes(self, context):
elements = IfcStore.get_file().by_type(self.ifc_class)
available_types_enum.extend((str(e.id()), e.Name, "") for e in elements)
return available_types_enum
diff --git a/src/blenderbim/blenderbim/bim/module/type/ui.py b/src/blenderbim/blenderbim/bim/module/type/ui.py
index 564afbc969..b5ad10687d 100644
--- a/src/blenderbim/blenderbim/bim/module/type/ui.py
+++ b/src/blenderbim/blenderbim/bim/module/type/ui.py
@@ -17,20 +17,32 @@ class BIM_PT_type(Panel):
return False
if not IfcStore.get_element(props.ifc_definition_id):
return False
- if props.ifc_definition_id not in Data.products:
+ if props.ifc_definition_id not in Data.products and props.ifc_definition_id not in Data.types:
Data.load(IfcStore.get_file(), props.ifc_definition_id)
- if not Data.products[props.ifc_definition_id]:
+ if props.ifc_definition_id not in Data.products and props.ifc_definition_id not in Data.types:
+ return False
+ if not Data.products.get(props.ifc_definition_id, None) and not Data.types.get(props.ifc_definition_id, None):
return False
return True
-
def draw(self, context):
+ oprops = context.active_object.BIMObjectProperties
+
+ if oprops.ifc_definition_id in Data.products:
+ self.draw_product_ui(context)
+ else:
+ self.draw_type_ui(context)
+
+ def draw_type_ui(self, context):
+ props = context.active_object.BIMTypeProperties
+ oprops = context.active_object.BIMObjectProperties
+ row = self.layout.row(align=True)
+ row.label(text=f"{len(Data.types[oprops.ifc_definition_id])} Typed Objects")
+ row.operator("bim.select_type_objects", icon="RESTRICT_SELECT_OFF", text="")
+
+ def draw_product_ui(self, context):
props = context.active_object.BIMTypeProperties
oprops = context.active_object.BIMObjectProperties
- if not oprops.ifc_definition_id:
- return
- if oprops.ifc_definition_id not in Data.products:
- Data.load(IfcStore.get_file(), oprops.ifc_definition_id)
if props.is_editing_type:
row = self.layout.row(align=True)
diff --git a/src/blenderbim/blenderbim/bim/module/unit/__init__.py b/src/blenderbim/blenderbim/bim/module/unit/__init__.py
index 87a28250a4..f4a0f265ec 100644
--- a/src/blenderbim/blenderbim/bim/module/unit/__init__.py
+++ b/src/blenderbim/blenderbim/bim/module/unit/__init__.py
@@ -1,14 +1,25 @@
import bpy
-from . import ui, operator
+from . import ui, prop, operator
classes = (
operator.AssignUnit,
+ operator.LoadUnits,
+ operator.DisableUnitEditingUI,
+ operator.RemoveUnit,
+ operator.AddMonetaryUnit,
+ operator.EnableEditingUnit,
+ operator.DisableEditingUnit,
+ operator.EditUnit,
+ prop.Unit,
+ prop.BIMUnitProperties,
+ ui.BIM_PT_units,
+ ui.BIM_UL_units,
)
def register():
- pass
+ bpy.types.Scene.BIMUnitProperties = bpy.props.PointerProperty(type=prop.BIMUnitProperties)
def unregister():
- pass
+ del bpy.types.Scene.BIMUnitProperties
diff --git a/src/blenderbim/blenderbim/bim/module/unit/operator.py b/src/blenderbim/blenderbim/bim/module/unit/operator.py
index 8e7d9ea859..78c738e2b9 100644
--- a/src/blenderbim/blenderbim/bim/module/unit/operator.py
+++ b/src/blenderbim/blenderbim/bim/module/unit/operator.py
@@ -1,5 +1,6 @@
import bpy
import ifcopenshell.api
+import blenderbim.bim.helper
from blenderbim.bim.ifc import IfcStore
from ifcopenshell.api.unit.data import Data
@@ -13,26 +14,27 @@ class AssignUnit(bpy.types.Operator):
return IfcStore.execute_ifc_operator(self, context)
def _execute(self, context):
- ifcopenshell.api.run("unit.assign_unit", IfcStore.get_file(), **self.get_units())
+ ifcopenshell.api.run("unit.assign_unit", IfcStore.get_file(), **self.get_units(context))
Data.load(IfcStore.get_file())
return {"FINISHED"}
- def get_units(self):
+ def get_units(self, context):
+ scene = context.scene
units = {
"length": {
"ifc": None,
- "is_metric": bpy.context.scene.unit_settings.system != "IMPERIAL",
- "raw": bpy.context.scene.unit_settings.length_unit,
+ "is_metric": scene.unit_settings.system != "IMPERIAL",
+ "raw": scene.unit_settings.length_unit,
},
"area": {
"ifc": None,
- "is_metric": bpy.context.scene.unit_settings.system != "IMPERIAL",
- "raw": bpy.context.scene.unit_settings.length_unit,
+ "is_metric": scene.unit_settings.system != "IMPERIAL",
+ "raw": scene.unit_settings.length_unit,
},
"volume": {
"ifc": None,
- "is_metric": bpy.context.scene.unit_settings.system != "IMPERIAL",
- "raw": bpy.context.scene.unit_settings.length_unit,
+ "is_metric": scene.unit_settings.system != "IMPERIAL",
+ "raw": scene.unit_settings.length_unit,
},
}
for data in units.values():
@@ -42,3 +44,148 @@ class AssignUnit(bpy.types.Operator):
else:
data["raw"] = "FEET"
return units
+
+
+class LoadUnits(bpy.types.Operator):
+ bl_idname = "bim.load_units"
+ bl_label = "Load Units"
+ bl_options = {"REGISTER", "UNDO"}
+
+ def execute(self, context):
+ props = context.scene.BIMUnitProperties
+ while len(props.units) > 0:
+ props.units.remove(0)
+
+ for ifc_definition_id in Data.unit_assignment:
+ unit = Data.units[ifc_definition_id]
+ name = unit.get("Name", "")
+
+ if unit["type"] == "IfcMonetaryUnit":
+ name = unit["Currency"]
+
+ if unit["type"] == "IfcSIUnit" and unit["Prefix"]:
+ if "_" in name:
+ name_components = name.split("_")
+ name = f"{name_components[0]} {unit['Prefix']}{name_components[1]}"
+ else:
+ name = f"{unit['Prefix']}{name}"
+
+ icon = "MOD_MESHDEFORM"
+ if unit["type"] == "IfcSIUnit":
+ icon = "SNAP_GRID"
+ elif unit["type"] == "IfcMonetaryUnit":
+ icon = "COPY_ID"
+
+ unit_type = unit.get("UserDefinedType", None)
+ if not unit_type:
+ unit_type = unit.get("UnitType", None)
+ if unit["type"] == "IfcMonetaryUnit":
+ unit_type = "CURRENCY"
+
+ new = props.units.add()
+ new.ifc_definition_id = ifc_definition_id
+ new.name = name
+ new.unit_type = unit_type
+ new.icon = icon
+
+ props.is_editing = True
+ bpy.ops.bim.disable_editing_unit()
+ return {"FINISHED"}
+
+
+class DisableUnitEditingUI(bpy.types.Operator):
+ bl_idname = "bim.disable_unit_editing_ui"
+ bl_label = "Disable Unit Editing UI"
+ bl_options = {"REGISTER", "UNDO"}
+
+ def execute(self, context):
+ context.scene.BIMUnitProperties.is_editing = False
+ return {"FINISHED"}
+
+
+class RemoveUnit(bpy.types.Operator):
+ bl_idname = "bim.remove_unit"
+ bl_label = "Remove Unit"
+ bl_options = {"REGISTER", "UNDO"}
+ unit: bpy.props.IntProperty()
+
+ def execute(self, context):
+ return IfcStore.execute_ifc_operator(self, context)
+
+ def _execute(self, context):
+ props = context.scene.BIMUnitProperties
+ self.file = IfcStore.get_file()
+ ifcopenshell.api.run("unit.remove_unit", self.file, **{"unit": self.file.by_id(self.unit)})
+ Data.load(self.file)
+ bpy.ops.bim.load_units()
+ return {"FINISHED"}
+
+
+class AddMonetaryUnit(bpy.types.Operator):
+ bl_idname = "bim.add_monetary_unit"
+ bl_label = "Add Monetary Unit"
+ bl_options = {"REGISTER", "UNDO"}
+
+ def execute(self, context):
+ return IfcStore.execute_ifc_operator(self, context)
+
+ def _execute(self, context):
+ props = context.scene.BIMUnitProperties
+ self.file = IfcStore.get_file()
+ unit = ifcopenshell.api.run("unit.add_monetary_unit", self.file)
+ ifcopenshell.api.run("unit.assign_unit", self.file, units=[unit])
+ Data.load(self.file)
+ bpy.ops.bim.load_units()
+ return {"FINISHED"}
+
+
+class EnableEditingUnit(bpy.types.Operator):
+ bl_idname = "bim.enable_editing_unit"
+ bl_label = "Enable Editing Unit"
+ bl_options = {"REGISTER", "UNDO"}
+ unit: bpy.props.IntProperty()
+
+ def execute(self, context):
+ props = context.scene.BIMUnitProperties
+ while len(props.unit_attributes) > 0:
+ props.unit_attributes.remove(0)
+
+ data = Data.units[self.unit]
+
+ blenderbim.bim.helper.import_attributes(data["type"], props.unit_attributes, data)
+ props.active_unit_id = self.unit
+ return {"FINISHED"}
+
+
+class DisableEditingUnit(bpy.types.Operator):
+ bl_idname = "bim.disable_editing_unit"
+ bl_label = "Disable Editing Unit"
+ bl_options = {"REGISTER", "UNDO"}
+
+ def execute(self, context):
+ context.scene.BIMUnitProperties.active_unit_id = 0
+ return {"FINISHED"}
+
+
+class EditUnit(bpy.types.Operator):
+ bl_idname = "bim.edit_unit"
+ bl_label = "Edit Unit"
+ bl_options = {"REGISTER", "UNDO"}
+
+ def execute(self, context):
+ return IfcStore.execute_ifc_operator(self, context)
+
+ def _execute(self, context):
+ props = context.scene.BIMUnitProperties
+ attributes = blenderbim.bim.helper.export_attributes(props.unit_attributes)
+ self.file = IfcStore.get_file()
+ unit = self.file.by_id(props.active_unit_id)
+ if unit.is_a("IfcMonetaryUnit"):
+ ifcopenshell.api.run("unit.edit_monetary_unit", self.file, **{"unit": unit, "attributes": attributes})
+ elif unit.is_a("IfcDerivedUnit"):
+ ifcopenshell.api.run("unit.edit_derived_unit", self.file, **{"unit": unit, "attributes": attributes})
+ elif unit.is_a("IfcNamedUnit"):
+ ifcopenshell.api.run("unit.edit_named_unit", self.file, **{"unit": unit, "attributes": attributes})
+ Data.load(IfcStore.get_file())
+ bpy.ops.bim.load_units()
+ return {"FINISHED"}
diff --git a/src/blenderbim/blenderbim/bim/module/unit/prop.py b/src/blenderbim/blenderbim/bim/module/unit/prop.py
new file mode 100644
index 0000000000..c43f2ec833
--- /dev/null
+++ b/src/blenderbim/blenderbim/bim/module/unit/prop.py
@@ -0,0 +1,49 @@
+import bpy
+import ifcopenshell
+import ifcopenshell.util.schema
+from blenderbim.bim.ifc import IfcStore
+from blenderbim.bim.prop import StrProperty, Attribute
+from bpy.types import PropertyGroup
+from bpy.props import (
+ PointerProperty,
+ StringProperty,
+ EnumProperty,
+ BoolProperty,
+ IntProperty,
+ FloatProperty,
+ FloatVectorProperty,
+ CollectionProperty,
+)
+
+
+unitclasses_enum = []
+
+
+def purge():
+ global unitclasses_enum
+ unitclasses_enum = []
+
+
+def getUnitClasses(self, context):
+ global unitclasses_enum
+ if not len(unitclasses_enum) and IfcStore.get_file():
+ declarations = ifcopenshell.util.schema.get_subtypes(IfcStore.get_schema().declaration_by_name("IfcNamedUnit"))
+ unitclasses_enum.extend([(c, c, "") for c in sorted([d.name() for d in declarations])])
+ unitclasses_enum.extend([("IfcDerivedUnit", "IfcDerivedUnit", ""), ("IfcMonetaryUnit", "IfcMonetaryUnit", "")])
+ return unitclasses_enum
+
+
+class Unit(PropertyGroup):
+ name: StringProperty(name="Name")
+ unit_type: StringProperty(name="Unit Type")
+ icon: StringProperty(name="Icon")
+ ifc_definition_id: IntProperty(name="IFC Definition ID")
+
+
+class BIMUnitProperties(PropertyGroup):
+ is_editing: BoolProperty(name="Is Editing")
+ units: CollectionProperty(name="Units", type=Unit)
+ active_unit_index: IntProperty(name="Active Unit Index")
+ active_unit_id: IntProperty(name="Active Unit Id")
+ unit_classes: EnumProperty(items=getUnitClasses, name="Unit Classes")
+ unit_attributes: CollectionProperty(name="Unit Attributes", type=Attribute)
diff --git a/src/blenderbim/blenderbim/bim/module/unit/ui.py b/src/blenderbim/blenderbim/bim/module/unit/ui.py
index e69de29bb2..c61902b0d0 100644
--- a/src/blenderbim/blenderbim/bim/module/unit/ui.py
+++ b/src/blenderbim/blenderbim/bim/module/unit/ui.py
@@ -0,0 +1,78 @@
+import blenderbim.bim.helper
+from bpy.types import Panel, UIList
+from blenderbim.bim.ifc import IfcStore
+from ifcopenshell.api.unit.data import Data
+
+
+class BIM_PT_units(Panel):
+ bl_label = "IFC Units"
+ bl_idname = "BIM_PT_units"
+ bl_options = {"DEFAULT_CLOSED"}
+ bl_space_type = "PROPERTIES"
+ bl_region_type = "WINDOW"
+ bl_context = "scene"
+
+ @classmethod
+ def poll(cls, context):
+ file = IfcStore.get_file()
+ return file
+
+ def draw(self, context):
+ self.file = IfcStore.get_file()
+ if not Data.is_loaded:
+ Data.load(self.file)
+ self.props = context.scene.BIMUnitProperties
+
+ row = self.layout.row(align=True)
+ row.label(text="{} Units Found".format(len(Data.unit_assignment)), icon="SNAP_GRID")
+ if self.props.is_editing:
+ row.operator("bim.disable_unit_editing_ui", text="", icon="CANCEL")
+ else:
+ row.operator("bim.load_units", text="", icon="GREASEPENCIL")
+
+ if not self.props.is_editing:
+ return
+
+ row = self.layout.row(align=True)
+ row.prop(self.props, "unit_classes", text="")
+
+ if self.props.unit_classes == "IfcMonetaryUnit":
+ row.operator("bim.add_monetary_unit", text="", icon="ADD")
+ elif self.props.unit_classes == "IfcDerivedUnit":
+ pass # TODO
+ else:
+ pass # TODO
+
+ self.layout.template_list(
+ "BIM_UL_units",
+ "",
+ self.props,
+ "units",
+ self.props,
+ "active_unit_index",
+ )
+
+ if self.props.active_unit_id:
+ self.draw_editable_ui(context)
+
+ def draw_editable_ui(self, context):
+ blenderbim.bim.helper.draw_attributes(self.props.unit_attributes, self.layout)
+
+
+class BIM_UL_units(UIList):
+ def draw_item(self, context, layout, data, item, icon, active_data, active_propname):
+ props = context.scene.BIMUnitProperties
+ if item:
+ row = layout.row(align=True)
+ row.label(text=item.unit_type or "No Type", icon=item.icon)
+ row.label(text=item.name or "Unnamed")
+
+ if props.active_unit_id == item.ifc_definition_id:
+ row.operator("bim.edit_unit", text="", icon="CHECKMARK")
+ row.operator("bim.disable_editing_unit", text="", icon="CANCEL")
+ elif props.active_unit_id:
+ row.operator("bim.remove_unit", text="", icon="X").unit = item.ifc_definition_id
+ else:
+ op = row.operator("bim.enable_editing_unit", text="", icon="GREASEPENCIL")
+ op.unit = item.ifc_definition_id
+ row.operator("bim.remove_unit", text="", icon="X").unit = item.ifc_definition_id
diff --git a/src/blenderbim/blenderbim/bim/module/void/__init__.py b/src/blenderbim/blenderbim/bim/module/void/__init__.py
index 3727f40508..f5b5a750d8 100644
--- a/src/blenderbim/blenderbim/bim/module/void/__init__.py
+++ b/src/blenderbim/blenderbim/bim/module/void/__init__.py
@@ -6,6 +6,8 @@ classes = (
operator.RemoveOpening,
operator.AddFilling,
operator.RemoveFilling,
+ operator.ToggleOpeningVisibility,
+ operator.ToggleDecompositionParenting,
prop.VoidProperties,
ui.BIM_PT_voids,
)
diff --git a/src/blenderbim/blenderbim/bim/module/void/operator.py b/src/blenderbim/blenderbim/bim/module/void/operator.py
index 4e87b7aaeb..d859a87601 100644
--- a/src/blenderbim/blenderbim/bim/module/void/operator.py
+++ b/src/blenderbim/blenderbim/bim/module/void/operator.py
@@ -16,7 +16,7 @@ class AddOpening(bpy.types.Operator):
return IfcStore.execute_ifc_operator(self, context)
def _execute(self, context):
- obj = bpy.data.objects.get(self.obj) if self.obj else bpy.context.active_object
+ obj = bpy.data.objects.get(self.obj) if self.obj else context.active_object
opening = bpy.data.objects.get(self.opening)
opening.display_type = "WIRE"
if not opening.BIMObjectProperties.ifc_definition_id:
@@ -69,7 +69,7 @@ class RemoveOpening(bpy.types.Operator):
return IfcStore.execute_ifc_operator(self, context)
def _execute(self, context):
- obj = bpy.data.objects.get(self.obj) if self.obj else bpy.context.active_object
+ obj = bpy.data.objects.get(self.obj) if self.obj else context.active_object
self.file = IfcStore.get_file()
for modifier in obj.modifiers:
if modifier.type != "BOOLEAN":
@@ -97,7 +97,7 @@ class AddFilling(bpy.types.Operator):
return IfcStore.execute_ifc_operator(self, context)
def _execute(self, context):
- obj = bpy.data.objects.get(self.obj) if self.obj else bpy.context.active_object
+ obj = bpy.data.objects.get(self.obj) if self.obj else context.active_object
opening = bpy.data.objects.get(self.opening) if self.opening else context.scene.VoidProperties.desired_opening
self.file = IfcStore.get_file()
element_id = obj.BIMObjectProperties.ifc_definition_id
@@ -123,10 +123,73 @@ class RemoveFilling(bpy.types.Operator):
return IfcStore.execute_ifc_operator(self, context)
def _execute(self, context):
- obj = bpy.data.objects.get(self.obj) if self.obj else bpy.context.active_object
+ obj = bpy.data.objects.get(self.obj) if self.obj else context.active_object
self.file = IfcStore.get_file()
ifcopenshell.api.run(
"void.remove_filling", self.file, **{"element": self.file.by_id(obj.BIMObjectProperties.ifc_definition_id)}
)
Data.load(IfcStore.get_file(), obj.BIMObjectProperties.ifc_definition_id)
return {"FINISHED"}
+
+
+class ToggleOpeningVisibility(bpy.types.Operator):
+ bl_idname = "bim.toggle_opening_visibility"
+ bl_label = "Toggle Opening Visibility"
+ bl_options = {"REGISTER", "UNDO"}
+
+ def execute(self, context):
+ for project in [c for c in context.view_layer.layer_collection.children if "IfcProject" in c.name]:
+ for collection in [c for c in project.children if "IfcOpeningElements" in c.name]:
+ collection.hide_viewport = not collection.hide_viewport
+ return {"FINISHED"}
+
+
+class ToggleDecompositionParenting(bpy.types.Operator):
+ bl_idname = "bim.toggle_decomposition_parenting"
+ bl_label = "Toggle Decomposition Parenting"
+ bl_options = {"REGISTER", "UNDO"}
+ obj: bpy.props.StringProperty()
+
+ def execute(self, context):
+ obj = bpy.data.objects.get(self.obj) if self.obj else context.active_object
+ self.file = IfcStore.get_file()
+ is_parenting = None
+
+ self.decompositions = {}
+ self.load_decompositions(obj)
+
+ for parent, children in self.decompositions.items():
+ bpy.ops.bim.dynamically_void_product(obj=parent.name)
+ for child in children:
+ bpy.ops.bim.dynamically_void_product(obj=child.name)
+ if is_parenting is None:
+ is_parenting = not bool(child.parent)
+
+ if is_parenting:
+ child.parent = parent
+ child.matrix_parent_inverse = parent.matrix_world.inverted()
+ else:
+ parent_matrix_world = child.matrix_world.copy()
+ child.parent = None
+ child.matrix_world = parent_matrix_world
+
+ return {"FINISHED"}
+
+ def load_decompositions(self, parent_obj):
+ element = self.file.by_id(parent_obj.BIMObjectProperties.ifc_definition_id)
+ for rel in self.file.get_inverse(element):
+ if not (rel.is_a("IfcRelDecomposes") or rel.is_a("IfcRelFillsElement")):
+ continue
+ if rel[4] != element:
+ continue
+ if isinstance(rel[5], tuple):
+ for related_object in rel[5]:
+ self.add_decomposition(parent_obj, related_object)
+ else:
+ self.add_decomposition(parent_obj, rel[5])
+
+ def add_decomposition(self, parent_obj, child_element):
+ child_obj = IfcStore.get_element(child_element.id())
+ if child_obj:
+ self.decompositions.setdefault(parent_obj, []).append(child_obj)
+ self.load_decompositions(child_obj)
diff --git a/src/blenderbim/blenderbim/bim/operator.py b/src/blenderbim/blenderbim/bim/operator.py
index ccf51aee5d..7278897ab8 100644
--- a/src/blenderbim/blenderbim/bim/operator.py
+++ b/src/blenderbim/blenderbim/bim/operator.py
@@ -2,12 +2,11 @@ import os
import bpy
import time
import json
+import tempfile
import logging
import webbrowser
import ifcopenshell
-
-# Deleting the below drawing import breaks svgwrite's ElementTree appending because ... magic?
-import blenderbim.bim.module.drawing
+import blenderbim.bim.handler
from . import export_ifc
from . import import_ifc
from . import schema
@@ -31,8 +30,8 @@ class ExportIFC(bpy.types.Operator):
if not IfcStore.get_file():
self.report({"ERROR"}, "No IFC project is available for export - create or import a project first.")
return {"FINISHED"}
- if bpy.context.scene.BIMProperties.ifc_file:
- self.filepath = bpy.context.scene.BIMProperties.ifc_file
+ if context.scene.BIMProperties.ifc_file:
+ self.filepath = context.scene.BIMProperties.ifc_file
return self.execute(context)
if not self.filepath:
self.filepath = bpy.path.ensure_ext(bpy.data.filepath, ".ifc")
@@ -46,8 +45,11 @@ class ExportIFC(bpy.types.Operator):
def _execute(self, context):
start = time.time()
logger = logging.getLogger("ExportIFC")
+ path_log = os.path.join(bpy.context.scene.BIMProperties.data_dir, "process.log")
+ if not os.access(bpy.context.scene.BIMProperties.data_dir, os.W_OK):
+ path_log = os.path.join(tempfile.mkdtemp(), "process.log")
logging.basicConfig(
- filename=os.path.join(context.scene.BIMProperties.data_dir, "process.log"),
+ filename=path_log,
filemode="a",
level=logging.DEBUG,
)
@@ -68,13 +70,15 @@ class ExportIFC(bpy.types.Operator):
ifc_exporter.export()
settings.logger.info("Export finished in {:.2f} seconds".format(time.time() - start))
print("Export finished in {:.2f} seconds".format(time.time() - start))
- if not bpy.context.scene.DocProperties.ifc_files:
- new = bpy.context.scene.DocProperties.ifc_files.add()
+ scene = context.scene
+ if not scene.DocProperties.ifc_files:
+ new = scene.DocProperties.ifc_files.add()
new.name = output_file
- if not bpy.context.scene.BIMProperties.ifc_file:
- bpy.context.scene.BIMProperties.ifc_file = output_file
+ if not scene.BIMProperties.ifc_file:
+ scene.BIMProperties.ifc_file = output_file
if bpy.data.is_saved and bpy.data.is_dirty and bpy.data.filepath:
bpy.ops.wm.save_mainfile(filepath=bpy.data.filepath)
+ blenderbim.bim.handler.purge_module_data()
return {"FINISHED"}
@@ -108,8 +112,11 @@ class ImportIFC(bpy.types.Operator, ImportHelper):
def execute(self, context):
start = time.time()
logger = logging.getLogger("ImportIFC")
+ path_log = os.path.join(context.scene.BIMProperties.data_dir, "process.log")
+ if not os.access(context.scene.BIMProperties.data_dir, os.W_OK):
+ path_log = os.path.join(tempfile.mkdtemp(), "process.log")
logging.basicConfig(
- filename=os.path.join(bpy.context.scene.BIMProperties.data_dir, "process.log"),
+ filename=path_log,
filemode="a",
level=logging.DEBUG,
)
@@ -156,7 +163,8 @@ class SelectIfcFile(bpy.types.Operator):
filter_glob: bpy.props.StringProperty(default="*.ifc;*.ifczip;*.ifcxml", options={"HIDDEN"})
def execute(self, context):
- bpy.context.scene.BIMProperties.ifc_file = self.filepath
+ if os.path.exists(self.filepath) and "ifc" in os.path.splitext(self.filepath)[1]:
+ context.scene.BIMProperties.ifc_file = self.filepath
return {"FINISHED"}
def invoke(self, context, event):
@@ -171,7 +179,7 @@ class SelectDataDir(bpy.types.Operator):
filepath: bpy.props.StringProperty(subtype="FILE_PATH")
def execute(self, context):
- bpy.context.scene.BIMProperties.data_dir = self.filepath
+ context.scene.BIMProperties.data_dir = os.path.dirname(self.filepath)
return {"FINISHED"}
def invoke(self, context, event):
@@ -186,7 +194,7 @@ class SelectSchemaDir(bpy.types.Operator):
filepath: bpy.props.StringProperty(subtype="FILE_PATH")
def execute(self, context):
- bpy.context.scene.BIMProperties.schema_dir = self.filepath
+ context.scene.BIMProperties.schema_dir = os.path.dirname(self.filepath)
return {"FINISHED"}
def invoke(self, context, event):
@@ -217,36 +225,36 @@ class AddSectionPlane(bpy.types.Operator):
bl_options = {"REGISTER", "UNDO"}
def execute(self, context):
- obj = self.create_section_obj()
+ obj = self.create_section_obj(context)
if not self.has_section_override_node():
self.create_section_compare_node()
- self.create_section_override_node(obj)
+ self.create_section_override_node(obj, context)
else:
self.append_obj_to_section_override_node(obj)
- self.add_default_material_if_none_exists()
+ self.add_default_material_if_none_exists(context)
self.override_materials()
return {"FINISHED"}
- def create_section_obj(self):
+ def create_section_obj(self, context):
section = bpy.data.objects.new("Section", None)
section.empty_display_type = "SINGLE_ARROW"
section.empty_display_size = 5
section.show_in_front = True
if (
- bpy.context.active_object
- and bpy.context.active_object.select_get()
- and isinstance(bpy.context.active_object.data, bpy.types.Camera)
+ context.active_object
+ and context.active_object.select_get()
+ and isinstance(context.active_object.data, bpy.types.Camera)
):
section.matrix_world = (
- bpy.context.active_object.matrix_world @ Euler((radians(180.0), 0.0, 0.0), "XYZ").to_matrix().to_4x4()
+ context.active_object.matrix_world @ Euler((radians(180.0), 0.0, 0.0), "XYZ").to_matrix().to_4x4()
)
else:
section.rotation_euler = Euler((radians(180.0), 0.0, 0.0), "XYZ")
- section.location = bpy.context.scene.cursor.location
+ section.location = context.scene.cursor.location
collection = bpy.data.collections.get("Sections")
if not collection:
collection = bpy.data.collections.new("Sections")
- bpy.context.scene.collection.children.link(collection)
+ context.scene.collection.children.link(collection)
collection.objects.link(section)
return section
@@ -278,7 +286,7 @@ class AddSectionPlane(bpy.types.Operator):
group.links.new(add.outputs[0], compare.inputs[0])
group.links.new(compare.outputs[0], group_output.inputs[""])
- def create_section_override_node(self, obj):
+ def create_section_override_node(self, obj, context):
group = bpy.data.node_groups.new("Section Override", type="ShaderNodeTree")
group_input = group.nodes.new(type="NodeGroupInput")
@@ -287,7 +295,7 @@ class AddSectionPlane(bpy.types.Operator):
backfacing = group.nodes.new(type="ShaderNodeNewGeometry")
backfacing_mix = group.nodes.new(type="ShaderNodeMixShader")
emission = group.nodes.new(type="ShaderNodeEmission")
- emission.inputs[0].default_value = list(bpy.context.scene.BIMProperties.section_plane_colour) + [1]
+ emission.inputs[0].default_value = list(context.scene.BIMProperties.section_plane_colour) + [1]
group.links.new(backfacing.outputs["Backfacing"], backfacing_mix.inputs[0])
group.links.new(group_input.outputs[""], backfacing_mix.inputs[1])
@@ -332,16 +340,16 @@ class AddSectionPlane(bpy.types.Operator):
section_compare.name = "Last Section Compare"
- def add_default_material_if_none_exists(self):
+ def add_default_material_if_none_exists(self, context):
material = bpy.data.materials.get("Section Override")
if not material:
material = bpy.data.materials.new("Section Override")
material.use_nodes = True
- if bpy.context.scene.BIMProperties.should_section_selected_objects:
- objects = list(bpy.context.selected_objects)
+ if context.scene.BIMProperties.should_section_selected_objects:
+ objects = list(context.selected_objects)
else:
- objects = list(bpy.context.visible_objects)
+ objects = list(context.visible_objects)
for obj in objects:
aggregate = obj.instance_collection
@@ -385,7 +393,7 @@ class RemoveSectionPlane(bpy.types.Operator):
bl_options = {"REGISTER", "UNDO"}
def execute(self, context):
- name = bpy.context.active_object.name
+ name = context.active_object.name
section_override = bpy.data.node_groups.get("Section Override")
if not section_override:
return {"FINISHED"}
@@ -401,7 +409,7 @@ class RemoveSectionPlane(bpy.types.Operator):
else: # If it links to section_compare.inputs[0]
if section_compare.inputs[1].links[0].from_node.name == "Mock Section":
# Then it is the very last section. Purge everything.
- self.purge_all_section_data()
+ self.purge_all_section_data(context)
return {"FINISHED"}
section_override.links.new(
section_compare.inputs[1].links[0].from_socket, section_compare.outputs[0].links[0].to_socket
@@ -414,10 +422,10 @@ class RemoveSectionPlane(bpy.types.Operator):
section_mix = section_override.nodes.get("Section Mix")
new_last_compare = section_mix.inputs[0].links[0].from_node
new_last_compare.name = "Last Section Compare"
- bpy.ops.object.delete({"selected_objects": [bpy.context.active_object]})
+ bpy.ops.object.delete({"selected_objects": [context.active_object]})
return {"FINISHED"}
- def purge_all_section_data(self):
+ def purge_all_section_data(self, context):
bpy.data.materials.remove(bpy.data.materials.get("Section Override"))
for material in bpy.data.materials:
if not material.node_tree:
@@ -431,7 +439,7 @@ class RemoveSectionPlane(bpy.types.Operator):
material.node_tree.nodes.remove(override)
bpy.data.node_groups.remove(bpy.data.node_groups.get("Section Override"))
bpy.data.node_groups.remove(bpy.data.node_groups.get("Section Compare"))
- bpy.ops.object.delete({"selected_objects": [bpy.context.active_object]})
+ bpy.ops.object.delete({"selected_objects": [context.active_object]})
class ReloadIfcFile(bpy.types.Operator):
@@ -450,7 +458,7 @@ class AddIfcFile(bpy.types.Operator):
bl_options = {"REGISTER", "UNDO"}
def execute(self, context):
- bpy.context.scene.DocProperties.ifc_files.add()
+ context.scene.DocProperties.ifc_files.add()
return {"FINISHED"}
@@ -461,7 +469,7 @@ class RemoveIfcFile(bpy.types.Operator):
bl_options = {"REGISTER", "UNDO"}
def execute(self, context):
- bpy.context.scene.DocProperties.ifc_files.remove(self.index)
+ context.scene.DocProperties.ifc_files.remove(self.index)
return {"FINISHED"}
@@ -472,9 +480,9 @@ class SetOverrideColour(bpy.types.Operator):
def execute(self, context):
result = 0
- for obj in bpy.context.selected_objects:
- obj.color = bpy.context.scene.BIMProperties.override_colour
- area = next(area for area in bpy.context.screen.areas if area.type == "VIEW_3D")
+ for obj in context.selected_objects:
+ obj.color = context.scene.BIMProperties.override_colour
+ area = next(area for area in context.screen.areas if area.type == "VIEW_3D")
area.spaces[0].shading.color_type = "OBJECT"
return {"FINISHED"}
@@ -500,7 +508,7 @@ class LinkIfc(bpy.types.Operator):
filepath: bpy.props.StringProperty(subtype="FILE_PATH")
def execute(self, context):
- # bpy.context.active_object.active_material.BIMMaterialProperties.location = self.filepath
+ # context.active_object.active_material.BIMMaterialProperties.location = self.filepath
# coll_name = "MyCollection"
with bpy.data.libraries.load(self.filepath, link=True) as (data_from, data_to):
@@ -529,13 +537,13 @@ class SnapSpacesTogether(bpy.types.Operator):
def execute(self, context):
threshold = 0.5
processed_polygons = set()
- for obj in bpy.context.selected_objects:
+ for obj in context.selected_objects:
if obj.type != "MESH":
continue
for polygon in obj.data.polygons:
center = obj.matrix_world @ polygon.center
distance = None
- for obj2 in bpy.context.selected_objects:
+ for obj2 in context.selected_objects:
if obj2 == obj or obj.type != "MESH":
continue
result = obj2.ray_cast(obj2.matrix_world.inverted() @ center, polygon.normal, distance=threshold)
@@ -571,7 +579,7 @@ class SelectExternalMaterialDir(bpy.types.Operator):
def execute(self, context):
# TODO: this is dead code, awaiting reimplementation. See #1222.
- bpy.context.active_object.active_material.BIMMaterialProperties.location = self.filepath
+ context.active_object.active_material.BIMMaterialProperties.location = self.filepath
return {"FINISHED"}
def invoke(self, context, event):
@@ -585,28 +593,28 @@ class FetchExternalMaterial(bpy.types.Operator):
def execute(self, context):
# TODO: this is dead code, awaiting reimplementation. See #1222.
- location = bpy.context.active_object.active_material.BIMMaterialProperties.location
+ location = context.active_object.active_material.BIMMaterialProperties.location
if location[-6:] != ".mpass":
return {"FINISHED"}
if not os.path.isabs(location):
- location = os.path.join(bpy.context.scene.BIMProperties.data_dir, location)
+ location = os.path.join(context.scene.BIMProperties.data_dir, location)
with open(location) as f:
self.material_pass = json.load(f)
- if bpy.context.scene.render.engine == "BLENDER_EEVEE" and "eevee" in self.material_pass:
- self.fetch_eevee_or_cycles("eevee")
- elif bpy.context.scene.render.engine == "CYCLES" and "cycles" in self.material_pass:
- self.fetch_eevee_or_cycles("cycles")
+ if context.scene.render.engine == "BLENDER_EEVEE" and "eevee" in self.material_pass:
+ self.fetch_eevee_or_cycles("eevee", context)
+ elif context.scene.render.engine == "CYCLES" and "cycles" in self.material_pass:
+ self.fetch_eevee_or_cycles("cycles", context)
return {"FINISHED"}
- def fetch_eevee_or_cycles(self, name):
- identification = bpy.context.active_object.active_material.BIMMaterialProperties.identification
+ def fetch_eevee_or_cycles(self, name, context):
+ identification = context.active_object.active_material.BIMMaterialProperties.identification
uri = self.material_pass[name]["uri"]
if not os.path.isabs(uri):
- uri = os.path.join(bpy.context.scene.BIMProperties.data_dir, uri)
+ uri = os.path.join(context.scene.BIMProperties.data_dir, uri)
bpy.ops.wm.link(filename=identification, directory=os.path.join(uri, "Material"))
for material in bpy.data.materials:
if material.name == identification and material.library:
- bpy.context.active_object.material_slots[0].material = material
+ context.active_object.material_slots[0].material = material
return
@@ -616,15 +624,15 @@ class FetchObjectPassport(bpy.types.Operator):
def execute(self, context):
# TODO: this is dead code, awaiting reimplementation. See #1222.
- for reference in bpy.context.active_object.BIMObjectProperties.document_references:
- reference = bpy.context.scene.BIMProperties.document_references[reference.name]
+ for reference in context.active_object.BIMObjectProperties.document_references:
+ reference = context.scene.BIMProperties.document_references[reference.name]
if reference.location[-6:] == ".blend":
- self.fetch_blender(reference)
+ self.fetch_blender(reference, context)
return {"FINISHED"}
- def fetch_blender(self, reference):
+ def fetch_blender(self, reference, context):
bpy.ops.wm.link(filename=reference.name, directory=os.path.join(reference.location, "Mesh"))
- bpy.context.active_object.data = bpy.data.meshes[reference.name]
+ context.active_object.data = bpy.data.meshes[reference.name]
class CopyPropertyToSelection(bpy.types.Operator):
@@ -636,7 +644,7 @@ class CopyPropertyToSelection(bpy.types.Operator):
def execute(self, context):
# TODO: this is dead code, awaiting reimplementation. See #1222.
- for obj in bpy.context.selected_objects:
+ for obj in context.selected_objects:
if "/" not in obj.name:
continue
pset = obj.BIMObjectProperties.psets.get(self.pset_name)
@@ -666,9 +674,9 @@ class CopyAttributeToSelection(bpy.types.Operator):
def execute(self, context):
# TODO: this is dead code, awaiting reimplementation. See #1222.
- self.schema = ifcopenshell.ifcopenshell_wrapper.schema_by_name(bpy.context.scene.BIMProperties.export_schema)
+ self.schema = ifcopenshell.ifcopenshell_wrapper.schema_by_name(context.scene.BIMProperties.export_schema)
self.applicable_attributes_cache = {}
- for obj in bpy.context.selected_objects:
+ for obj in context.selected_objects:
if "/" not in obj.name:
continue
attribute = obj.BIMObjectProperties.attributes.get(self.attribute_name)
diff --git a/src/blenderbim/blenderbim/bim/schema.py b/src/blenderbim/blenderbim/bim/schema.py
index 7fa2789660..6fb784f561 100644
--- a/src/blenderbim/blenderbim/bim/schema.py
+++ b/src/blenderbim/blenderbim/bim/schema.py
@@ -77,3 +77,7 @@ class IfcSchema:
ifc = IfcSchema()
+
+def reload():
+ global ifc
+ ifc = IfcSchema()
diff --git a/src/blenderbim/blenderbim/bim/ui.py b/src/blenderbim/blenderbim/bim/ui.py
index 29fbac4c0a..cb6661e8c4 100644
--- a/src/blenderbim/blenderbim/bim/ui.py
+++ b/src/blenderbim/blenderbim/bim/ui.py
@@ -15,7 +15,7 @@ class BIM_PT_section_plane(Panel):
def draw(self, context):
layout = self.layout
layout.use_property_split = True
- props = bpy.context.scene.BIMProperties
+ props = context.scene.BIMProperties
row = layout.row()
row.prop(props, "should_section_selected_objects")
@@ -91,7 +91,7 @@ class BIM_ADDON_preferences(bpy.types.AddonPreferences):
def ifc_units(self, context):
scene = context.scene
- props = context.scene.BIMProperties
+ props = scene.BIMProperties
layout = self.layout
layout.use_property_decorate = False
layout.use_property_split = True
@@ -100,7 +100,7 @@ def ifc_units(self, context):
row = layout.row()
row.prop(props, "volume_unit")
row = layout.row()
- if bpy.context.scene.unit_settings.system == "IMPERIAL":
+ if scene.unit_settings.system == "IMPERIAL":
row.prop(props, "imperial_precision")
else:
row.prop(props, "metric_precision")
diff --git a/src/blenderbim/blenderbim/libs/site/packages/hppfcl.pth b/src/blenderbim/blenderbim/libs/site/packages/hppfcl.pth
new file mode 100644
index 0000000000..c0d165217a
--- /dev/null
+++ b/src/blenderbim/blenderbim/libs/site/packages/hppfcl.pth
@@ -0,0 +1,3 @@
+# expose hppfcl as site-package
+
+hppfcl
diff --git a/src/blenderbim/generate_demo_library.py b/src/blenderbim/generate_demo_library.py
new file mode 100644
index 0000000000..c76f4afcc4
--- /dev/null
+++ b/src/blenderbim/generate_demo_library.py
@@ -0,0 +1,93 @@
+import ifcopenshell
+import ifcopenshell.api
+
+
+class LibraryGenerator:
+ def generate(self):
+ self.file = ifcopenshell.api.run("project.create_file")
+ self.project = ifcopenshell.api.run(
+ "root.create_entity", self.file, ifc_class="IfcProjectLibrary", name="BlenderBIM Demo Library"
+ )
+ ifcopenshell.api.run("unit.assign_unit", self.file, length={"is_metric": True, "raw": "METERS"})
+
+ self.material = ifcopenshell.api.run("material.add_material", self.file, name="Unknown")
+
+ self.create_layer_type("IfcWallType", "DEMO50", 0.05)
+ self.create_layer_type("IfcWallType", "DEMO100", 0.1)
+ self.create_layer_type("IfcWallType", "DEMO200", 0.2)
+ self.create_layer_type("IfcWallType", "DEMO300", 0.3)
+
+ self.create_layer_type("IfcCoveringType", "DEMO20", 0.02)
+ self.create_layer_type("IfcRampType", "DEMO200", 0.2)
+
+ profile = self.file.create_entity(
+ "IfcCircleProfileDef", ProfileType="AREA", Radius=0.3
+ )
+ self.create_profile_type("IfcPileType", "DEMO1", profile)
+
+ self.create_layer_type("IfcSlabType", "DEMO150", 0.2)
+ self.create_layer_type("IfcSlabType", "DEMO250", 0.3)
+
+ profile = self.file.create_entity("IfcRectangleProfileDef", ProfileType="AREA", XDim=0.5, YDim=0.6)
+ self.create_profile_type("IfcColumnType", "DEMO1", profile)
+
+ profile = self.file.create_entity(
+ "IfcCircleHollowProfileDef", ProfileType="AREA", Radius=0.25, WallThickness=0.005
+ )
+ self.create_profile_type("IfcColumnType", "DEMO2", profile)
+
+ profile = self.file.create_entity(
+ "IfcRectangleHollowProfileDef",
+ ProfileType="AREA",
+ XDim=0.075,
+ YDim=0.15,
+ WallThickness=0.005,
+ InnerFilletRadius=0.005,
+ OuterFilletRadius=0.005,
+ )
+ self.create_profile_type("IfcColumnType", "DEMO3", profile)
+
+ profile = self.file.create_entity(
+ "IfcIShapeProfileDef",
+ ProfileType="AREA",
+ OverallWidth=0.1,
+ OverallDepth=0.2,
+ WebThickness=0.005,
+ FlangeThickness=0.01,
+ FilletRadius=0.005,
+ )
+ self.create_profile_type("IfcBeamType", "DEMO1", profile)
+
+ profile = self.file.create_entity(
+ "IfcCShapeProfileDef",
+ ProfileType="AREA",
+ Depth=0.2,
+ Width=0.1,
+ WallThickness=0.0015,
+ Girth=0.03,
+ InternalFilletRadius=0.005,
+ )
+ self.create_profile_type("IfcBeamType", "DEMO2", profile)
+
+ self.file.write("blenderbim-demo-library.ifc")
+
+ def create_layer_type(self, ifc_class, name, thickness):
+ element = ifcopenshell.api.run("root.create_entity", self.file, ifc_class=ifc_class, name=name)
+ rel = ifcopenshell.api.run("material.assign_material", self.file, product=element, type="IfcMaterialLayerSet")
+ layer_set = rel.RelatingMaterial
+ layer = ifcopenshell.api.run("material.add_layer", self.file, layer_set=layer_set, material=self.material)
+ layer.LayerThickness = thickness
+ ifcopenshell.api.run("project.assign_declaration", self.file, definition=element, relating_context=self.project)
+
+ def create_profile_type(self, ifc_class, name, profile):
+ element = ifcopenshell.api.run("root.create_entity", self.file, ifc_class=ifc_class, name=name)
+ rel = ifcopenshell.api.run("material.assign_material", self.file, product=element, type="IfcMaterialProfileSet")
+ profile_set = rel.RelatingMaterial
+ material_profile = ifcopenshell.api.run(
+ "material.add_profile", self.file, profile_set=profile_set, material=self.material
+ )
+ ifcopenshell.api.run("material.assign_profile", self.file, material_profile=material_profile, profile=profile)
+ ifcopenshell.api.run("project.assign_declaration", self.file, definition=element, relating_context=self.project)
+
+
+LibraryGenerator().generate()
diff --git a/src/bsdd/COPYING b/src/bsdd/COPYING
new file mode 100644
index 0000000000..810fce6e9b
--- /dev/null
+++ b/src/bsdd/COPYING
@@ -0,0 +1,621 @@
+ GNU GENERAL PUBLIC LICENSE
+ Version 3, 29 June 2007
+
+ Copyright (C) 2007 Free Software Foundation, Inc.
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+ Preamble
+
+ The GNU General Public License is a free, copyleft license for
+software and other kinds of works.
+
+ The licenses for most software and other practical works are designed
+to take away your freedom to share and change the works. By contrast,
+the GNU General Public License is intended to guarantee your freedom to
+share and change all versions of a program--to make sure it remains free
+software for all its users. We, the Free Software Foundation, use the
+GNU General Public License for most of our software; it applies also to
+any other work released this way by its authors. You can apply it to
+your programs, too.
+
+ When we speak of free software, we are referring to freedom, not
+price. Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+them if you wish), that you receive source code or can get it if you
+want it, that you can change the software or use pieces of it in new
+free programs, and that you know you can do these things.
+
+ To protect your rights, we need to prevent others from denying you
+these rights or asking you to surrender the rights. Therefore, you have
+certain responsibilities if you distribute copies of the software, or if
+you modify it: responsibilities to respect the freedom of others.
+
+ For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must pass on to the recipients the same
+freedoms that you received. You must make sure that they, too, receive
+or can get the source code. And you must show them these terms so they
+know their rights.
+
+ Developers that use the GNU GPL protect your rights with two steps:
+(1) assert copyright on the software, and (2) offer you this License
+giving you legal permission to copy, distribute and/or modify it.
+
+ For the developers' and authors' protection, the GPL clearly explains
+that there is no warranty for this free software. For both users' and
+authors' sake, the GPL requires that modified versions be marked as
+changed, so that their problems will not be attributed erroneously to
+authors of previous versions.
+
+ Some devices are designed to deny users access to install or run
+modified versions of the software inside them, although the manufacturer
+can do so. This is fundamentally incompatible with the aim of
+protecting users' freedom to change the software. The systematic
+pattern of such abuse occurs in the area of products for individuals to
+use, which is precisely where it is most unacceptable. Therefore, we
+have designed this version of the GPL to prohibit the practice for those
+products. If such problems arise substantially in other domains, we
+stand ready to extend this provision to those domains in future versions
+of the GPL, as needed to protect the freedom of users.
+
+ Finally, every program is threatened constantly by software patents.
+States should not allow patents to restrict development and use of
+software on general-purpose computers, but in those that do, we wish to
+avoid the special danger that patents applied to a free program could
+make it effectively proprietary. To prevent this, the GPL assures that
+patents cannot be used to render the program non-free.
+
+ The precise terms and conditions for copying, distribution and
+modification follow.
+
+ TERMS AND CONDITIONS
+
+ 0. Definitions.
+
+ "This License" refers to version 3 of the GNU General Public License.
+
+ "Copyright" also means copyright-like laws that apply to other kinds of
+works, such as semiconductor masks.
+
+ "The Program" refers to any copyrightable work licensed under this
+License. Each licensee is addressed as "you". "Licensees" and
+"recipients" may be individuals or organizations.
+
+ To "modify" a work means to copy from or adapt all or part of the work
+in a fashion requiring copyright permission, other than the making of an
+exact copy. The resulting work is called a "modified version" of the
+earlier work or a work "based on" the earlier work.
+
+ A "covered work" means either the unmodified Program or a work based
+on the Program.
+
+ To "propagate" a work means to do anything with it that, without
+permission, would make you directly or secondarily liable for
+infringement under applicable copyright law, except executing it on a
+computer or modifying a private copy. Propagation includes copying,
+distribution (with or without modification), making available to the
+public, and in some countries other activities as well.
+
+ To "convey" a work means any kind of propagation that enables other
+parties to make or receive copies. Mere interaction with a user through
+a computer network, with no transfer of a copy, is not conveying.
+
+ An interactive user interface displays "Appropriate Legal Notices"
+to the extent that it includes a convenient and prominently visible
+feature that (1) displays an appropriate copyright notice, and (2)
+tells the user that there is no warranty for the work (except to the
+extent that warranties are provided), that licensees may convey the
+work under this License, and how to view a copy of this License. If
+the interface presents a list of user commands or options, such as a
+menu, a prominent item in the list meets this criterion.
+
+ 1. Source Code.
+
+ The "source code" for a work means the preferred form of the work
+for making modifications to it. "Object code" means any non-source
+form of a work.
+
+ A "Standard Interface" means an interface that either is an official
+standard defined by a recognized standards body, or, in the case of
+interfaces specified for a particular programming language, one that
+is widely used among developers working in that language.
+
+ The "System Libraries" of an executable work include anything, other
+than the work as a whole, that (a) is included in the normal form of
+packaging a Major Component, but which is not part of that Major
+Component, and (b) serves only to enable use of the work with that
+Major Component, or to implement a Standard Interface for which an
+implementation is available to the public in source code form. A
+"Major Component", in this context, means a major essential component
+(kernel, window system, and so on) of the specific operating system
+(if any) on which the executable work runs, or a compiler used to
+produce the work, or an object code interpreter used to run it.
+
+ The "Corresponding Source" for a work in object code form means all
+the source code needed to generate, install, and (for an executable
+work) run the object code and to modify the work, including scripts to
+control those activities. However, it does not include the work's
+System Libraries, or general-purpose tools or generally available free
+programs which are used unmodified in performing those activities but
+which are not part of the work. For example, Corresponding Source
+includes interface definition files associated with source files for
+the work, and the source code for shared libraries and dynamically
+linked subprograms that the work is specifically designed to require,
+such as by intimate data communication or control flow between those
+subprograms and other parts of the work.
+
+ The Corresponding Source need not include anything that users
+can regenerate automatically from other parts of the Corresponding
+Source.
+
+ The Corresponding Source for a work in source code form is that
+same work.
+
+ 2. Basic Permissions.
+
+ All rights granted under this License are granted for the term of
+copyright on the Program, and are irrevocable provided the stated
+conditions are met. This License explicitly affirms your unlimited
+permission to run the unmodified Program. The output from running a
+covered work is covered by this License only if the output, given its
+content, constitutes a covered work. This License acknowledges your
+rights of fair use or other equivalent, as provided by copyright law.
+
+ You may make, run and propagate covered works that you do not
+convey, without conditions so long as your license otherwise remains
+in force. You may convey covered works to others for the sole purpose
+of having them make modifications exclusively for you, or provide you
+with facilities for running those works, provided that you comply with
+the terms of this License in conveying all material for which you do
+not control copyright. Those thus making or running the covered works
+for you must do so exclusively on your behalf, under your direction
+and control, on terms that prohibit them from making any copies of
+your copyrighted material outside their relationship with you.
+
+ Conveying under any other circumstances is permitted solely under
+the conditions stated below. Sublicensing is not allowed; section 10
+makes it unnecessary.
+
+ 3. Protecting Users' Legal Rights From Anti-Circumvention Law.
+
+ No covered work shall be deemed part of an effective technological
+measure under any applicable law fulfilling obligations under article
+11 of the WIPO copyright treaty adopted on 20 December 1996, or
+similar laws prohibiting or restricting circumvention of such
+measures.
+
+ When you convey a covered work, you waive any legal power to forbid
+circumvention of technological measures to the extent such circumvention
+is effected by exercising rights under this License with respect to
+the covered work, and you disclaim any intention to limit operation or
+modification of the work as a means of enforcing, against the work's
+users, your or third parties' legal rights to forbid circumvention of
+technological measures.
+
+ 4. Conveying Verbatim Copies.
+
+ You may convey verbatim copies of the Program's source code as you
+receive it, in any medium, provided that you conspicuously and
+appropriately publish on each copy an appropriate copyright notice;
+keep intact all notices stating that this License and any
+non-permissive terms added in accord with section 7 apply to the code;
+keep intact all notices of the absence of any warranty; and give all
+recipients a copy of this License along with the Program.
+
+ You may charge any price or no price for each copy that you convey,
+and you may offer support or warranty protection for a fee.
+
+ 5. Conveying Modified Source Versions.
+
+ You may convey a work based on the Program, or the modifications to
+produce it from the Program, in the form of source code under the
+terms of section 4, provided that you also meet all of these conditions:
+
+ a) The work must carry prominent notices stating that you modified
+ it, and giving a relevant date.
+
+ b) The work must carry prominent notices stating that it is
+ released under this License and any conditions added under section
+ 7. This requirement modifies the requirement in section 4 to
+ "keep intact all notices".
+
+ c) You must license the entire work, as a whole, under this
+ License to anyone who comes into possession of a copy. This
+ License will therefore apply, along with any applicable section 7
+ additional terms, to the whole of the work, and all its parts,
+ regardless of how they are packaged. This License gives no
+ permission to license the work in any other way, but it does not
+ invalidate such permission if you have separately received it.
+
+ d) If the work has interactive user interfaces, each must display
+ Appropriate Legal Notices; however, if the Program has interactive
+ interfaces that do not display Appropriate Legal Notices, your
+ work need not make them do so.
+
+ A compilation of a covered work with other separate and independent
+works, which are not by their nature extensions of the covered work,
+and which are not combined with it such as to form a larger program,
+in or on a volume of a storage or distribution medium, is called an
+"aggregate" if the compilation and its resulting copyright are not
+used to limit the access or legal rights of the compilation's users
+beyond what the individual works permit. Inclusion of a covered work
+in an aggregate does not cause this License to apply to the other
+parts of the aggregate.
+
+ 6. Conveying Non-Source Forms.
+
+ You may convey a covered work in object code form under the terms
+of sections 4 and 5, provided that you also convey the
+machine-readable Corresponding Source under the terms of this License,
+in one of these ways:
+
+ a) Convey the object code in, or embodied in, a physical product
+ (including a physical distribution medium), accompanied by the
+ Corresponding Source fixed on a durable physical medium
+ customarily used for software interchange.
+
+ b) Convey the object code in, or embodied in, a physical product
+ (including a physical distribution medium), accompanied by a
+ written offer, valid for at least three years and valid for as
+ long as you offer spare parts or customer support for that product
+ model, to give anyone who possesses the object code either (1) a
+ copy of the Corresponding Source for all the software in the
+ product that is covered by this License, on a durable physical
+ medium customarily used for software interchange, for a price no
+ more than your reasonable cost of physically performing this
+ conveying of source, or (2) access to copy the
+ Corresponding Source from a network server at no charge.
+
+ c) Convey individual copies of the object code with a copy of the
+ written offer to provide the Corresponding Source. This
+ alternative is allowed only occasionally and noncommercially, and
+ only if you received the object code with such an offer, in accord
+ with subsection 6b.
+
+ d) Convey the object code by offering access from a designated
+ place (gratis or for a charge), and offer equivalent access to the
+ Corresponding Source in the same way through the same place at no
+ further charge. You need not require recipients to copy the
+ Corresponding Source along with the object code. If the place to
+ copy the object code is a network server, the Corresponding Source
+ may be on a different server (operated by you or a third party)
+ that supports equivalent copying facilities, provided you maintain
+ clear directions next to the object code saying where to find the
+ Corresponding Source. Regardless of what server hosts the
+ Corresponding Source, you remain obligated to ensure that it is
+ available for as long as needed to satisfy these requirements.
+
+ e) Convey the object code using peer-to-peer transmission, provided
+ you inform other peers where the object code and Corresponding
+ Source of the work are being offered to the general public at no
+ charge under subsection 6d.
+
+ A separable portion of the object code, whose source code is excluded
+from the Corresponding Source as a System Library, need not be
+included in conveying the object code work.
+
+ A "User Product" is either (1) a "consumer product", which means any
+tangible personal property which is normally used for personal, family,
+or household purposes, or (2) anything designed or sold for incorporation
+into a dwelling. In determining whether a product is a consumer product,
+doubtful cases shall be resolved in favor of coverage. For a particular
+product received by a particular user, "normally used" refers to a
+typical or common use of that class of product, regardless of the status
+of the particular user or of the way in which the particular user
+actually uses, or expects or is expected to use, the product. A product
+is a consumer product regardless of whether the product has substantial
+commercial, industrial or non-consumer uses, unless such uses represent
+the only significant mode of use of the product.
+
+ "Installation Information" for a User Product means any methods,
+procedures, authorization keys, or other information required to install
+and execute modified versions of a covered work in that User Product from
+a modified version of its Corresponding Source. The information must
+suffice to ensure that the continued functioning of the modified object
+code is in no case prevented or interfered with solely because
+modification has been made.
+
+ If you convey an object code work under this section in, or with, or
+specifically for use in, a User Product, and the conveying occurs as
+part of a transaction in which the right of possession and use of the
+User Product is transferred to the recipient in perpetuity or for a
+fixed term (regardless of how the transaction is characterized), the
+Corresponding Source conveyed under this section must be accompanied
+by the Installation Information. But this requirement does not apply
+if neither you nor any third party retains the ability to install
+modified object code on the User Product (for example, the work has
+been installed in ROM).
+
+ The requirement to provide Installation Information does not include a
+requirement to continue to provide support service, warranty, or updates
+for a work that has been modified or installed by the recipient, or for
+the User Product in which it has been modified or installed. Access to a
+network may be denied when the modification itself materially and
+adversely affects the operation of the network or violates the rules and
+protocols for communication across the network.
+
+ Corresponding Source conveyed, and Installation Information provided,
+in accord with this section must be in a format that is publicly
+documented (and with an implementation available to the public in
+source code form), and must require no special password or key for
+unpacking, reading or copying.
+
+ 7. Additional Terms.
+
+ "Additional permissions" are terms that supplement the terms of this
+License by making exceptions from one or more of its conditions.
+Additional permissions that are applicable to the entire Program shall
+be treated as though they were included in this License, to the extent
+that they are valid under applicable law. If additional permissions
+apply only to part of the Program, that part may be used separately
+under those permissions, but the entire Program remains governed by
+this License without regard to the additional permissions.
+
+ When you convey a copy of a covered work, you may at your option
+remove any additional permissions from that copy, or from any part of
+it. (Additional permissions may be written to require their own
+removal in certain cases when you modify the work.) You may place
+additional permissions on material, added by you to a covered work,
+for which you have or can give appropriate copyright permission.
+
+ Notwithstanding any other provision of this License, for material you
+add to a covered work, you may (if authorized by the copyright holders of
+that material) supplement the terms of this License with terms:
+
+ a) Disclaiming warranty or limiting liability differently from the
+ terms of sections 15 and 16 of this License; or
+
+ b) Requiring preservation of specified reasonable legal notices or
+ author attributions in that material or in the Appropriate Legal
+ Notices displayed by works containing it; or
+
+ c) Prohibiting misrepresentation of the origin of that material, or
+ requiring that modified versions of such material be marked in
+ reasonable ways as different from the original version; or
+
+ d) Limiting the use for publicity purposes of names of licensors or
+ authors of the material; or
+
+ e) Declining to grant rights under trademark law for use of some
+ trade names, trademarks, or service marks; or
+
+ f) Requiring indemnification of licensors and authors of that
+ material by anyone who conveys the material (or modified versions of
+ it) with contractual assumptions of liability to the recipient, for
+ any liability that these contractual assumptions directly impose on
+ those licensors and authors.
+
+ All other non-permissive additional terms are considered "further
+restrictions" within the meaning of section 10. If the Program as you
+received it, or any part of it, contains a notice stating that it is
+governed by this License along with a term that is a further
+restriction, you may remove that term. If a license document contains
+a further restriction but permits relicensing or conveying under this
+License, you may add to a covered work material governed by the terms
+of that license document, provided that the further restriction does
+not survive such relicensing or conveying.
+
+ If you add terms to a covered work in accord with this section, you
+must place, in the relevant source files, a statement of the
+additional terms that apply to those files, or a notice indicating
+where to find the applicable terms.
+
+ Additional terms, permissive or non-permissive, may be stated in the
+form of a separately written license, or stated as exceptions;
+the above requirements apply either way.
+
+ 8. Termination.
+
+ You may not propagate or modify a covered work except as expressly
+provided under this License. Any attempt otherwise to propagate or
+modify it is void, and will automatically terminate your rights under
+this License (including any patent licenses granted under the third
+paragraph of section 11).
+
+ However, if you cease all violation of this License, then your
+license from a particular copyright holder is reinstated (a)
+provisionally, unless and until the copyright holder explicitly and
+finally terminates your license, and (b) permanently, if the copyright
+holder fails to notify you of the violation by some reasonable means
+prior to 60 days after the cessation.
+
+ Moreover, your license from a particular copyright holder is
+reinstated permanently if the copyright holder notifies you of the
+violation by some reasonable means, this is the first time you have
+received notice of violation of this License (for any work) from that
+copyright holder, and you cure the violation prior to 30 days after
+your receipt of the notice.
+
+ Termination of your rights under this section does not terminate the
+licenses of parties who have received copies or rights from you under
+this License. If your rights have been terminated and not permanently
+reinstated, you do not qualify to receive new licenses for the same
+material under section 10.
+
+ 9. Acceptance Not Required for Having Copies.
+
+ You are not required to accept this License in order to receive or
+run a copy of the Program. Ancillary propagation of a covered work
+occurring solely as a consequence of using peer-to-peer transmission
+to receive a copy likewise does not require acceptance. However,
+nothing other than this License grants you permission to propagate or
+modify any covered work. These actions infringe copyright if you do
+not accept this License. Therefore, by modifying or propagating a
+covered work, you indicate your acceptance of this License to do so.
+
+ 10. Automatic Licensing of Downstream Recipients.
+
+ Each time you convey a covered work, the recipient automatically
+receives a license from the original licensors, to run, modify and
+propagate that work, subject to this License. You are not responsible
+for enforcing compliance by third parties with this License.
+
+ An "entity transaction" is a transaction transferring control of an
+organization, or substantially all assets of one, or subdividing an
+organization, or merging organizations. If propagation of a covered
+work results from an entity transaction, each party to that
+transaction who receives a copy of the work also receives whatever
+licenses to the work the party's predecessor in interest had or could
+give under the previous paragraph, plus a right to possession of the
+Corresponding Source of the work from the predecessor in interest, if
+the predecessor has it or can get it with reasonable efforts.
+
+ You may not impose any further restrictions on the exercise of the
+rights granted or affirmed under this License. For example, you may
+not impose a license fee, royalty, or other charge for exercise of
+rights granted under this License, and you may not initiate litigation
+(including a cross-claim or counterclaim in a lawsuit) alleging that
+any patent claim is infringed by making, using, selling, offering for
+sale, or importing the Program or any portion of it.
+
+ 11. Patents.
+
+ A "contributor" is a copyright holder who authorizes use under this
+License of the Program or a work on which the Program is based. The
+work thus licensed is called the contributor's "contributor version".
+
+ A contributor's "essential patent claims" are all patent claims
+owned or controlled by the contributor, whether already acquired or
+hereafter acquired, that would be infringed by some manner, permitted
+by this License, of making, using, or selling its contributor version,
+but do not include claims that would be infringed only as a
+consequence of further modification of the contributor version. For
+purposes of this definition, "control" includes the right to grant
+patent sublicenses in a manner consistent with the requirements of
+this License.
+
+ Each contributor grants you a non-exclusive, worldwide, royalty-free
+patent license under the contributor's essential patent claims, to
+make, use, sell, offer for sale, import and otherwise run, modify and
+propagate the contents of its contributor version.
+
+ In the following three paragraphs, a "patent license" is any express
+agreement or commitment, however denominated, not to enforce a patent
+(such as an express permission to practice a patent or covenant not to
+sue for patent infringement). To "grant" such a patent license to a
+party means to make such an agreement or commitment not to enforce a
+patent against the party.
+
+ If you convey a covered work, knowingly relying on a patent license,
+and the Corresponding Source of the work is not available for anyone
+to copy, free of charge and under the terms of this License, through a
+publicly available network server or other readily accessible means,
+then you must either (1) cause the Corresponding Source to be so
+available, or (2) arrange to deprive yourself of the benefit of the
+patent license for this particular work, or (3) arrange, in a manner
+consistent with the requirements of this License, to extend the patent
+license to downstream recipients. "Knowingly relying" means you have
+actual knowledge that, but for the patent license, your conveying the
+covered work in a country, or your recipient's use of the covered work
+in a country, would infringe one or more identifiable patents in that
+country that you have reason to believe are valid.
+
+ If, pursuant to or in connection with a single transaction or
+arrangement, you convey, or propagate by procuring conveyance of, a
+covered work, and grant a patent license to some of the parties
+receiving the covered work authorizing them to use, propagate, modify
+or convey a specific copy of the covered work, then the patent license
+you grant is automatically extended to all recipients of the covered
+work and works based on it.
+
+ A patent license is "discriminatory" if it does not include within
+the scope of its coverage, prohibits the exercise of, or is
+conditioned on the non-exercise of one or more of the rights that are
+specifically granted under this License. You may not convey a covered
+work if you are a party to an arrangement with a third party that is
+in the business of distributing software, under which you make payment
+to the third party based on the extent of your activity of conveying
+the work, and under which the third party grants, to any of the
+parties who would receive the covered work from you, a discriminatory
+patent license (a) in connection with copies of the covered work
+conveyed by you (or copies made from those copies), or (b) primarily
+for and in connection with specific products or compilations that
+contain the covered work, unless you entered into that arrangement,
+or that patent license was granted, prior to 28 March 2007.
+
+ Nothing in this License shall be construed as excluding or limiting
+any implied license or other defenses to infringement that may
+otherwise be available to you under applicable patent law.
+
+ 12. No Surrender of Others' Freedom.
+
+ If conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot convey a
+covered work so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you may
+not convey it at all. For example, if you agree to terms that obligate you
+to collect a royalty for further conveying from those to whom you convey
+the Program, the only way you could satisfy both those terms and this
+License would be to refrain entirely from conveying the Program.
+
+ 13. Use with the GNU Affero General Public License.
+
+ Notwithstanding any other provision of this License, you have
+permission to link or combine any covered work with a work licensed
+under version 3 of the GNU Affero General Public License into a single
+combined work, and to convey the resulting work. The terms of this
+License will continue to apply to the part which is the covered work,
+but the special requirements of the GNU Affero General Public License,
+section 13, concerning interaction through a network will apply to the
+combination as such.
+
+ 14. Revised Versions of this License.
+
+ The Free Software Foundation may publish revised and/or new versions of
+the GNU General Public License from time to time. Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+ Each version is given a distinguishing version number. If the
+Program specifies that a certain numbered version of the GNU General
+Public License "or any later version" applies to it, you have the
+option of following the terms and conditions either of that numbered
+version or of any later version published by the Free Software
+Foundation. If the Program does not specify a version number of the
+GNU General Public License, you may choose any version ever published
+by the Free Software Foundation.
+
+ If the Program specifies that a proxy can decide which future
+versions of the GNU General Public License can be used, that proxy's
+public statement of acceptance of a version permanently authorizes you
+to choose that version for the Program.
+
+ Later license versions may give you additional or different
+permissions. However, no additional obligations are imposed on any
+author or copyright holder as a result of your choosing to follow a
+later version.
+
+ 15. Disclaimer of Warranty.
+
+ THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
+APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
+HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
+OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
+THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
+IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
+ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+ 16. Limitation of Liability.
+
+ IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
+THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
+GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
+USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
+DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
+PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
+EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGES.
+
+ 17. Interpretation of Sections 15 and 16.
+
+ If the disclaimer of warranty and limitation of liability provided
+above cannot be given local legal effect according to their terms,
+reviewing courts shall apply local law that most closely approximates
+an absolute waiver of all civil liability in connection with the
+Program, unless a warranty or assumption of liability accompanies a
+copy of the Program in return for a fee.
+
+ END OF TERMS AND CONDITIONS
diff --git a/src/bsdd/COPYING.LESSER b/src/bsdd/COPYING.LESSER
new file mode 100644
index 0000000000..0a041280bd
--- /dev/null
+++ b/src/bsdd/COPYING.LESSER
@@ -0,0 +1,165 @@
+ GNU LESSER GENERAL PUBLIC LICENSE
+ Version 3, 29 June 2007
+
+ Copyright (C) 2007 Free Software Foundation, Inc.
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+
+ This version of the GNU Lesser General Public License incorporates
+the terms and conditions of version 3 of the GNU General Public
+License, supplemented by the additional permissions listed below.
+
+ 0. Additional Definitions.
+
+ As used herein, "this License" refers to version 3 of the GNU Lesser
+General Public License, and the "GNU GPL" refers to version 3 of the GNU
+General Public License.
+
+ "The Library" refers to a covered work governed by this License,
+other than an Application or a Combined Work as defined below.
+
+ An "Application" is any work that makes use of an interface provided
+by the Library, but which is not otherwise based on the Library.
+Defining a subclass of a class defined by the Library is deemed a mode
+of using an interface provided by the Library.
+
+ A "Combined Work" is a work produced by combining or linking an
+Application with the Library. The particular version of the Library
+with which the Combined Work was made is also called the "Linked
+Version".
+
+ The "Minimal Corresponding Source" for a Combined Work means the
+Corresponding Source for the Combined Work, excluding any source code
+for portions of the Combined Work that, considered in isolation, are
+based on the Application, and not on the Linked Version.
+
+ The "Corresponding Application Code" for a Combined Work means the
+object code and/or source code for the Application, including any data
+and utility programs needed for reproducing the Combined Work from the
+Application, but excluding the System Libraries of the Combined Work.
+
+ 1. Exception to Section 3 of the GNU GPL.
+
+ You may convey a covered work under sections 3 and 4 of this License
+without being bound by section 3 of the GNU GPL.
+
+ 2. Conveying Modified Versions.
+
+ If you modify a copy of the Library, and, in your modifications, a
+facility refers to a function or data to be supplied by an Application
+that uses the facility (other than as an argument passed when the
+facility is invoked), then you may convey a copy of the modified
+version:
+
+ a) under this License, provided that you make a good faith effort to
+ ensure that, in the event an Application does not supply the
+ function or data, the facility still operates, and performs
+ whatever part of its purpose remains meaningful, or
+
+ b) under the GNU GPL, with none of the additional permissions of
+ this License applicable to that copy.
+
+ 3. Object Code Incorporating Material from Library Header Files.
+
+ The object code form of an Application may incorporate material from
+a header file that is part of the Library. You may convey such object
+code under terms of your choice, provided that, if the incorporated
+material is not limited to numerical parameters, data structure
+layouts and accessors, or small macros, inline functions and templates
+(ten or fewer lines in length), you do both of the following:
+
+ a) Give prominent notice with each copy of the object code that the
+ Library is used in it and that the Library and its use are
+ covered by this License.
+
+ b) Accompany the object code with a copy of the GNU GPL and this license
+ document.
+
+ 4. Combined Works.
+
+ You may convey a Combined Work under terms of your choice that,
+taken together, effectively do not restrict modification of the
+portions of the Library contained in the Combined Work and reverse
+engineering for debugging such modifications, if you also do each of
+the following:
+
+ a) Give prominent notice with each copy of the Combined Work that
+ the Library is used in it and that the Library and its use are
+ covered by this License.
+
+ b) Accompany the Combined Work with a copy of the GNU GPL and this license
+ document.
+
+ c) For a Combined Work that displays copyright notices during
+ execution, include the copyright notice for the Library among
+ these notices, as well as a reference directing the user to the
+ copies of the GNU GPL and this license document.
+
+ d) Do one of the following:
+
+ 0) Convey the Minimal Corresponding Source under the terms of this
+ License, and the Corresponding Application Code in a form
+ suitable for, and under terms that permit, the user to
+ recombine or relink the Application with a modified version of
+ the Linked Version to produce a modified Combined Work, in the
+ manner specified by section 6 of the GNU GPL for conveying
+ Corresponding Source.
+
+ 1) Use a suitable shared library mechanism for linking with the
+ Library. A suitable mechanism is one that (a) uses at run time
+ a copy of the Library already present on the user's computer
+ system, and (b) will operate properly with a modified version
+ of the Library that is interface-compatible with the Linked
+ Version.
+
+ e) Provide Installation Information, but only if you would otherwise
+ be required to provide such information under section 6 of the
+ GNU GPL, and only to the extent that such information is
+ necessary to install and execute a modified version of the
+ Combined Work produced by recombining or relinking the
+ Application with a modified version of the Linked Version. (If
+ you use option 4d0, the Installation Information must accompany
+ the Minimal Corresponding Source and Corresponding Application
+ Code. If you use option 4d1, you must provide the Installation
+ Information in the manner specified by section 6 of the GNU GPL
+ for conveying Corresponding Source.)
+
+ 5. Combined Libraries.
+
+ You may place library facilities that are a work based on the
+Library side by side in a single library together with other library
+facilities that are not Applications and are not covered by this
+License, and convey such a combined library under terms of your
+choice, if you do both of the following:
+
+ a) Accompany the combined library with a copy of the same work based
+ on the Library, uncombined with any other library facilities,
+ conveyed under the terms of this License.
+
+ b) Give prominent notice with the combined library that part of it
+ is a work based on the Library, and explaining where to find the
+ accompanying uncombined form of the same work.
+
+ 6. Revised Versions of the GNU Lesser General Public License.
+
+ The Free Software Foundation may publish revised and/or new versions
+of the GNU Lesser General Public License from time to time. Such new
+versions will be similar in spirit to the present version, but may
+differ in detail to address new problems or concerns.
+
+ Each version is given a distinguishing version number. If the
+Library as you received it specifies that a certain numbered version
+of the GNU Lesser General Public License "or any later version"
+applies to it, you have the option of following the terms and
+conditions either of that published version or of any later version
+published by the Free Software Foundation. If the Library as you
+received it does not specify a version number of the GNU Lesser
+General Public License, you may choose any version of the GNU Lesser
+General Public License ever published by the Free Software Foundation.
+
+ If the Library as you received it specifies that a proxy can decide
+whether future versions of the GNU Lesser General Public License shall
+apply, that proxy's public statement of acceptance of any version is
+permanent authorization for you to choose that version for the
+Library.
diff --git a/src/bsdd/bsdd.py b/src/bsdd/bsdd.py
index ad45fb5fe1..0e0f704cc5 100644
--- a/src/bsdd/bsdd.py
+++ b/src/bsdd/bsdd.py
@@ -1,3 +1,22 @@
+
+# bSDD - Python bSDD library
+# Copyright (C) 2021 Dion Moult
+#
+# This file is part of bSDD.
+#
+# bSDD is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# bSDD is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public License
+# along with bSDD. If not, see .
+
import uuid
import time
import json
diff --git a/src/ifc2ca/COPYING b/src/ifc2ca/COPYING
new file mode 100644
index 0000000000..810fce6e9b
--- /dev/null
+++ b/src/ifc2ca/COPYING
@@ -0,0 +1,621 @@
+ GNU GENERAL PUBLIC LICENSE
+ Version 3, 29 June 2007
+
+ Copyright (C) 2007 Free Software Foundation, Inc.
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+ Preamble
+
+ The GNU General Public License is a free, copyleft license for
+software and other kinds of works.
+
+ The licenses for most software and other practical works are designed
+to take away your freedom to share and change the works. By contrast,
+the GNU General Public License is intended to guarantee your freedom to
+share and change all versions of a program--to make sure it remains free
+software for all its users. We, the Free Software Foundation, use the
+GNU General Public License for most of our software; it applies also to
+any other work released this way by its authors. You can apply it to
+your programs, too.
+
+ When we speak of free software, we are referring to freedom, not
+price. Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+them if you wish), that you receive source code or can get it if you
+want it, that you can change the software or use pieces of it in new
+free programs, and that you know you can do these things.
+
+ To protect your rights, we need to prevent others from denying you
+these rights or asking you to surrender the rights. Therefore, you have
+certain responsibilities if you distribute copies of the software, or if
+you modify it: responsibilities to respect the freedom of others.
+
+ For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must pass on to the recipients the same
+freedoms that you received. You must make sure that they, too, receive
+or can get the source code. And you must show them these terms so they
+know their rights.
+
+ Developers that use the GNU GPL protect your rights with two steps:
+(1) assert copyright on the software, and (2) offer you this License
+giving you legal permission to copy, distribute and/or modify it.
+
+ For the developers' and authors' protection, the GPL clearly explains
+that there is no warranty for this free software. For both users' and
+authors' sake, the GPL requires that modified versions be marked as
+changed, so that their problems will not be attributed erroneously to
+authors of previous versions.
+
+ Some devices are designed to deny users access to install or run
+modified versions of the software inside them, although the manufacturer
+can do so. This is fundamentally incompatible with the aim of
+protecting users' freedom to change the software. The systematic
+pattern of such abuse occurs in the area of products for individuals to
+use, which is precisely where it is most unacceptable. Therefore, we
+have designed this version of the GPL to prohibit the practice for those
+products. If such problems arise substantially in other domains, we
+stand ready to extend this provision to those domains in future versions
+of the GPL, as needed to protect the freedom of users.
+
+ Finally, every program is threatened constantly by software patents.
+States should not allow patents to restrict development and use of
+software on general-purpose computers, but in those that do, we wish to
+avoid the special danger that patents applied to a free program could
+make it effectively proprietary. To prevent this, the GPL assures that
+patents cannot be used to render the program non-free.
+
+ The precise terms and conditions for copying, distribution and
+modification follow.
+
+ TERMS AND CONDITIONS
+
+ 0. Definitions.
+
+ "This License" refers to version 3 of the GNU General Public License.
+
+ "Copyright" also means copyright-like laws that apply to other kinds of
+works, such as semiconductor masks.
+
+ "The Program" refers to any copyrightable work licensed under this
+License. Each licensee is addressed as "you". "Licensees" and
+"recipients" may be individuals or organizations.
+
+ To "modify" a work means to copy from or adapt all or part of the work
+in a fashion requiring copyright permission, other than the making of an
+exact copy. The resulting work is called a "modified version" of the
+earlier work or a work "based on" the earlier work.
+
+ A "covered work" means either the unmodified Program or a work based
+on the Program.
+
+ To "propagate" a work means to do anything with it that, without
+permission, would make you directly or secondarily liable for
+infringement under applicable copyright law, except executing it on a
+computer or modifying a private copy. Propagation includes copying,
+distribution (with or without modification), making available to the
+public, and in some countries other activities as well.
+
+ To "convey" a work means any kind of propagation that enables other
+parties to make or receive copies. Mere interaction with a user through
+a computer network, with no transfer of a copy, is not conveying.
+
+ An interactive user interface displays "Appropriate Legal Notices"
+to the extent that it includes a convenient and prominently visible
+feature that (1) displays an appropriate copyright notice, and (2)
+tells the user that there is no warranty for the work (except to the
+extent that warranties are provided), that licensees may convey the
+work under this License, and how to view a copy of this License. If
+the interface presents a list of user commands or options, such as a
+menu, a prominent item in the list meets this criterion.
+
+ 1. Source Code.
+
+ The "source code" for a work means the preferred form of the work
+for making modifications to it. "Object code" means any non-source
+form of a work.
+
+ A "Standard Interface" means an interface that either is an official
+standard defined by a recognized standards body, or, in the case of
+interfaces specified for a particular programming language, one that
+is widely used among developers working in that language.
+
+ The "System Libraries" of an executable work include anything, other
+than the work as a whole, that (a) is included in the normal form of
+packaging a Major Component, but which is not part of that Major
+Component, and (b) serves only to enable use of the work with that
+Major Component, or to implement a Standard Interface for which an
+implementation is available to the public in source code form. A
+"Major Component", in this context, means a major essential component
+(kernel, window system, and so on) of the specific operating system
+(if any) on which the executable work runs, or a compiler used to
+produce the work, or an object code interpreter used to run it.
+
+ The "Corresponding Source" for a work in object code form means all
+the source code needed to generate, install, and (for an executable
+work) run the object code and to modify the work, including scripts to
+control those activities. However, it does not include the work's
+System Libraries, or general-purpose tools or generally available free
+programs which are used unmodified in performing those activities but
+which are not part of the work. For example, Corresponding Source
+includes interface definition files associated with source files for
+the work, and the source code for shared libraries and dynamically
+linked subprograms that the work is specifically designed to require,
+such as by intimate data communication or control flow between those
+subprograms and other parts of the work.
+
+ The Corresponding Source need not include anything that users
+can regenerate automatically from other parts of the Corresponding
+Source.
+
+ The Corresponding Source for a work in source code form is that
+same work.
+
+ 2. Basic Permissions.
+
+ All rights granted under this License are granted for the term of
+copyright on the Program, and are irrevocable provided the stated
+conditions are met. This License explicitly affirms your unlimited
+permission to run the unmodified Program. The output from running a
+covered work is covered by this License only if the output, given its
+content, constitutes a covered work. This License acknowledges your
+rights of fair use or other equivalent, as provided by copyright law.
+
+ You may make, run and propagate covered works that you do not
+convey, without conditions so long as your license otherwise remains
+in force. You may convey covered works to others for the sole purpose
+of having them make modifications exclusively for you, or provide you
+with facilities for running those works, provided that you comply with
+the terms of this License in conveying all material for which you do
+not control copyright. Those thus making or running the covered works
+for you must do so exclusively on your behalf, under your direction
+and control, on terms that prohibit them from making any copies of
+your copyrighted material outside their relationship with you.
+
+ Conveying under any other circumstances is permitted solely under
+the conditions stated below. Sublicensing is not allowed; section 10
+makes it unnecessary.
+
+ 3. Protecting Users' Legal Rights From Anti-Circumvention Law.
+
+ No covered work shall be deemed part of an effective technological
+measure under any applicable law fulfilling obligations under article
+11 of the WIPO copyright treaty adopted on 20 December 1996, or
+similar laws prohibiting or restricting circumvention of such
+measures.
+
+ When you convey a covered work, you waive any legal power to forbid
+circumvention of technological measures to the extent such circumvention
+is effected by exercising rights under this License with respect to
+the covered work, and you disclaim any intention to limit operation or
+modification of the work as a means of enforcing, against the work's
+users, your or third parties' legal rights to forbid circumvention of
+technological measures.
+
+ 4. Conveying Verbatim Copies.
+
+ You may convey verbatim copies of the Program's source code as you
+receive it, in any medium, provided that you conspicuously and
+appropriately publish on each copy an appropriate copyright notice;
+keep intact all notices stating that this License and any
+non-permissive terms added in accord with section 7 apply to the code;
+keep intact all notices of the absence of any warranty; and give all
+recipients a copy of this License along with the Program.
+
+ You may charge any price or no price for each copy that you convey,
+and you may offer support or warranty protection for a fee.
+
+ 5. Conveying Modified Source Versions.
+
+ You may convey a work based on the Program, or the modifications to
+produce it from the Program, in the form of source code under the
+terms of section 4, provided that you also meet all of these conditions:
+
+ a) The work must carry prominent notices stating that you modified
+ it, and giving a relevant date.
+
+ b) The work must carry prominent notices stating that it is
+ released under this License and any conditions added under section
+ 7. This requirement modifies the requirement in section 4 to
+ "keep intact all notices".
+
+ c) You must license the entire work, as a whole, under this
+ License to anyone who comes into possession of a copy. This
+ License will therefore apply, along with any applicable section 7
+ additional terms, to the whole of the work, and all its parts,
+ regardless of how they are packaged. This License gives no
+ permission to license the work in any other way, but it does not
+ invalidate such permission if you have separately received it.
+
+ d) If the work has interactive user interfaces, each must display
+ Appropriate Legal Notices; however, if the Program has interactive
+ interfaces that do not display Appropriate Legal Notices, your
+ work need not make them do so.
+
+ A compilation of a covered work with other separate and independent
+works, which are not by their nature extensions of the covered work,
+and which are not combined with it such as to form a larger program,
+in or on a volume of a storage or distribution medium, is called an
+"aggregate" if the compilation and its resulting copyright are not
+used to limit the access or legal rights of the compilation's users
+beyond what the individual works permit. Inclusion of a covered work
+in an aggregate does not cause this License to apply to the other
+parts of the aggregate.
+
+ 6. Conveying Non-Source Forms.
+
+ You may convey a covered work in object code form under the terms
+of sections 4 and 5, provided that you also convey the
+machine-readable Corresponding Source under the terms of this License,
+in one of these ways:
+
+ a) Convey the object code in, or embodied in, a physical product
+ (including a physical distribution medium), accompanied by the
+ Corresponding Source fixed on a durable physical medium
+ customarily used for software interchange.
+
+ b) Convey the object code in, or embodied in, a physical product
+ (including a physical distribution medium), accompanied by a
+ written offer, valid for at least three years and valid for as
+ long as you offer spare parts or customer support for that product
+ model, to give anyone who possesses the object code either (1) a
+ copy of the Corresponding Source for all the software in the
+ product that is covered by this License, on a durable physical
+ medium customarily used for software interchange, for a price no
+ more than your reasonable cost of physically performing this
+ conveying of source, or (2) access to copy the
+ Corresponding Source from a network server at no charge.
+
+ c) Convey individual copies of the object code with a copy of the
+ written offer to provide the Corresponding Source. This
+ alternative is allowed only occasionally and noncommercially, and
+ only if you received the object code with such an offer, in accord
+ with subsection 6b.
+
+ d) Convey the object code by offering access from a designated
+ place (gratis or for a charge), and offer equivalent access to the
+ Corresponding Source in the same way through the same place at no
+ further charge. You need not require recipients to copy the
+ Corresponding Source along with the object code. If the place to
+ copy the object code is a network server, the Corresponding Source
+ may be on a different server (operated by you or a third party)
+ that supports equivalent copying facilities, provided you maintain
+ clear directions next to the object code saying where to find the
+ Corresponding Source. Regardless of what server hosts the
+ Corresponding Source, you remain obligated to ensure that it is
+ available for as long as needed to satisfy these requirements.
+
+ e) Convey the object code using peer-to-peer transmission, provided
+ you inform other peers where the object code and Corresponding
+ Source of the work are being offered to the general public at no
+ charge under subsection 6d.
+
+ A separable portion of the object code, whose source code is excluded
+from the Corresponding Source as a System Library, need not be
+included in conveying the object code work.
+
+ A "User Product" is either (1) a "consumer product", which means any
+tangible personal property which is normally used for personal, family,
+or household purposes, or (2) anything designed or sold for incorporation
+into a dwelling. In determining whether a product is a consumer product,
+doubtful cases shall be resolved in favor of coverage. For a particular
+product received by a particular user, "normally used" refers to a
+typical or common use of that class of product, regardless of the status
+of the particular user or of the way in which the particular user
+actually uses, or expects or is expected to use, the product. A product
+is a consumer product regardless of whether the product has substantial
+commercial, industrial or non-consumer uses, unless such uses represent
+the only significant mode of use of the product.
+
+ "Installation Information" for a User Product means any methods,
+procedures, authorization keys, or other information required to install
+and execute modified versions of a covered work in that User Product from
+a modified version of its Corresponding Source. The information must
+suffice to ensure that the continued functioning of the modified object
+code is in no case prevented or interfered with solely because
+modification has been made.
+
+ If you convey an object code work under this section in, or with, or
+specifically for use in, a User Product, and the conveying occurs as
+part of a transaction in which the right of possession and use of the
+User Product is transferred to the recipient in perpetuity or for a
+fixed term (regardless of how the transaction is characterized), the
+Corresponding Source conveyed under this section must be accompanied
+by the Installation Information. But this requirement does not apply
+if neither you nor any third party retains the ability to install
+modified object code on the User Product (for example, the work has
+been installed in ROM).
+
+ The requirement to provide Installation Information does not include a
+requirement to continue to provide support service, warranty, or updates
+for a work that has been modified or installed by the recipient, or for
+the User Product in which it has been modified or installed. Access to a
+network may be denied when the modification itself materially and
+adversely affects the operation of the network or violates the rules and
+protocols for communication across the network.
+
+ Corresponding Source conveyed, and Installation Information provided,
+in accord with this section must be in a format that is publicly
+documented (and with an implementation available to the public in
+source code form), and must require no special password or key for
+unpacking, reading or copying.
+
+ 7. Additional Terms.
+
+ "Additional permissions" are terms that supplement the terms of this
+License by making exceptions from one or more of its conditions.
+Additional permissions that are applicable to the entire Program shall
+be treated as though they were included in this License, to the extent
+that they are valid under applicable law. If additional permissions
+apply only to part of the Program, that part may be used separately
+under those permissions, but the entire Program remains governed by
+this License without regard to the additional permissions.
+
+ When you convey a copy of a covered work, you may at your option
+remove any additional permissions from that copy, or from any part of
+it. (Additional permissions may be written to require their own
+removal in certain cases when you modify the work.) You may place
+additional permissions on material, added by you to a covered work,
+for which you have or can give appropriate copyright permission.
+
+ Notwithstanding any other provision of this License, for material you
+add to a covered work, you may (if authorized by the copyright holders of
+that material) supplement the terms of this License with terms:
+
+ a) Disclaiming warranty or limiting liability differently from the
+ terms of sections 15 and 16 of this License; or
+
+ b) Requiring preservation of specified reasonable legal notices or
+ author attributions in that material or in the Appropriate Legal
+ Notices displayed by works containing it; or
+
+ c) Prohibiting misrepresentation of the origin of that material, or
+ requiring that modified versions of such material be marked in
+ reasonable ways as different from the original version; or
+
+ d) Limiting the use for publicity purposes of names of licensors or
+ authors of the material; or
+
+ e) Declining to grant rights under trademark law for use of some
+ trade names, trademarks, or service marks; or
+
+ f) Requiring indemnification of licensors and authors of that
+ material by anyone who conveys the material (or modified versions of
+ it) with contractual assumptions of liability to the recipient, for
+ any liability that these contractual assumptions directly impose on
+ those licensors and authors.
+
+ All other non-permissive additional terms are considered "further
+restrictions" within the meaning of section 10. If the Program as you
+received it, or any part of it, contains a notice stating that it is
+governed by this License along with a term that is a further
+restriction, you may remove that term. If a license document contains
+a further restriction but permits relicensing or conveying under this
+License, you may add to a covered work material governed by the terms
+of that license document, provided that the further restriction does
+not survive such relicensing or conveying.
+
+ If you add terms to a covered work in accord with this section, you
+must place, in the relevant source files, a statement of the
+additional terms that apply to those files, or a notice indicating
+where to find the applicable terms.
+
+ Additional terms, permissive or non-permissive, may be stated in the
+form of a separately written license, or stated as exceptions;
+the above requirements apply either way.
+
+ 8. Termination.
+
+ You may not propagate or modify a covered work except as expressly
+provided under this License. Any attempt otherwise to propagate or
+modify it is void, and will automatically terminate your rights under
+this License (including any patent licenses granted under the third
+paragraph of section 11).
+
+ However, if you cease all violation of this License, then your
+license from a particular copyright holder is reinstated (a)
+provisionally, unless and until the copyright holder explicitly and
+finally terminates your license, and (b) permanently, if the copyright
+holder fails to notify you of the violation by some reasonable means
+prior to 60 days after the cessation.
+
+ Moreover, your license from a particular copyright holder is
+reinstated permanently if the copyright holder notifies you of the
+violation by some reasonable means, this is the first time you have
+received notice of violation of this License (for any work) from that
+copyright holder, and you cure the violation prior to 30 days after
+your receipt of the notice.
+
+ Termination of your rights under this section does not terminate the
+licenses of parties who have received copies or rights from you under
+this License. If your rights have been terminated and not permanently
+reinstated, you do not qualify to receive new licenses for the same
+material under section 10.
+
+ 9. Acceptance Not Required for Having Copies.
+
+ You are not required to accept this License in order to receive or
+run a copy of the Program. Ancillary propagation of a covered work
+occurring solely as a consequence of using peer-to-peer transmission
+to receive a copy likewise does not require acceptance. However,
+nothing other than this License grants you permission to propagate or
+modify any covered work. These actions infringe copyright if you do
+not accept this License. Therefore, by modifying or propagating a
+covered work, you indicate your acceptance of this License to do so.
+
+ 10. Automatic Licensing of Downstream Recipients.
+
+ Each time you convey a covered work, the recipient automatically
+receives a license from the original licensors, to run, modify and
+propagate that work, subject to this License. You are not responsible
+for enforcing compliance by third parties with this License.
+
+ An "entity transaction" is a transaction transferring control of an
+organization, or substantially all assets of one, or subdividing an
+organization, or merging organizations. If propagation of a covered
+work results from an entity transaction, each party to that
+transaction who receives a copy of the work also receives whatever
+licenses to the work the party's predecessor in interest had or could
+give under the previous paragraph, plus a right to possession of the
+Corresponding Source of the work from the predecessor in interest, if
+the predecessor has it or can get it with reasonable efforts.
+
+ You may not impose any further restrictions on the exercise of the
+rights granted or affirmed under this License. For example, you may
+not impose a license fee, royalty, or other charge for exercise of
+rights granted under this License, and you may not initiate litigation
+(including a cross-claim or counterclaim in a lawsuit) alleging that
+any patent claim is infringed by making, using, selling, offering for
+sale, or importing the Program or any portion of it.
+
+ 11. Patents.
+
+ A "contributor" is a copyright holder who authorizes use under this
+License of the Program or a work on which the Program is based. The
+work thus licensed is called the contributor's "contributor version".
+
+ A contributor's "essential patent claims" are all patent claims
+owned or controlled by the contributor, whether already acquired or
+hereafter acquired, that would be infringed by some manner, permitted
+by this License, of making, using, or selling its contributor version,
+but do not include claims that would be infringed only as a
+consequence of further modification of the contributor version. For
+purposes of this definition, "control" includes the right to grant
+patent sublicenses in a manner consistent with the requirements of
+this License.
+
+ Each contributor grants you a non-exclusive, worldwide, royalty-free
+patent license under the contributor's essential patent claims, to
+make, use, sell, offer for sale, import and otherwise run, modify and
+propagate the contents of its contributor version.
+
+ In the following three paragraphs, a "patent license" is any express
+agreement or commitment, however denominated, not to enforce a patent
+(such as an express permission to practice a patent or covenant not to
+sue for patent infringement). To "grant" such a patent license to a
+party means to make such an agreement or commitment not to enforce a
+patent against the party.
+
+ If you convey a covered work, knowingly relying on a patent license,
+and the Corresponding Source of the work is not available for anyone
+to copy, free of charge and under the terms of this License, through a
+publicly available network server or other readily accessible means,
+then you must either (1) cause the Corresponding Source to be so
+available, or (2) arrange to deprive yourself of the benefit of the
+patent license for this particular work, or (3) arrange, in a manner
+consistent with the requirements of this License, to extend the patent
+license to downstream recipients. "Knowingly relying" means you have
+actual knowledge that, but for the patent license, your conveying the
+covered work in a country, or your recipient's use of the covered work
+in a country, would infringe one or more identifiable patents in that
+country that you have reason to believe are valid.
+
+ If, pursuant to or in connection with a single transaction or
+arrangement, you convey, or propagate by procuring conveyance of, a
+covered work, and grant a patent license to some of the parties
+receiving the covered work authorizing them to use, propagate, modify
+or convey a specific copy of the covered work, then the patent license
+you grant is automatically extended to all recipients of the covered
+work and works based on it.
+
+ A patent license is "discriminatory" if it does not include within
+the scope of its coverage, prohibits the exercise of, or is
+conditioned on the non-exercise of one or more of the rights that are
+specifically granted under this License. You may not convey a covered
+work if you are a party to an arrangement with a third party that is
+in the business of distributing software, under which you make payment
+to the third party based on the extent of your activity of conveying
+the work, and under which the third party grants, to any of the
+parties who would receive the covered work from you, a discriminatory
+patent license (a) in connection with copies of the covered work
+conveyed by you (or copies made from those copies), or (b) primarily
+for and in connection with specific products or compilations that
+contain the covered work, unless you entered into that arrangement,
+or that patent license was granted, prior to 28 March 2007.
+
+ Nothing in this License shall be construed as excluding or limiting
+any implied license or other defenses to infringement that may
+otherwise be available to you under applicable patent law.
+
+ 12. No Surrender of Others' Freedom.
+
+ If conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot convey a
+covered work so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you may
+not convey it at all. For example, if you agree to terms that obligate you
+to collect a royalty for further conveying from those to whom you convey
+the Program, the only way you could satisfy both those terms and this
+License would be to refrain entirely from conveying the Program.
+
+ 13. Use with the GNU Affero General Public License.
+
+ Notwithstanding any other provision of this License, you have
+permission to link or combine any covered work with a work licensed
+under version 3 of the GNU Affero General Public License into a single
+combined work, and to convey the resulting work. The terms of this
+License will continue to apply to the part which is the covered work,
+but the special requirements of the GNU Affero General Public License,
+section 13, concerning interaction through a network will apply to the
+combination as such.
+
+ 14. Revised Versions of this License.
+
+ The Free Software Foundation may publish revised and/or new versions of
+the GNU General Public License from time to time. Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+ Each version is given a distinguishing version number. If the
+Program specifies that a certain numbered version of the GNU General
+Public License "or any later version" applies to it, you have the
+option of following the terms and conditions either of that numbered
+version or of any later version published by the Free Software
+Foundation. If the Program does not specify a version number of the
+GNU General Public License, you may choose any version ever published
+by the Free Software Foundation.
+
+ If the Program specifies that a proxy can decide which future
+versions of the GNU General Public License can be used, that proxy's
+public statement of acceptance of a version permanently authorizes you
+to choose that version for the Program.
+
+ Later license versions may give you additional or different
+permissions. However, no additional obligations are imposed on any
+author or copyright holder as a result of your choosing to follow a
+later version.
+
+ 15. Disclaimer of Warranty.
+
+ THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
+APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
+HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
+OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
+THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
+IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
+ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+ 16. Limitation of Liability.
+
+ IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
+THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
+GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
+USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
+DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
+PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
+EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGES.
+
+ 17. Interpretation of Sections 15 and 16.
+
+ If the disclaimer of warranty and limitation of liability provided
+above cannot be given local legal effect according to their terms,
+reviewing courts shall apply local law that most closely approximates
+an absolute waiver of all civil liability in connection with the
+Program, unless a warranty or assumption of liability accompanies a
+copy of the Program in return for a fee.
+
+ END OF TERMS AND CONDITIONS
diff --git a/src/ifc2ca/COPYING.LESSER b/src/ifc2ca/COPYING.LESSER
new file mode 100644
index 0000000000..0a041280bd
--- /dev/null
+++ b/src/ifc2ca/COPYING.LESSER
@@ -0,0 +1,165 @@
+ GNU LESSER GENERAL PUBLIC LICENSE
+ Version 3, 29 June 2007
+
+ Copyright (C) 2007 Free Software Foundation, Inc.
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+
+ This version of the GNU Lesser General Public License incorporates
+the terms and conditions of version 3 of the GNU General Public
+License, supplemented by the additional permissions listed below.
+
+ 0. Additional Definitions.
+
+ As used herein, "this License" refers to version 3 of the GNU Lesser
+General Public License, and the "GNU GPL" refers to version 3 of the GNU
+General Public License.
+
+ "The Library" refers to a covered work governed by this License,
+other than an Application or a Combined Work as defined below.
+
+ An "Application" is any work that makes use of an interface provided
+by the Library, but which is not otherwise based on the Library.
+Defining a subclass of a class defined by the Library is deemed a mode
+of using an interface provided by the Library.
+
+ A "Combined Work" is a work produced by combining or linking an
+Application with the Library. The particular version of the Library
+with which the Combined Work was made is also called the "Linked
+Version".
+
+ The "Minimal Corresponding Source" for a Combined Work means the
+Corresponding Source for the Combined Work, excluding any source code
+for portions of the Combined Work that, considered in isolation, are
+based on the Application, and not on the Linked Version.
+
+ The "Corresponding Application Code" for a Combined Work means the
+object code and/or source code for the Application, including any data
+and utility programs needed for reproducing the Combined Work from the
+Application, but excluding the System Libraries of the Combined Work.
+
+ 1. Exception to Section 3 of the GNU GPL.
+
+ You may convey a covered work under sections 3 and 4 of this License
+without being bound by section 3 of the GNU GPL.
+
+ 2. Conveying Modified Versions.
+
+ If you modify a copy of the Library, and, in your modifications, a
+facility refers to a function or data to be supplied by an Application
+that uses the facility (other than as an argument passed when the
+facility is invoked), then you may convey a copy of the modified
+version:
+
+ a) under this License, provided that you make a good faith effort to
+ ensure that, in the event an Application does not supply the
+ function or data, the facility still operates, and performs
+ whatever part of its purpose remains meaningful, or
+
+ b) under the GNU GPL, with none of the additional permissions of
+ this License applicable to that copy.
+
+ 3. Object Code Incorporating Material from Library Header Files.
+
+ The object code form of an Application may incorporate material from
+a header file that is part of the Library. You may convey such object
+code under terms of your choice, provided that, if the incorporated
+material is not limited to numerical parameters, data structure
+layouts and accessors, or small macros, inline functions and templates
+(ten or fewer lines in length), you do both of the following:
+
+ a) Give prominent notice with each copy of the object code that the
+ Library is used in it and that the Library and its use are
+ covered by this License.
+
+ b) Accompany the object code with a copy of the GNU GPL and this license
+ document.
+
+ 4. Combined Works.
+
+ You may convey a Combined Work under terms of your choice that,
+taken together, effectively do not restrict modification of the
+portions of the Library contained in the Combined Work and reverse
+engineering for debugging such modifications, if you also do each of
+the following:
+
+ a) Give prominent notice with each copy of the Combined Work that
+ the Library is used in it and that the Library and its use are
+ covered by this License.
+
+ b) Accompany the Combined Work with a copy of the GNU GPL and this license
+ document.
+
+ c) For a Combined Work that displays copyright notices during
+ execution, include the copyright notice for the Library among
+ these notices, as well as a reference directing the user to the
+ copies of the GNU GPL and this license document.
+
+ d) Do one of the following:
+
+ 0) Convey the Minimal Corresponding Source under the terms of this
+ License, and the Corresponding Application Code in a form
+ suitable for, and under terms that permit, the user to
+ recombine or relink the Application with a modified version of
+ the Linked Version to produce a modified Combined Work, in the
+ manner specified by section 6 of the GNU GPL for conveying
+ Corresponding Source.
+
+ 1) Use a suitable shared library mechanism for linking with the
+ Library. A suitable mechanism is one that (a) uses at run time
+ a copy of the Library already present on the user's computer
+ system, and (b) will operate properly with a modified version
+ of the Library that is interface-compatible with the Linked
+ Version.
+
+ e) Provide Installation Information, but only if you would otherwise
+ be required to provide such information under section 6 of the
+ GNU GPL, and only to the extent that such information is
+ necessary to install and execute a modified version of the
+ Combined Work produced by recombining or relinking the
+ Application with a modified version of the Linked Version. (If
+ you use option 4d0, the Installation Information must accompany
+ the Minimal Corresponding Source and Corresponding Application
+ Code. If you use option 4d1, you must provide the Installation
+ Information in the manner specified by section 6 of the GNU GPL
+ for conveying Corresponding Source.)
+
+ 5. Combined Libraries.
+
+ You may place library facilities that are a work based on the
+Library side by side in a single library together with other library
+facilities that are not Applications and are not covered by this
+License, and convey such a combined library under terms of your
+choice, if you do both of the following:
+
+ a) Accompany the combined library with a copy of the same work based
+ on the Library, uncombined with any other library facilities,
+ conveyed under the terms of this License.
+
+ b) Give prominent notice with the combined library that part of it
+ is a work based on the Library, and explaining where to find the
+ accompanying uncombined form of the same work.
+
+ 6. Revised Versions of the GNU Lesser General Public License.
+
+ The Free Software Foundation may publish revised and/or new versions
+of the GNU Lesser General Public License from time to time. Such new
+versions will be similar in spirit to the present version, but may
+differ in detail to address new problems or concerns.
+
+ Each version is given a distinguishing version number. If the
+Library as you received it specifies that a certain numbered version
+of the GNU Lesser General Public License "or any later version"
+applies to it, you have the option of following the terms and
+conditions either of that published version or of any later version
+published by the Free Software Foundation. If the Library as you
+received it does not specify a version number of the GNU Lesser
+General Public License, you may choose any version of the GNU Lesser
+General Public License ever published by the Free Software Foundation.
+
+ If the Library as you received it specifies that a proxy can decide
+whether future versions of the GNU Lesser General Public License shall
+apply, that proxy's public statement of acceptance of any version is
+permanent authorization for you to choose that version for the
+Library.
diff --git a/src/ifc2ca/ca2ifc.py b/src/ifc2ca/ca2ifc.py
index 1a1cd95361..78899ade84 100644
--- a/src/ifc2ca/ca2ifc.py
+++ b/src/ifc2ca/ca2ifc.py
@@ -1,3 +1,22 @@
+
+# Ifc2CA - IFC Code_Aster utility
+# Copyright (C) 2020, 2021 Ioannis P. Christovasilis
+#
+# This file is part of Ifc2CA.
+#
+# Ifc2CA is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# Ifc2CA is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public License
+# along with Ifc2CA. If not, see .
+
import json
import ifcopenshell
import os
diff --git a/src/ifc2ca/ifc2ca.py b/src/ifc2ca/ifc2ca.py
index b9a3bb452c..0b65c7c6f6 100644
--- a/src/ifc2ca/ifc2ca.py
+++ b/src/ifc2ca/ifc2ca.py
@@ -1,3 +1,22 @@
+
+# Ifc2CA - IFC Code_Aster utility
+# Copyright (C) 2020, 2021 Ioannis P. Christovasilis
+#
+# This file is part of Ifc2CA.
+#
+# Ifc2CA is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# Ifc2CA is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public License
+# along with Ifc2CA. If not, see .
+
from __future__ import division
from __future__ import print_function
import json
diff --git a/src/ifc2ca/scriptCodeAster.py b/src/ifc2ca/scriptCodeAster.py
index 3c42bf6dbf..1741915ecf 100644
--- a/src/ifc2ca/scriptCodeAster.py
+++ b/src/ifc2ca/scriptCodeAster.py
@@ -1,3 +1,22 @@
+
+# Ifc2CA - IFC Code_Aster utility
+# Copyright (C) 2020, 2021 Ioannis P. Christovasilis
+#
+# This file is part of Ifc2CA.
+#
+# Ifc2CA is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# Ifc2CA is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public License
+# along with Ifc2CA. If not, see .
+
import json
import numpy as np
import itertools
diff --git a/src/ifc2ca/scriptCodeAsterBonded.py b/src/ifc2ca/scriptCodeAsterBonded.py
old mode 100755
new mode 100644
index 983f75976a..34d91fc5f4
--- a/src/ifc2ca/scriptCodeAsterBonded.py
+++ b/src/ifc2ca/scriptCodeAsterBonded.py
@@ -1,3 +1,22 @@
+
+# Ifc2CA - IFC Code_Aster utility
+# Copyright (C) 2020, 2021 Ioannis P. Christovasilis
+#
+# This file is part of Ifc2CA.
+#
+# Ifc2CA is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# Ifc2CA is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public License
+# along with Ifc2CA. If not, see .
+
import json
import numpy as np
import itertools
diff --git a/src/ifc2ca/scriptSalome.py b/src/ifc2ca/scriptSalome.py
index 8e761078fe..a5a4e818dd 100644
--- a/src/ifc2ca/scriptSalome.py
+++ b/src/ifc2ca/scriptSalome.py
@@ -1,3 +1,22 @@
+
+# Ifc2CA - IFC Code_Aster utility
+# Copyright (C) 2020, 2021 Ioannis P. Christovasilis
+#
+# This file is part of Ifc2CA.
+#
+# Ifc2CA is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# Ifc2CA is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public License
+# along with Ifc2CA. If not, see .
+
from __future__ import division
from __future__ import print_function
import os
diff --git a/src/ifc2ca/scriptSalomeBonded.py b/src/ifc2ca/scriptSalomeBonded.py
old mode 100755
new mode 100644
index 0d17b1047c..55512cf291
--- a/src/ifc2ca/scriptSalomeBonded.py
+++ b/src/ifc2ca/scriptSalomeBonded.py
@@ -1,3 +1,22 @@
+
+# Ifc2CA - IFC Code_Aster utility
+# Copyright (C) 2020, 2021 Ioannis P. Christovasilis
+#
+# This file is part of Ifc2CA.
+#
+# Ifc2CA is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# Ifc2CA is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public License
+# along with Ifc2CA. If not, see .
+
from __future__ import division
from __future__ import print_function
import os
diff --git a/src/ifc4d/COPYING b/src/ifc4d/COPYING
new file mode 100644
index 0000000000..810fce6e9b
--- /dev/null
+++ b/src/ifc4d/COPYING
@@ -0,0 +1,621 @@
+ GNU GENERAL PUBLIC LICENSE
+ Version 3, 29 June 2007
+
+ Copyright (C) 2007 Free Software Foundation, Inc.
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+ Preamble
+
+ The GNU General Public License is a free, copyleft license for
+software and other kinds of works.
+
+ The licenses for most software and other practical works are designed
+to take away your freedom to share and change the works. By contrast,
+the GNU General Public License is intended to guarantee your freedom to
+share and change all versions of a program--to make sure it remains free
+software for all its users. We, the Free Software Foundation, use the
+GNU General Public License for most of our software; it applies also to
+any other work released this way by its authors. You can apply it to
+your programs, too.
+
+ When we speak of free software, we are referring to freedom, not
+price. Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+them if you wish), that you receive source code or can get it if you
+want it, that you can change the software or use pieces of it in new
+free programs, and that you know you can do these things.
+
+ To protect your rights, we need to prevent others from denying you
+these rights or asking you to surrender the rights. Therefore, you have
+certain responsibilities if you distribute copies of the software, or if
+you modify it: responsibilities to respect the freedom of others.
+
+ For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must pass on to the recipients the same
+freedoms that you received. You must make sure that they, too, receive
+or can get the source code. And you must show them these terms so they
+know their rights.
+
+ Developers that use the GNU GPL protect your rights with two steps:
+(1) assert copyright on the software, and (2) offer you this License
+giving you legal permission to copy, distribute and/or modify it.
+
+ For the developers' and authors' protection, the GPL clearly explains
+that there is no warranty for this free software. For both users' and
+authors' sake, the GPL requires that modified versions be marked as
+changed, so that their problems will not be attributed erroneously to
+authors of previous versions.
+
+ Some devices are designed to deny users access to install or run
+modified versions of the software inside them, although the manufacturer
+can do so. This is fundamentally incompatible with the aim of
+protecting users' freedom to change the software. The systematic
+pattern of such abuse occurs in the area of products for individuals to
+use, which is precisely where it is most unacceptable. Therefore, we
+have designed this version of the GPL to prohibit the practice for those
+products. If such problems arise substantially in other domains, we
+stand ready to extend this provision to those domains in future versions
+of the GPL, as needed to protect the freedom of users.
+
+ Finally, every program is threatened constantly by software patents.
+States should not allow patents to restrict development and use of
+software on general-purpose computers, but in those that do, we wish to
+avoid the special danger that patents applied to a free program could
+make it effectively proprietary. To prevent this, the GPL assures that
+patents cannot be used to render the program non-free.
+
+ The precise terms and conditions for copying, distribution and
+modification follow.
+
+ TERMS AND CONDITIONS
+
+ 0. Definitions.
+
+ "This License" refers to version 3 of the GNU General Public License.
+
+ "Copyright" also means copyright-like laws that apply to other kinds of
+works, such as semiconductor masks.
+
+ "The Program" refers to any copyrightable work licensed under this
+License. Each licensee is addressed as "you". "Licensees" and
+"recipients" may be individuals or organizations.
+
+ To "modify" a work means to copy from or adapt all or part of the work
+in a fashion requiring copyright permission, other than the making of an
+exact copy. The resulting work is called a "modified version" of the
+earlier work or a work "based on" the earlier work.
+
+ A "covered work" means either the unmodified Program or a work based
+on the Program.
+
+ To "propagate" a work means to do anything with it that, without
+permission, would make you directly or secondarily liable for
+infringement under applicable copyright law, except executing it on a
+computer or modifying a private copy. Propagation includes copying,
+distribution (with or without modification), making available to the
+public, and in some countries other activities as well.
+
+ To "convey" a work means any kind of propagation that enables other
+parties to make or receive copies. Mere interaction with a user through
+a computer network, with no transfer of a copy, is not conveying.
+
+ An interactive user interface displays "Appropriate Legal Notices"
+to the extent that it includes a convenient and prominently visible
+feature that (1) displays an appropriate copyright notice, and (2)
+tells the user that there is no warranty for the work (except to the
+extent that warranties are provided), that licensees may convey the
+work under this License, and how to view a copy of this License. If
+the interface presents a list of user commands or options, such as a
+menu, a prominent item in the list meets this criterion.
+
+ 1. Source Code.
+
+ The "source code" for a work means the preferred form of the work
+for making modifications to it. "Object code" means any non-source
+form of a work.
+
+ A "Standard Interface" means an interface that either is an official
+standard defined by a recognized standards body, or, in the case of
+interfaces specified for a particular programming language, one that
+is widely used among developers working in that language.
+
+ The "System Libraries" of an executable work include anything, other
+than the work as a whole, that (a) is included in the normal form of
+packaging a Major Component, but which is not part of that Major
+Component, and (b) serves only to enable use of the work with that
+Major Component, or to implement a Standard Interface for which an
+implementation is available to the public in source code form. A
+"Major Component", in this context, means a major essential component
+(kernel, window system, and so on) of the specific operating system
+(if any) on which the executable work runs, or a compiler used to
+produce the work, or an object code interpreter used to run it.
+
+ The "Corresponding Source" for a work in object code form means all
+the source code needed to generate, install, and (for an executable
+work) run the object code and to modify the work, including scripts to
+control those activities. However, it does not include the work's
+System Libraries, or general-purpose tools or generally available free
+programs which are used unmodified in performing those activities but
+which are not part of the work. For example, Corresponding Source
+includes interface definition files associated with source files for
+the work, and the source code for shared libraries and dynamically
+linked subprograms that the work is specifically designed to require,
+such as by intimate data communication or control flow between those
+subprograms and other parts of the work.
+
+ The Corresponding Source need not include anything that users
+can regenerate automatically from other parts of the Corresponding
+Source.
+
+ The Corresponding Source for a work in source code form is that
+same work.
+
+ 2. Basic Permissions.
+
+ All rights granted under this License are granted for the term of
+copyright on the Program, and are irrevocable provided the stated
+conditions are met. This License explicitly affirms your unlimited
+permission to run the unmodified Program. The output from running a
+covered work is covered by this License only if the output, given its
+content, constitutes a covered work. This License acknowledges your
+rights of fair use or other equivalent, as provided by copyright law.
+
+ You may make, run and propagate covered works that you do not
+convey, without conditions so long as your license otherwise remains
+in force. You may convey covered works to others for the sole purpose
+of having them make modifications exclusively for you, or provide you
+with facilities for running those works, provided that you comply with
+the terms of this License in conveying all material for which you do
+not control copyright. Those thus making or running the covered works
+for you must do so exclusively on your behalf, under your direction
+and control, on terms that prohibit them from making any copies of
+your copyrighted material outside their relationship with you.
+
+ Conveying under any other circumstances is permitted solely under
+the conditions stated below. Sublicensing is not allowed; section 10
+makes it unnecessary.
+
+ 3. Protecting Users' Legal Rights From Anti-Circumvention Law.
+
+ No covered work shall be deemed part of an effective technological
+measure under any applicable law fulfilling obligations under article
+11 of the WIPO copyright treaty adopted on 20 December 1996, or
+similar laws prohibiting or restricting circumvention of such
+measures.
+
+ When you convey a covered work, you waive any legal power to forbid
+circumvention of technological measures to the extent such circumvention
+is effected by exercising rights under this License with respect to
+the covered work, and you disclaim any intention to limit operation or
+modification of the work as a means of enforcing, against the work's
+users, your or third parties' legal rights to forbid circumvention of
+technological measures.
+
+ 4. Conveying Verbatim Copies.
+
+ You may convey verbatim copies of the Program's source code as you
+receive it, in any medium, provided that you conspicuously and
+appropriately publish on each copy an appropriate copyright notice;
+keep intact all notices stating that this License and any
+non-permissive terms added in accord with section 7 apply to the code;
+keep intact all notices of the absence of any warranty; and give all
+recipients a copy of this License along with the Program.
+
+ You may charge any price or no price for each copy that you convey,
+and you may offer support or warranty protection for a fee.
+
+ 5. Conveying Modified Source Versions.
+
+ You may convey a work based on the Program, or the modifications to
+produce it from the Program, in the form of source code under the
+terms of section 4, provided that you also meet all of these conditions:
+
+ a) The work must carry prominent notices stating that you modified
+ it, and giving a relevant date.
+
+ b) The work must carry prominent notices stating that it is
+ released under this License and any conditions added under section
+ 7. This requirement modifies the requirement in section 4 to
+ "keep intact all notices".
+
+ c) You must license the entire work, as a whole, under this
+ License to anyone who comes into possession of a copy. This
+ License will therefore apply, along with any applicable section 7
+ additional terms, to the whole of the work, and all its parts,
+ regardless of how they are packaged. This License gives no
+ permission to license the work in any other way, but it does not
+ invalidate such permission if you have separately received it.
+
+ d) If the work has interactive user interfaces, each must display
+ Appropriate Legal Notices; however, if the Program has interactive
+ interfaces that do not display Appropriate Legal Notices, your
+ work need not make them do so.
+
+ A compilation of a covered work with other separate and independent
+works, which are not by their nature extensions of the covered work,
+and which are not combined with it such as to form a larger program,
+in or on a volume of a storage or distribution medium, is called an
+"aggregate" if the compilation and its resulting copyright are not
+used to limit the access or legal rights of the compilation's users
+beyond what the individual works permit. Inclusion of a covered work
+in an aggregate does not cause this License to apply to the other
+parts of the aggregate.
+
+ 6. Conveying Non-Source Forms.
+
+ You may convey a covered work in object code form under the terms
+of sections 4 and 5, provided that you also convey the
+machine-readable Corresponding Source under the terms of this License,
+in one of these ways:
+
+ a) Convey the object code in, or embodied in, a physical product
+ (including a physical distribution medium), accompanied by the
+ Corresponding Source fixed on a durable physical medium
+ customarily used for software interchange.
+
+ b) Convey the object code in, or embodied in, a physical product
+ (including a physical distribution medium), accompanied by a
+ written offer, valid for at least three years and valid for as
+ long as you offer spare parts or customer support for that product
+ model, to give anyone who possesses the object code either (1) a
+ copy of the Corresponding Source for all the software in the
+ product that is covered by this License, on a durable physical
+ medium customarily used for software interchange, for a price no
+ more than your reasonable cost of physically performing this
+ conveying of source, or (2) access to copy the
+ Corresponding Source from a network server at no charge.
+
+ c) Convey individual copies of the object code with a copy of the
+ written offer to provide the Corresponding Source. This
+ alternative is allowed only occasionally and noncommercially, and
+ only if you received the object code with such an offer, in accord
+ with subsection 6b.
+
+ d) Convey the object code by offering access from a designated
+ place (gratis or for a charge), and offer equivalent access to the
+ Corresponding Source in the same way through the same place at no
+ further charge. You need not require recipients to copy the
+ Corresponding Source along with the object code. If the place to
+ copy the object code is a network server, the Corresponding Source
+ may be on a different server (operated by you or a third party)
+ that supports equivalent copying facilities, provided you maintain
+ clear directions next to the object code saying where to find the
+ Corresponding Source. Regardless of what server hosts the
+ Corresponding Source, you remain obligated to ensure that it is
+ available for as long as needed to satisfy these requirements.
+
+ e) Convey the object code using peer-to-peer transmission, provided
+ you inform other peers where the object code and Corresponding
+ Source of the work are being offered to the general public at no
+ charge under subsection 6d.
+
+ A separable portion of the object code, whose source code is excluded
+from the Corresponding Source as a System Library, need not be
+included in conveying the object code work.
+
+ A "User Product" is either (1) a "consumer product", which means any
+tangible personal property which is normally used for personal, family,
+or household purposes, or (2) anything designed or sold for incorporation
+into a dwelling. In determining whether a product is a consumer product,
+doubtful cases shall be resolved in favor of coverage. For a particular
+product received by a particular user, "normally used" refers to a
+typical or common use of that class of product, regardless of the status
+of the particular user or of the way in which the particular user
+actually uses, or expects or is expected to use, the product. A product
+is a consumer product regardless of whether the product has substantial
+commercial, industrial or non-consumer uses, unless such uses represent
+the only significant mode of use of the product.
+
+ "Installation Information" for a User Product means any methods,
+procedures, authorization keys, or other information required to install
+and execute modified versions of a covered work in that User Product from
+a modified version of its Corresponding Source. The information must
+suffice to ensure that the continued functioning of the modified object
+code is in no case prevented or interfered with solely because
+modification has been made.
+
+ If you convey an object code work under this section in, or with, or
+specifically for use in, a User Product, and the conveying occurs as
+part of a transaction in which the right of possession and use of the
+User Product is transferred to the recipient in perpetuity or for a
+fixed term (regardless of how the transaction is characterized), the
+Corresponding Source conveyed under this section must be accompanied
+by the Installation Information. But this requirement does not apply
+if neither you nor any third party retains the ability to install
+modified object code on the User Product (for example, the work has
+been installed in ROM).
+
+ The requirement to provide Installation Information does not include a
+requirement to continue to provide support service, warranty, or updates
+for a work that has been modified or installed by the recipient, or for
+the User Product in which it has been modified or installed. Access to a
+network may be denied when the modification itself materially and
+adversely affects the operation of the network or violates the rules and
+protocols for communication across the network.
+
+ Corresponding Source conveyed, and Installation Information provided,
+in accord with this section must be in a format that is publicly
+documented (and with an implementation available to the public in
+source code form), and must require no special password or key for
+unpacking, reading or copying.
+
+ 7. Additional Terms.
+
+ "Additional permissions" are terms that supplement the terms of this
+License by making exceptions from one or more of its conditions.
+Additional permissions that are applicable to the entire Program shall
+be treated as though they were included in this License, to the extent
+that they are valid under applicable law. If additional permissions
+apply only to part of the Program, that part may be used separately
+under those permissions, but the entire Program remains governed by
+this License without regard to the additional permissions.
+
+ When you convey a copy of a covered work, you may at your option
+remove any additional permissions from that copy, or from any part of
+it. (Additional permissions may be written to require their own
+removal in certain cases when you modify the work.) You may place
+additional permissions on material, added by you to a covered work,
+for which you have or can give appropriate copyright permission.
+
+ Notwithstanding any other provision of this License, for material you
+add to a covered work, you may (if authorized by the copyright holders of
+that material) supplement the terms of this License with terms:
+
+ a) Disclaiming warranty or limiting liability differently from the
+ terms of sections 15 and 16 of this License; or
+
+ b) Requiring preservation of specified reasonable legal notices or
+ author attributions in that material or in the Appropriate Legal
+ Notices displayed by works containing it; or
+
+ c) Prohibiting misrepresentation of the origin of that material, or
+ requiring that modified versions of such material be marked in
+ reasonable ways as different from the original version; or
+
+ d) Limiting the use for publicity purposes of names of licensors or
+ authors of the material; or
+
+ e) Declining to grant rights under trademark law for use of some
+ trade names, trademarks, or service marks; or
+
+ f) Requiring indemnification of licensors and authors of that
+ material by anyone who conveys the material (or modified versions of
+ it) with contractual assumptions of liability to the recipient, for
+ any liability that these contractual assumptions directly impose on
+ those licensors and authors.
+
+ All other non-permissive additional terms are considered "further
+restrictions" within the meaning of section 10. If the Program as you
+received it, or any part of it, contains a notice stating that it is
+governed by this License along with a term that is a further
+restriction, you may remove that term. If a license document contains
+a further restriction but permits relicensing or conveying under this
+License, you may add to a covered work material governed by the terms
+of that license document, provided that the further restriction does
+not survive such relicensing or conveying.
+
+ If you add terms to a covered work in accord with this section, you
+must place, in the relevant source files, a statement of the
+additional terms that apply to those files, or a notice indicating
+where to find the applicable terms.
+
+ Additional terms, permissive or non-permissive, may be stated in the
+form of a separately written license, or stated as exceptions;
+the above requirements apply either way.
+
+ 8. Termination.
+
+ You may not propagate or modify a covered work except as expressly
+provided under this License. Any attempt otherwise to propagate or
+modify it is void, and will automatically terminate your rights under
+this License (including any patent licenses granted under the third
+paragraph of section 11).
+
+ However, if you cease all violation of this License, then your
+license from a particular copyright holder is reinstated (a)
+provisionally, unless and until the copyright holder explicitly and
+finally terminates your license, and (b) permanently, if the copyright
+holder fails to notify you of the violation by some reasonable means
+prior to 60 days after the cessation.
+
+ Moreover, your license from a particular copyright holder is
+reinstated permanently if the copyright holder notifies you of the
+violation by some reasonable means, this is the first time you have
+received notice of violation of this License (for any work) from that
+copyright holder, and you cure the violation prior to 30 days after
+your receipt of the notice.
+
+ Termination of your rights under this section does not terminate the
+licenses of parties who have received copies or rights from you under
+this License. If your rights have been terminated and not permanently
+reinstated, you do not qualify to receive new licenses for the same
+material under section 10.
+
+ 9. Acceptance Not Required for Having Copies.
+
+ You are not required to accept this License in order to receive or
+run a copy of the Program. Ancillary propagation of a covered work
+occurring solely as a consequence of using peer-to-peer transmission
+to receive a copy likewise does not require acceptance. However,
+nothing other than this License grants you permission to propagate or
+modify any covered work. These actions infringe copyright if you do
+not accept this License. Therefore, by modifying or propagating a
+covered work, you indicate your acceptance of this License to do so.
+
+ 10. Automatic Licensing of Downstream Recipients.
+
+ Each time you convey a covered work, the recipient automatically
+receives a license from the original licensors, to run, modify and
+propagate that work, subject to this License. You are not responsible
+for enforcing compliance by third parties with this License.
+
+ An "entity transaction" is a transaction transferring control of an
+organization, or substantially all assets of one, or subdividing an
+organization, or merging organizations. If propagation of a covered
+work results from an entity transaction, each party to that
+transaction who receives a copy of the work also receives whatever
+licenses to the work the party's predecessor in interest had or could
+give under the previous paragraph, plus a right to possession of the
+Corresponding Source of the work from the predecessor in interest, if
+the predecessor has it or can get it with reasonable efforts.
+
+ You may not impose any further restrictions on the exercise of the
+rights granted or affirmed under this License. For example, you may
+not impose a license fee, royalty, or other charge for exercise of
+rights granted under this License, and you may not initiate litigation
+(including a cross-claim or counterclaim in a lawsuit) alleging that
+any patent claim is infringed by making, using, selling, offering for
+sale, or importing the Program or any portion of it.
+
+ 11. Patents.
+
+ A "contributor" is a copyright holder who authorizes use under this
+License of the Program or a work on which the Program is based. The
+work thus licensed is called the contributor's "contributor version".
+
+ A contributor's "essential patent claims" are all patent claims
+owned or controlled by the contributor, whether already acquired or
+hereafter acquired, that would be infringed by some manner, permitted
+by this License, of making, using, or selling its contributor version,
+but do not include claims that would be infringed only as a
+consequence of further modification of the contributor version. For
+purposes of this definition, "control" includes the right to grant
+patent sublicenses in a manner consistent with the requirements of
+this License.
+
+ Each contributor grants you a non-exclusive, worldwide, royalty-free
+patent license under the contributor's essential patent claims, to
+make, use, sell, offer for sale, import and otherwise run, modify and
+propagate the contents of its contributor version.
+
+ In the following three paragraphs, a "patent license" is any express
+agreement or commitment, however denominated, not to enforce a patent
+(such as an express permission to practice a patent or covenant not to
+sue for patent infringement). To "grant" such a patent license to a
+party means to make such an agreement or commitment not to enforce a
+patent against the party.
+
+ If you convey a covered work, knowingly relying on a patent license,
+and the Corresponding Source of the work is not available for anyone
+to copy, free of charge and under the terms of this License, through a
+publicly available network server or other readily accessible means,
+then you must either (1) cause the Corresponding Source to be so
+available, or (2) arrange to deprive yourself of the benefit of the
+patent license for this particular work, or (3) arrange, in a manner
+consistent with the requirements of this License, to extend the patent
+license to downstream recipients. "Knowingly relying" means you have
+actual knowledge that, but for the patent license, your conveying the
+covered work in a country, or your recipient's use of the covered work
+in a country, would infringe one or more identifiable patents in that
+country that you have reason to believe are valid.
+
+ If, pursuant to or in connection with a single transaction or
+arrangement, you convey, or propagate by procuring conveyance of, a
+covered work, and grant a patent license to some of the parties
+receiving the covered work authorizing them to use, propagate, modify
+or convey a specific copy of the covered work, then the patent license
+you grant is automatically extended to all recipients of the covered
+work and works based on it.
+
+ A patent license is "discriminatory" if it does not include within
+the scope of its coverage, prohibits the exercise of, or is
+conditioned on the non-exercise of one or more of the rights that are
+specifically granted under this License. You may not convey a covered
+work if you are a party to an arrangement with a third party that is
+in the business of distributing software, under which you make payment
+to the third party based on the extent of your activity of conveying
+the work, and under which the third party grants, to any of the
+parties who would receive the covered work from you, a discriminatory
+patent license (a) in connection with copies of the covered work
+conveyed by you (or copies made from those copies), or (b) primarily
+for and in connection with specific products or compilations that
+contain the covered work, unless you entered into that arrangement,
+or that patent license was granted, prior to 28 March 2007.
+
+ Nothing in this License shall be construed as excluding or limiting
+any implied license or other defenses to infringement that may
+otherwise be available to you under applicable patent law.
+
+ 12. No Surrender of Others' Freedom.
+
+ If conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot convey a
+covered work so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you may
+not convey it at all. For example, if you agree to terms that obligate you
+to collect a royalty for further conveying from those to whom you convey
+the Program, the only way you could satisfy both those terms and this
+License would be to refrain entirely from conveying the Program.
+
+ 13. Use with the GNU Affero General Public License.
+
+ Notwithstanding any other provision of this License, you have
+permission to link or combine any covered work with a work licensed
+under version 3 of the GNU Affero General Public License into a single
+combined work, and to convey the resulting work. The terms of this
+License will continue to apply to the part which is the covered work,
+but the special requirements of the GNU Affero General Public License,
+section 13, concerning interaction through a network will apply to the
+combination as such.
+
+ 14. Revised Versions of this License.
+
+ The Free Software Foundation may publish revised and/or new versions of
+the GNU General Public License from time to time. Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+ Each version is given a distinguishing version number. If the
+Program specifies that a certain numbered version of the GNU General
+Public License "or any later version" applies to it, you have the
+option of following the terms and conditions either of that numbered
+version or of any later version published by the Free Software
+Foundation. If the Program does not specify a version number of the
+GNU General Public License, you may choose any version ever published
+by the Free Software Foundation.
+
+ If the Program specifies that a proxy can decide which future
+versions of the GNU General Public License can be used, that proxy's
+public statement of acceptance of a version permanently authorizes you
+to choose that version for the Program.
+
+ Later license versions may give you additional or different
+permissions. However, no additional obligations are imposed on any
+author or copyright holder as a result of your choosing to follow a
+later version.
+
+ 15. Disclaimer of Warranty.
+
+ THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
+APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
+HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
+OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
+THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
+IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
+ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+ 16. Limitation of Liability.
+
+ IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
+THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
+GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
+USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
+DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
+PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
+EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGES.
+
+ 17. Interpretation of Sections 15 and 16.
+
+ If the disclaimer of warranty and limitation of liability provided
+above cannot be given local legal effect according to their terms,
+reviewing courts shall apply local law that most closely approximates
+an absolute waiver of all civil liability in connection with the
+Program, unless a warranty or assumption of liability accompanies a
+copy of the Program in return for a fee.
+
+ END OF TERMS AND CONDITIONS
diff --git a/src/ifc4d/COPYING.LESSER b/src/ifc4d/COPYING.LESSER
new file mode 100644
index 0000000000..0a041280bd
--- /dev/null
+++ b/src/ifc4d/COPYING.LESSER
@@ -0,0 +1,165 @@
+ GNU LESSER GENERAL PUBLIC LICENSE
+ Version 3, 29 June 2007
+
+ Copyright (C) 2007 Free Software Foundation, Inc.
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+
+ This version of the GNU Lesser General Public License incorporates
+the terms and conditions of version 3 of the GNU General Public
+License, supplemented by the additional permissions listed below.
+
+ 0. Additional Definitions.
+
+ As used herein, "this License" refers to version 3 of the GNU Lesser
+General Public License, and the "GNU GPL" refers to version 3 of the GNU
+General Public License.
+
+ "The Library" refers to a covered work governed by this License,
+other than an Application or a Combined Work as defined below.
+
+ An "Application" is any work that makes use of an interface provided
+by the Library, but which is not otherwise based on the Library.
+Defining a subclass of a class defined by the Library is deemed a mode
+of using an interface provided by the Library.
+
+ A "Combined Work" is a work produced by combining or linking an
+Application with the Library. The particular version of the Library
+with which the Combined Work was made is also called the "Linked
+Version".
+
+ The "Minimal Corresponding Source" for a Combined Work means the
+Corresponding Source for the Combined Work, excluding any source code
+for portions of the Combined Work that, considered in isolation, are
+based on the Application, and not on the Linked Version.
+
+ The "Corresponding Application Code" for a Combined Work means the
+object code and/or source code for the Application, including any data
+and utility programs needed for reproducing the Combined Work from the
+Application, but excluding the System Libraries of the Combined Work.
+
+ 1. Exception to Section 3 of the GNU GPL.
+
+ You may convey a covered work under sections 3 and 4 of this License
+without being bound by section 3 of the GNU GPL.
+
+ 2. Conveying Modified Versions.
+
+ If you modify a copy of the Library, and, in your modifications, a
+facility refers to a function or data to be supplied by an Application
+that uses the facility (other than as an argument passed when the
+facility is invoked), then you may convey a copy of the modified
+version:
+
+ a) under this License, provided that you make a good faith effort to
+ ensure that, in the event an Application does not supply the
+ function or data, the facility still operates, and performs
+ whatever part of its purpose remains meaningful, or
+
+ b) under the GNU GPL, with none of the additional permissions of
+ this License applicable to that copy.
+
+ 3. Object Code Incorporating Material from Library Header Files.
+
+ The object code form of an Application may incorporate material from
+a header file that is part of the Library. You may convey such object
+code under terms of your choice, provided that, if the incorporated
+material is not limited to numerical parameters, data structure
+layouts and accessors, or small macros, inline functions and templates
+(ten or fewer lines in length), you do both of the following:
+
+ a) Give prominent notice with each copy of the object code that the
+ Library is used in it and that the Library and its use are
+ covered by this License.
+
+ b) Accompany the object code with a copy of the GNU GPL and this license
+ document.
+
+ 4. Combined Works.
+
+ You may convey a Combined Work under terms of your choice that,
+taken together, effectively do not restrict modification of the
+portions of the Library contained in the Combined Work and reverse
+engineering for debugging such modifications, if you also do each of
+the following:
+
+ a) Give prominent notice with each copy of the Combined Work that
+ the Library is used in it and that the Library and its use are
+ covered by this License.
+
+ b) Accompany the Combined Work with a copy of the GNU GPL and this license
+ document.
+
+ c) For a Combined Work that displays copyright notices during
+ execution, include the copyright notice for the Library among
+ these notices, as well as a reference directing the user to the
+ copies of the GNU GPL and this license document.
+
+ d) Do one of the following:
+
+ 0) Convey the Minimal Corresponding Source under the terms of this
+ License, and the Corresponding Application Code in a form
+ suitable for, and under terms that permit, the user to
+ recombine or relink the Application with a modified version of
+ the Linked Version to produce a modified Combined Work, in the
+ manner specified by section 6 of the GNU GPL for conveying
+ Corresponding Source.
+
+ 1) Use a suitable shared library mechanism for linking with the
+ Library. A suitable mechanism is one that (a) uses at run time
+ a copy of the Library already present on the user's computer
+ system, and (b) will operate properly with a modified version
+ of the Library that is interface-compatible with the Linked
+ Version.
+
+ e) Provide Installation Information, but only if you would otherwise
+ be required to provide such information under section 6 of the
+ GNU GPL, and only to the extent that such information is
+ necessary to install and execute a modified version of the
+ Combined Work produced by recombining or relinking the
+ Application with a modified version of the Linked Version. (If
+ you use option 4d0, the Installation Information must accompany
+ the Minimal Corresponding Source and Corresponding Application
+ Code. If you use option 4d1, you must provide the Installation
+ Information in the manner specified by section 6 of the GNU GPL
+ for conveying Corresponding Source.)
+
+ 5. Combined Libraries.
+
+ You may place library facilities that are a work based on the
+Library side by side in a single library together with other library
+facilities that are not Applications and are not covered by this
+License, and convey such a combined library under terms of your
+choice, if you do both of the following:
+
+ a) Accompany the combined library with a copy of the same work based
+ on the Library, uncombined with any other library facilities,
+ conveyed under the terms of this License.
+
+ b) Give prominent notice with the combined library that part of it
+ is a work based on the Library, and explaining where to find the
+ accompanying uncombined form of the same work.
+
+ 6. Revised Versions of the GNU Lesser General Public License.
+
+ The Free Software Foundation may publish revised and/or new versions
+of the GNU Lesser General Public License from time to time. Such new
+versions will be similar in spirit to the present version, but may
+differ in detail to address new problems or concerns.
+
+ Each version is given a distinguishing version number. If the
+Library as you received it specifies that a certain numbered version
+of the GNU Lesser General Public License "or any later version"
+applies to it, you have the option of following the terms and
+conditions either of that published version or of any later version
+published by the Free Software Foundation. If the Library as you
+received it does not specify a version number of the GNU Lesser
+General Public License, you may choose any version of the GNU Lesser
+General Public License ever published by the Free Software Foundation.
+
+ If the Library as you received it specifies that a proxy can decide
+whether future versions of the GNU Lesser General Public License shall
+apply, that proxy's public statement of acceptance of any version is
+permanent authorization for you to choose that version for the
+Library.
diff --git a/src/ifc4d/README.md b/src/ifc4d/README.md
new file mode 100644
index 0000000000..c841b270ea
--- /dev/null
+++ b/src/ifc4d/README.md
@@ -0,0 +1,16 @@
+# ifc4d
+
+Ifc4D contains a series of utilities for converting to and from various 4D software. Currently supported:
+
+ - Microsoft Project to IFC
+ - Oracle Primavera 6 (P6) to IFC
+
+Planned (would you like to contribute? Please reach out!):
+
+ - IFC to Microsoft Project
+ - IFC to Oracle Primavera 6 (P6)
+ - Asta Powerproject to IFC
+ - IFC to Asta Powerproject
+ - LibreProject to IFC
+ - IFC to LibreProject
+ - IFC to Gantt
diff --git a/src/ifcp6/ifcp6/msp2ifc.py b/src/ifc4d/ifc4d/msp2ifc.py
similarity index 86%
rename from src/ifcp6/ifcp6/msp2ifc.py
rename to src/ifc4d/ifc4d/msp2ifc.py
index 29cc744d8a..dee30564ef 100644
--- a/src/ifcp6/ifcp6/msp2ifc.py
+++ b/src/ifc4d/ifc4d/msp2ifc.py
@@ -1,10 +1,29 @@
+
+# Ifc4D - IFC scheduling utility
+# Copyright (C) 2021 Dion Moult
+#
+# This file is part of Ifc4D.
+#
+# Ifc4D is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# Ifc4D is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public License
+# along with Ifc4D. If not, see .
+
import datetime
from datetime import timedelta
import ifcopenshell
import ifcopenshell.api
import ifcopenshell.util.date
import xml.etree.ElementTree as ET
-import blenderbim.bim.ifc
+
class MSP2Ifc:
def __init__(self):
@@ -18,15 +37,6 @@ class MSP2Ifc:
self.root_activites = []
self.tasks = {}
self.relationships = {}
- self.day_map = {
- "1": 1,
- "2": 2,
- "3": 3,
- "4": 4,
- "5": 5,
- "6": 6,
- "7": 7,
- }
def execute(self):
self.parse_xml()
@@ -42,7 +52,6 @@ class MSP2Ifc:
self.parse_task_xml(project)
self.parse_calendar_xml(project)
-
def parse_relationship_xml(self, task):
relationships = {}
id = 0
@@ -50,7 +59,7 @@ class MSP2Ifc:
for relationship in task.findall("pr:PredecessorLink", self.ns):
relationships[id] = {
"PredecessorTask": relationship.find("pr:PredecessorUID", self.ns).text,
- "Type": relationship.find("pr:Type", self.ns).text
+ "Type": relationship.find("pr:Type", self.ns).text,
}
id += 1
return relationships
@@ -64,7 +73,7 @@ class MSP2Ifc:
outline_level = int(task.find("pr:OutlineLevel", self.ns).text)
if outline_level != 0:
- parent_task = self.tasks[self.outline_parents[outline_level-1]]
+ parent_task = self.tasks[self.outline_parents[outline_level - 1]]
parent_task["subtasks"].append(task_id)
self.outline_level = outline_level
self.outline_parents[outline_level] = task_id
@@ -75,7 +84,7 @@ class MSP2Ifc:
"OutlineLevel": outline_level,
"Start": datetime.datetime.fromisoformat(task.find("pr:Start", self.ns).text),
"Finish": datetime.datetime.fromisoformat(task.find("pr:Finish", self.ns).text),
- "Duration": ifcopenshell.util.date.ifc2datetime(task.find("pr:Duration", self.ns).text),
+ "Duration": ifcopenshell.util.date.ifc2datetime(task.find("pr:Duration", self.ns).text),
"Priority": task.find("pr:Priority", self.ns).text,
"CalendarUID": task.find("pr:CalendarUID", self.ns).text,
"PredecessorTasks": relationships if relationships else None,
@@ -83,14 +92,11 @@ class MSP2Ifc:
"ifc": None,
}
-
def parse_calendar_xml(self, project):
for calendar in project.find("pr:Calendars", self.ns).findall("pr:Calendar", self.ns):
calendar_id = calendar.find("pr:UID", self.ns).text
week_days = []
- for week_day in calendar.find("pr:WeekDays", self.ns).findall(
- "pr:WeekDay", self.ns
- ):
+ for week_day in calendar.find("pr:WeekDays", self.ns).findall("pr:WeekDay", self.ns):
working_times = []
if week_day.find("pr:WorkingTimes", self.ns):
for working_time in week_day.find("pr:WorkingTimes", self.ns).findall("pr:WorkingTime", self.ns):
@@ -117,7 +123,7 @@ class MSP2Ifc:
def create_ifc(self):
if not self.file:
- self.file = self.create_boilerplate_ifc()
+ self.create_boilerplate_ifc()
if not self.work_plan:
self.work_plan = ifcopenshell.api.run("sequence.add_work_plan", self.file)
work_schedule = self.create_work_schedule()
@@ -142,9 +148,7 @@ class MSP2Ifc:
def create_calendars(self):
for calendar in self.calendars.values():
- calendar["ifc"] = ifcopenshell.api.run(
- "sequence.add_work_calendar", self.file, name=calendar["Name"]
- )
+ calendar["ifc"] = ifcopenshell.api.run("sequence.add_work_calendar", self.file, name=calendar["Name"])
self.process_working_week(calendar["StandardWorkWeek"], calendar["ifc"])
def create_task(self, task, work_schedule=None, parent_task=None):
@@ -188,12 +192,12 @@ class MSP2Ifc:
"sequence.add_work_time", self.file, work_calendar=calendar, time_type="WorkingTimes"
)
- weekday_component = [self.day_map[day["DayType"]]]
+ weekday_component = [int(day["DayType"])]
for day2 in week:
if day["DayType"] == day2["DayType"]:
continue
if day["WorkingTimes"] == day2["WorkingTimes"]:
- weekday_component.append(self.day_map[day2["DayType"]])
+ weekday_component.append(int(day2["DayType"]))
# Don't process the next day, as we can group it
day2["ifc"] = day["ifc"]
@@ -238,13 +242,13 @@ class MSP2Ifc:
rel_sequence = ifcopenshell.api.run(
"sequence.assign_sequence",
self.file,
- related_process = task["ifc"],
- relating_process = self.tasks[predecessor["PredecessorTask"]]["ifc"]
+ related_process=task["ifc"],
+ relating_process=self.tasks[predecessor["PredecessorTask"]]["ifc"],
)
if predecessor["Type"]:
ifcopenshell.api.run(
"sequence.edit_sequence",
self.file,
rel_sequence=rel_sequence,
- attributes={"SequenceType": self.sequence_type_map[predecessor["Type"]]}
+ attributes={"SequenceType": self.sequence_type_map[predecessor["Type"]]},
)
diff --git a/src/ifcp6/ifcp6/p62ifc.py b/src/ifc4d/ifc4d/p62ifc.py
similarity index 95%
rename from src/ifcp6/ifcp6/p62ifc.py
rename to src/ifc4d/ifc4d/p62ifc.py
index 09295a2f68..5787b8a1ad 100644
--- a/src/ifcp6/ifcp6/p62ifc.py
+++ b/src/ifc4d/ifc4d/p62ifc.py
@@ -1,3 +1,22 @@
+
+# Ifc4D - IFC scheduling utility
+# Copyright (C) 2021 Dion Moult
+#
+# This file is part of Ifc4D.
+#
+# Ifc4D is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# Ifc4D is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public License
+# along with Ifc4D. If not, see .
+
import math
import datetime
import ifcopenshell
diff --git a/src/ifc5d/COPYING b/src/ifc5d/COPYING
new file mode 100644
index 0000000000..810fce6e9b
--- /dev/null
+++ b/src/ifc5d/COPYING
@@ -0,0 +1,621 @@
+ GNU GENERAL PUBLIC LICENSE
+ Version 3, 29 June 2007
+
+ Copyright (C) 2007 Free Software Foundation, Inc.
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+ Preamble
+
+ The GNU General Public License is a free, copyleft license for
+software and other kinds of works.
+
+ The licenses for most software and other practical works are designed
+to take away your freedom to share and change the works. By contrast,
+the GNU General Public License is intended to guarantee your freedom to
+share and change all versions of a program--to make sure it remains free
+software for all its users. We, the Free Software Foundation, use the
+GNU General Public License for most of our software; it applies also to
+any other work released this way by its authors. You can apply it to
+your programs, too.
+
+ When we speak of free software, we are referring to freedom, not
+price. Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+them if you wish), that you receive source code or can get it if you
+want it, that you can change the software or use pieces of it in new
+free programs, and that you know you can do these things.
+
+ To protect your rights, we need to prevent others from denying you
+these rights or asking you to surrender the rights. Therefore, you have
+certain responsibilities if you distribute copies of the software, or if
+you modify it: responsibilities to respect the freedom of others.
+
+ For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must pass on to the recipients the same
+freedoms that you received. You must make sure that they, too, receive
+or can get the source code. And you must show them these terms so they
+know their rights.
+
+ Developers that use the GNU GPL protect your rights with two steps:
+(1) assert copyright on the software, and (2) offer you this License
+giving you legal permission to copy, distribute and/or modify it.
+
+ For the developers' and authors' protection, the GPL clearly explains
+that there is no warranty for this free software. For both users' and
+authors' sake, the GPL requires that modified versions be marked as
+changed, so that their problems will not be attributed erroneously to
+authors of previous versions.
+
+ Some devices are designed to deny users access to install or run
+modified versions of the software inside them, although the manufacturer
+can do so. This is fundamentally incompatible with the aim of
+protecting users' freedom to change the software. The systematic
+pattern of such abuse occurs in the area of products for individuals to
+use, which is precisely where it is most unacceptable. Therefore, we
+have designed this version of the GPL to prohibit the practice for those
+products. If such problems arise substantially in other domains, we
+stand ready to extend this provision to those domains in future versions
+of the GPL, as needed to protect the freedom of users.
+
+ Finally, every program is threatened constantly by software patents.
+States should not allow patents to restrict development and use of
+software on general-purpose computers, but in those that do, we wish to
+avoid the special danger that patents applied to a free program could
+make it effectively proprietary. To prevent this, the GPL assures that
+patents cannot be used to render the program non-free.
+
+ The precise terms and conditions for copying, distribution and
+modification follow.
+
+ TERMS AND CONDITIONS
+
+ 0. Definitions.
+
+ "This License" refers to version 3 of the GNU General Public License.
+
+ "Copyright" also means copyright-like laws that apply to other kinds of
+works, such as semiconductor masks.
+
+ "The Program" refers to any copyrightable work licensed under this
+License. Each licensee is addressed as "you". "Licensees" and
+"recipients" may be individuals or organizations.
+
+ To "modify" a work means to copy from or adapt all or part of the work
+in a fashion requiring copyright permission, other than the making of an
+exact copy. The resulting work is called a "modified version" of the
+earlier work or a work "based on" the earlier work.
+
+ A "covered work" means either the unmodified Program or a work based
+on the Program.
+
+ To "propagate" a work means to do anything with it that, without
+permission, would make you directly or secondarily liable for
+infringement under applicable copyright law, except executing it on a
+computer or modifying a private copy. Propagation includes copying,
+distribution (with or without modification), making available to the
+public, and in some countries other activities as well.
+
+ To "convey" a work means any kind of propagation that enables other
+parties to make or receive copies. Mere interaction with a user through
+a computer network, with no transfer of a copy, is not conveying.
+
+ An interactive user interface displays "Appropriate Legal Notices"
+to the extent that it includes a convenient and prominently visible
+feature that (1) displays an appropriate copyright notice, and (2)
+tells the user that there is no warranty for the work (except to the
+extent that warranties are provided), that licensees may convey the
+work under this License, and how to view a copy of this License. If
+the interface presents a list of user commands or options, such as a
+menu, a prominent item in the list meets this criterion.
+
+ 1. Source Code.
+
+ The "source code" for a work means the preferred form of the work
+for making modifications to it. "Object code" means any non-source
+form of a work.
+
+ A "Standard Interface" means an interface that either is an official
+standard defined by a recognized standards body, or, in the case of
+interfaces specified for a particular programming language, one that
+is widely used among developers working in that language.
+
+ The "System Libraries" of an executable work include anything, other
+than the work as a whole, that (a) is included in the normal form of
+packaging a Major Component, but which is not part of that Major
+Component, and (b) serves only to enable use of the work with that
+Major Component, or to implement a Standard Interface for which an
+implementation is available to the public in source code form. A
+"Major Component", in this context, means a major essential component
+(kernel, window system, and so on) of the specific operating system
+(if any) on which the executable work runs, or a compiler used to
+produce the work, or an object code interpreter used to run it.
+
+ The "Corresponding Source" for a work in object code form means all
+the source code needed to generate, install, and (for an executable
+work) run the object code and to modify the work, including scripts to
+control those activities. However, it does not include the work's
+System Libraries, or general-purpose tools or generally available free
+programs which are used unmodified in performing those activities but
+which are not part of the work. For example, Corresponding Source
+includes interface definition files associated with source files for
+the work, and the source code for shared libraries and dynamically
+linked subprograms that the work is specifically designed to require,
+such as by intimate data communication or control flow between those
+subprograms and other parts of the work.
+
+ The Corresponding Source need not include anything that users
+can regenerate automatically from other parts of the Corresponding
+Source.
+
+ The Corresponding Source for a work in source code form is that
+same work.
+
+ 2. Basic Permissions.
+
+ All rights granted under this License are granted for the term of
+copyright on the Program, and are irrevocable provided the stated
+conditions are met. This License explicitly affirms your unlimited
+permission to run the unmodified Program. The output from running a
+covered work is covered by this License only if the output, given its
+content, constitutes a covered work. This License acknowledges your
+rights of fair use or other equivalent, as provided by copyright law.
+
+ You may make, run and propagate covered works that you do not
+convey, without conditions so long as your license otherwise remains
+in force. You may convey covered works to others for the sole purpose
+of having them make modifications exclusively for you, or provide you
+with facilities for running those works, provided that you comply with
+the terms of this License in conveying all material for which you do
+not control copyright. Those thus making or running the covered works
+for you must do so exclusively on your behalf, under your direction
+and control, on terms that prohibit them from making any copies of
+your copyrighted material outside their relationship with you.
+
+ Conveying under any other circumstances is permitted solely under
+the conditions stated below. Sublicensing is not allowed; section 10
+makes it unnecessary.
+
+ 3. Protecting Users' Legal Rights From Anti-Circumvention Law.
+
+ No covered work shall be deemed part of an effective technological
+measure under any applicable law fulfilling obligations under article
+11 of the WIPO copyright treaty adopted on 20 December 1996, or
+similar laws prohibiting or restricting circumvention of such
+measures.
+
+ When you convey a covered work, you waive any legal power to forbid
+circumvention of technological measures to the extent such circumvention
+is effected by exercising rights under this License with respect to
+the covered work, and you disclaim any intention to limit operation or
+modification of the work as a means of enforcing, against the work's
+users, your or third parties' legal rights to forbid circumvention of
+technological measures.
+
+ 4. Conveying Verbatim Copies.
+
+ You may convey verbatim copies of the Program's source code as you
+receive it, in any medium, provided that you conspicuously and
+appropriately publish on each copy an appropriate copyright notice;
+keep intact all notices stating that this License and any
+non-permissive terms added in accord with section 7 apply to the code;
+keep intact all notices of the absence of any warranty; and give all
+recipients a copy of this License along with the Program.
+
+ You may charge any price or no price for each copy that you convey,
+and you may offer support or warranty protection for a fee.
+
+ 5. Conveying Modified Source Versions.
+
+ You may convey a work based on the Program, or the modifications to
+produce it from the Program, in the form of source code under the
+terms of section 4, provided that you also meet all of these conditions:
+
+ a) The work must carry prominent notices stating that you modified
+ it, and giving a relevant date.
+
+ b) The work must carry prominent notices stating that it is
+ released under this License and any conditions added under section
+ 7. This requirement modifies the requirement in section 4 to
+ "keep intact all notices".
+
+ c) You must license the entire work, as a whole, under this
+ License to anyone who comes into possession of a copy. This
+ License will therefore apply, along with any applicable section 7
+ additional terms, to the whole of the work, and all its parts,
+ regardless of how they are packaged. This License gives no
+ permission to license the work in any other way, but it does not
+ invalidate such permission if you have separately received it.
+
+ d) If the work has interactive user interfaces, each must display
+ Appropriate Legal Notices; however, if the Program has interactive
+ interfaces that do not display Appropriate Legal Notices, your
+ work need not make them do so.
+
+ A compilation of a covered work with other separate and independent
+works, which are not by their nature extensions of the covered work,
+and which are not combined with it such as to form a larger program,
+in or on a volume of a storage or distribution medium, is called an
+"aggregate" if the compilation and its resulting copyright are not
+used to limit the access or legal rights of the compilation's users
+beyond what the individual works permit. Inclusion of a covered work
+in an aggregate does not cause this License to apply to the other
+parts of the aggregate.
+
+ 6. Conveying Non-Source Forms.
+
+ You may convey a covered work in object code form under the terms
+of sections 4 and 5, provided that you also convey the
+machine-readable Corresponding Source under the terms of this License,
+in one of these ways:
+
+ a) Convey the object code in, or embodied in, a physical product
+ (including a physical distribution medium), accompanied by the
+ Corresponding Source fixed on a durable physical medium
+ customarily used for software interchange.
+
+ b) Convey the object code in, or embodied in, a physical product
+ (including a physical distribution medium), accompanied by a
+ written offer, valid for at least three years and valid for as
+ long as you offer spare parts or customer support for that product
+ model, to give anyone who possesses the object code either (1) a
+ copy of the Corresponding Source for all the software in the
+ product that is covered by this License, on a durable physical
+ medium customarily used for software interchange, for a price no
+ more than your reasonable cost of physically performing this
+ conveying of source, or (2) access to copy the
+ Corresponding Source from a network server at no charge.
+
+ c) Convey individual copies of the object code with a copy of the
+ written offer to provide the Corresponding Source. This
+ alternative is allowed only occasionally and noncommercially, and
+ only if you received the object code with such an offer, in accord
+ with subsection 6b.
+
+ d) Convey the object code by offering access from a designated
+ place (gratis or for a charge), and offer equivalent access to the
+ Corresponding Source in the same way through the same place at no
+ further charge. You need not require recipients to copy the
+ Corresponding Source along with the object code. If the place to
+ copy the object code is a network server, the Corresponding Source
+ may be on a different server (operated by you or a third party)
+ that supports equivalent copying facilities, provided you maintain
+ clear directions next to the object code saying where to find the
+ Corresponding Source. Regardless of what server hosts the
+ Corresponding Source, you remain obligated to ensure that it is
+ available for as long as needed to satisfy these requirements.
+
+ e) Convey the object code using peer-to-peer transmission, provided
+ you inform other peers where the object code and Corresponding
+ Source of the work are being offered to the general public at no
+ charge under subsection 6d.
+
+ A separable portion of the object code, whose source code is excluded
+from the Corresponding Source as a System Library, need not be
+included in conveying the object code work.
+
+ A "User Product" is either (1) a "consumer product", which means any
+tangible personal property which is normally used for personal, family,
+or household purposes, or (2) anything designed or sold for incorporation
+into a dwelling. In determining whether a product is a consumer product,
+doubtful cases shall be resolved in favor of coverage. For a particular
+product received by a particular user, "normally used" refers to a
+typical or common use of that class of product, regardless of the status
+of the particular user or of the way in which the particular user
+actually uses, or expects or is expected to use, the product. A product
+is a consumer product regardless of whether the product has substantial
+commercial, industrial or non-consumer uses, unless such uses represent
+the only significant mode of use of the product.
+
+ "Installation Information" for a User Product means any methods,
+procedures, authorization keys, or other information required to install
+and execute modified versions of a covered work in that User Product from
+a modified version of its Corresponding Source. The information must
+suffice to ensure that the continued functioning of the modified object
+code is in no case prevented or interfered with solely because
+modification has been made.
+
+ If you convey an object code work under this section in, or with, or
+specifically for use in, a User Product, and the conveying occurs as
+part of a transaction in which the right of possession and use of the
+User Product is transferred to the recipient in perpetuity or for a
+fixed term (regardless of how the transaction is characterized), the
+Corresponding Source conveyed under this section must be accompanied
+by the Installation Information. But this requirement does not apply
+if neither you nor any third party retains the ability to install
+modified object code on the User Product (for example, the work has
+been installed in ROM).
+
+ The requirement to provide Installation Information does not include a
+requirement to continue to provide support service, warranty, or updates
+for a work that has been modified or installed by the recipient, or for
+the User Product in which it has been modified or installed. Access to a
+network may be denied when the modification itself materially and
+adversely affects the operation of the network or violates the rules and
+protocols for communication across the network.
+
+ Corresponding Source conveyed, and Installation Information provided,
+in accord with this section must be in a format that is publicly
+documented (and with an implementation available to the public in
+source code form), and must require no special password or key for
+unpacking, reading or copying.
+
+ 7. Additional Terms.
+
+ "Additional permissions" are terms that supplement the terms of this
+License by making exceptions from one or more of its conditions.
+Additional permissions that are applicable to the entire Program shall
+be treated as though they were included in this License, to the extent
+that they are valid under applicable law. If additional permissions
+apply only to part of the Program, that part may be used separately
+under those permissions, but the entire Program remains governed by
+this License without regard to the additional permissions.
+
+ When you convey a copy of a covered work, you may at your option
+remove any additional permissions from that copy, or from any part of
+it. (Additional permissions may be written to require their own
+removal in certain cases when you modify the work.) You may place
+additional permissions on material, added by you to a covered work,
+for which you have or can give appropriate copyright permission.
+
+ Notwithstanding any other provision of this License, for material you
+add to a covered work, you may (if authorized by the copyright holders of
+that material) supplement the terms of this License with terms:
+
+ a) Disclaiming warranty or limiting liability differently from the
+ terms of sections 15 and 16 of this License; or
+
+ b) Requiring preservation of specified reasonable legal notices or
+ author attributions in that material or in the Appropriate Legal
+ Notices displayed by works containing it; or
+
+ c) Prohibiting misrepresentation of the origin of that material, or
+ requiring that modified versions of such material be marked in
+ reasonable ways as different from the original version; or
+
+ d) Limiting the use for publicity purposes of names of licensors or
+ authors of the material; or
+
+ e) Declining to grant rights under trademark law for use of some
+ trade names, trademarks, or service marks; or
+
+ f) Requiring indemnification of licensors and authors of that
+ material by anyone who conveys the material (or modified versions of
+ it) with contractual assumptions of liability to the recipient, for
+ any liability that these contractual assumptions directly impose on
+ those licensors and authors.
+
+ All other non-permissive additional terms are considered "further
+restrictions" within the meaning of section 10. If the Program as you
+received it, or any part of it, contains a notice stating that it is
+governed by this License along with a term that is a further
+restriction, you may remove that term. If a license document contains
+a further restriction but permits relicensing or conveying under this
+License, you may add to a covered work material governed by the terms
+of that license document, provided that the further restriction does
+not survive such relicensing or conveying.
+
+ If you add terms to a covered work in accord with this section, you
+must place, in the relevant source files, a statement of the
+additional terms that apply to those files, or a notice indicating
+where to find the applicable terms.
+
+ Additional terms, permissive or non-permissive, may be stated in the
+form of a separately written license, or stated as exceptions;
+the above requirements apply either way.
+
+ 8. Termination.
+
+ You may not propagate or modify a covered work except as expressly
+provided under this License. Any attempt otherwise to propagate or
+modify it is void, and will automatically terminate your rights under
+this License (including any patent licenses granted under the third
+paragraph of section 11).
+
+ However, if you cease all violation of this License, then your
+license from a particular copyright holder is reinstated (a)
+provisionally, unless and until the copyright holder explicitly and
+finally terminates your license, and (b) permanently, if the copyright
+holder fails to notify you of the violation by some reasonable means
+prior to 60 days after the cessation.
+
+ Moreover, your license from a particular copyright holder is
+reinstated permanently if the copyright holder notifies you of the
+violation by some reasonable means, this is the first time you have
+received notice of violation of this License (for any work) from that
+copyright holder, and you cure the violation prior to 30 days after
+your receipt of the notice.
+
+ Termination of your rights under this section does not terminate the
+licenses of parties who have received copies or rights from you under
+this License. If your rights have been terminated and not permanently
+reinstated, you do not qualify to receive new licenses for the same
+material under section 10.
+
+ 9. Acceptance Not Required for Having Copies.
+
+ You are not required to accept this License in order to receive or
+run a copy of the Program. Ancillary propagation of a covered work
+occurring solely as a consequence of using peer-to-peer transmission
+to receive a copy likewise does not require acceptance. However,
+nothing other than this License grants you permission to propagate or
+modify any covered work. These actions infringe copyright if you do
+not accept this License. Therefore, by modifying or propagating a
+covered work, you indicate your acceptance of this License to do so.
+
+ 10. Automatic Licensing of Downstream Recipients.
+
+ Each time you convey a covered work, the recipient automatically
+receives a license from the original licensors, to run, modify and
+propagate that work, subject to this License. You are not responsible
+for enforcing compliance by third parties with this License.
+
+ An "entity transaction" is a transaction transferring control of an
+organization, or substantially all assets of one, or subdividing an
+organization, or merging organizations. If propagation of a covered
+work results from an entity transaction, each party to that
+transaction who receives a copy of the work also receives whatever
+licenses to the work the party's predecessor in interest had or could
+give under the previous paragraph, plus a right to possession of the
+Corresponding Source of the work from the predecessor in interest, if
+the predecessor has it or can get it with reasonable efforts.
+
+ You may not impose any further restrictions on the exercise of the
+rights granted or affirmed under this License. For example, you may
+not impose a license fee, royalty, or other charge for exercise of
+rights granted under this License, and you may not initiate litigation
+(including a cross-claim or counterclaim in a lawsuit) alleging that
+any patent claim is infringed by making, using, selling, offering for
+sale, or importing the Program or any portion of it.
+
+ 11. Patents.
+
+ A "contributor" is a copyright holder who authorizes use under this
+License of the Program or a work on which the Program is based. The
+work thus licensed is called the contributor's "contributor version".
+
+ A contributor's "essential patent claims" are all patent claims
+owned or controlled by the contributor, whether already acquired or
+hereafter acquired, that would be infringed by some manner, permitted
+by this License, of making, using, or selling its contributor version,
+but do not include claims that would be infringed only as a
+consequence of further modification of the contributor version. For
+purposes of this definition, "control" includes the right to grant
+patent sublicenses in a manner consistent with the requirements of
+this License.
+
+ Each contributor grants you a non-exclusive, worldwide, royalty-free
+patent license under the contributor's essential patent claims, to
+make, use, sell, offer for sale, import and otherwise run, modify and
+propagate the contents of its contributor version.
+
+ In the following three paragraphs, a "patent license" is any express
+agreement or commitment, however denominated, not to enforce a patent
+(such as an express permission to practice a patent or covenant not to
+sue for patent infringement). To "grant" such a patent license to a
+party means to make such an agreement or commitment not to enforce a
+patent against the party.
+
+ If you convey a covered work, knowingly relying on a patent license,
+and the Corresponding Source of the work is not available for anyone
+to copy, free of charge and under the terms of this License, through a
+publicly available network server or other readily accessible means,
+then you must either (1) cause the Corresponding Source to be so
+available, or (2) arrange to deprive yourself of the benefit of the
+patent license for this particular work, or (3) arrange, in a manner
+consistent with the requirements of this License, to extend the patent
+license to downstream recipients. "Knowingly relying" means you have
+actual knowledge that, but for the patent license, your conveying the
+covered work in a country, or your recipient's use of the covered work
+in a country, would infringe one or more identifiable patents in that
+country that you have reason to believe are valid.
+
+ If, pursuant to or in connection with a single transaction or
+arrangement, you convey, or propagate by procuring conveyance of, a
+covered work, and grant a patent license to some of the parties
+receiving the covered work authorizing them to use, propagate, modify
+or convey a specific copy of the covered work, then the patent license
+you grant is automatically extended to all recipients of the covered
+work and works based on it.
+
+ A patent license is "discriminatory" if it does not include within
+the scope of its coverage, prohibits the exercise of, or is
+conditioned on the non-exercise of one or more of the rights that are
+specifically granted under this License. You may not convey a covered
+work if you are a party to an arrangement with a third party that is
+in the business of distributing software, under which you make payment
+to the third party based on the extent of your activity of conveying
+the work, and under which the third party grants, to any of the
+parties who would receive the covered work from you, a discriminatory
+patent license (a) in connection with copies of the covered work
+conveyed by you (or copies made from those copies), or (b) primarily
+for and in connection with specific products or compilations that
+contain the covered work, unless you entered into that arrangement,
+or that patent license was granted, prior to 28 March 2007.
+
+ Nothing in this License shall be construed as excluding or limiting
+any implied license or other defenses to infringement that may
+otherwise be available to you under applicable patent law.
+
+ 12. No Surrender of Others' Freedom.
+
+ If conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot convey a
+covered work so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you may
+not convey it at all. For example, if you agree to terms that obligate you
+to collect a royalty for further conveying from those to whom you convey
+the Program, the only way you could satisfy both those terms and this
+License would be to refrain entirely from conveying the Program.
+
+ 13. Use with the GNU Affero General Public License.
+
+ Notwithstanding any other provision of this License, you have
+permission to link or combine any covered work with a work licensed
+under version 3 of the GNU Affero General Public License into a single
+combined work, and to convey the resulting work. The terms of this
+License will continue to apply to the part which is the covered work,
+but the special requirements of the GNU Affero General Public License,
+section 13, concerning interaction through a network will apply to the
+combination as such.
+
+ 14. Revised Versions of this License.
+
+ The Free Software Foundation may publish revised and/or new versions of
+the GNU General Public License from time to time. Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+ Each version is given a distinguishing version number. If the
+Program specifies that a certain numbered version of the GNU General
+Public License "or any later version" applies to it, you have the
+option of following the terms and conditions either of that numbered
+version or of any later version published by the Free Software
+Foundation. If the Program does not specify a version number of the
+GNU General Public License, you may choose any version ever published
+by the Free Software Foundation.
+
+ If the Program specifies that a proxy can decide which future
+versions of the GNU General Public License can be used, that proxy's
+public statement of acceptance of a version permanently authorizes you
+to choose that version for the Program.
+
+ Later license versions may give you additional or different
+permissions. However, no additional obligations are imposed on any
+author or copyright holder as a result of your choosing to follow a
+later version.
+
+ 15. Disclaimer of Warranty.
+
+ THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
+APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
+HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
+OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
+THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
+IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
+ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+ 16. Limitation of Liability.
+
+ IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
+THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
+GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
+USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
+DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
+PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
+EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGES.
+
+ 17. Interpretation of Sections 15 and 16.
+
+ If the disclaimer of warranty and limitation of liability provided
+above cannot be given local legal effect according to their terms,
+reviewing courts shall apply local law that most closely approximates
+an absolute waiver of all civil liability in connection with the
+Program, unless a warranty or assumption of liability accompanies a
+copy of the Program in return for a fee.
+
+ END OF TERMS AND CONDITIONS
diff --git a/src/ifc5d/COPYING.LESSER b/src/ifc5d/COPYING.LESSER
new file mode 100644
index 0000000000..0a041280bd
--- /dev/null
+++ b/src/ifc5d/COPYING.LESSER
@@ -0,0 +1,165 @@
+ GNU LESSER GENERAL PUBLIC LICENSE
+ Version 3, 29 June 2007
+
+ Copyright (C) 2007 Free Software Foundation, Inc.
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+
+ This version of the GNU Lesser General Public License incorporates
+the terms and conditions of version 3 of the GNU General Public
+License, supplemented by the additional permissions listed below.
+
+ 0. Additional Definitions.
+
+ As used herein, "this License" refers to version 3 of the GNU Lesser
+General Public License, and the "GNU GPL" refers to version 3 of the GNU
+General Public License.
+
+ "The Library" refers to a covered work governed by this License,
+other than an Application or a Combined Work as defined below.
+
+ An "Application" is any work that makes use of an interface provided
+by the Library, but which is not otherwise based on the Library.
+Defining a subclass of a class defined by the Library is deemed a mode
+of using an interface provided by the Library.
+
+ A "Combined Work" is a work produced by combining or linking an
+Application with the Library. The particular version of the Library
+with which the Combined Work was made is also called the "Linked
+Version".
+
+ The "Minimal Corresponding Source" for a Combined Work means the
+Corresponding Source for the Combined Work, excluding any source code
+for portions of the Combined Work that, considered in isolation, are
+based on the Application, and not on the Linked Version.
+
+ The "Corresponding Application Code" for a Combined Work means the
+object code and/or source code for the Application, including any data
+and utility programs needed for reproducing the Combined Work from the
+Application, but excluding the System Libraries of the Combined Work.
+
+ 1. Exception to Section 3 of the GNU GPL.
+
+ You may convey a covered work under sections 3 and 4 of this License
+without being bound by section 3 of the GNU GPL.
+
+ 2. Conveying Modified Versions.
+
+ If you modify a copy of the Library, and, in your modifications, a
+facility refers to a function or data to be supplied by an Application
+that uses the facility (other than as an argument passed when the
+facility is invoked), then you may convey a copy of the modified
+version:
+
+ a) under this License, provided that you make a good faith effort to
+ ensure that, in the event an Application does not supply the
+ function or data, the facility still operates, and performs
+ whatever part of its purpose remains meaningful, or
+
+ b) under the GNU GPL, with none of the additional permissions of
+ this License applicable to that copy.
+
+ 3. Object Code Incorporating Material from Library Header Files.
+
+ The object code form of an Application may incorporate material from
+a header file that is part of the Library. You may convey such object
+code under terms of your choice, provided that, if the incorporated
+material is not limited to numerical parameters, data structure
+layouts and accessors, or small macros, inline functions and templates
+(ten or fewer lines in length), you do both of the following:
+
+ a) Give prominent notice with each copy of the object code that the
+ Library is used in it and that the Library and its use are
+ covered by this License.
+
+ b) Accompany the object code with a copy of the GNU GPL and this license
+ document.
+
+ 4. Combined Works.
+
+ You may convey a Combined Work under terms of your choice that,
+taken together, effectively do not restrict modification of the
+portions of the Library contained in the Combined Work and reverse
+engineering for debugging such modifications, if you also do each of
+the following:
+
+ a) Give prominent notice with each copy of the Combined Work that
+ the Library is used in it and that the Library and its use are
+ covered by this License.
+
+ b) Accompany the Combined Work with a copy of the GNU GPL and this license
+ document.
+
+ c) For a Combined Work that displays copyright notices during
+ execution, include the copyright notice for the Library among
+ these notices, as well as a reference directing the user to the
+ copies of the GNU GPL and this license document.
+
+ d) Do one of the following:
+
+ 0) Convey the Minimal Corresponding Source under the terms of this
+ License, and the Corresponding Application Code in a form
+ suitable for, and under terms that permit, the user to
+ recombine or relink the Application with a modified version of
+ the Linked Version to produce a modified Combined Work, in the
+ manner specified by section 6 of the GNU GPL for conveying
+ Corresponding Source.
+
+ 1) Use a suitable shared library mechanism for linking with the
+ Library. A suitable mechanism is one that (a) uses at run time
+ a copy of the Library already present on the user's computer
+ system, and (b) will operate properly with a modified version
+ of the Library that is interface-compatible with the Linked
+ Version.
+
+ e) Provide Installation Information, but only if you would otherwise
+ be required to provide such information under section 6 of the
+ GNU GPL, and only to the extent that such information is
+ necessary to install and execute a modified version of the
+ Combined Work produced by recombining or relinking the
+ Application with a modified version of the Linked Version. (If
+ you use option 4d0, the Installation Information must accompany
+ the Minimal Corresponding Source and Corresponding Application
+ Code. If you use option 4d1, you must provide the Installation
+ Information in the manner specified by section 6 of the GNU GPL
+ for conveying Corresponding Source.)
+
+ 5. Combined Libraries.
+
+ You may place library facilities that are a work based on the
+Library side by side in a single library together with other library
+facilities that are not Applications and are not covered by this
+License, and convey such a combined library under terms of your
+choice, if you do both of the following:
+
+ a) Accompany the combined library with a copy of the same work based
+ on the Library, uncombined with any other library facilities,
+ conveyed under the terms of this License.
+
+ b) Give prominent notice with the combined library that part of it
+ is a work based on the Library, and explaining where to find the
+ accompanying uncombined form of the same work.
+
+ 6. Revised Versions of the GNU Lesser General Public License.
+
+ The Free Software Foundation may publish revised and/or new versions
+of the GNU Lesser General Public License from time to time. Such new
+versions will be similar in spirit to the present version, but may
+differ in detail to address new problems or concerns.
+
+ Each version is given a distinguishing version number. If the
+Library as you received it specifies that a certain numbered version
+of the GNU Lesser General Public License "or any later version"
+applies to it, you have the option of following the terms and
+conditions either of that published version or of any later version
+published by the Free Software Foundation. If the Library as you
+received it does not specify a version number of the GNU Lesser
+General Public License, you may choose any version of the GNU Lesser
+General Public License ever published by the Free Software Foundation.
+
+ If the Library as you received it specifies that a proxy can decide
+whether future versions of the GNU Lesser General Public License shall
+apply, that proxy's public statement of acceptance of any version is
+permanent authorization for you to choose that version for the
+Library.
diff --git a/src/ifc5d/README.md b/src/ifc5d/README.md
new file mode 100644
index 0000000000..d1a014a114
--- /dev/null
+++ b/src/ifc5d/README.md
@@ -0,0 +1,18 @@
+# ifc5d
+
+Ifc5D is a collection of utilities of manipulating cost-related data to and from
+formats, reports, and optimisation engines.
+
+Currently supported:
+
+ - CSV to IFC
+
+Planned (would you like to contribute? Please reach out!):
+
+ - IFC to CSV
+ - IFC to PDF
+ - IFC to ODS
+ - IFC to XLSX
+ - ODS to CSV
+ - XLSX to CSV
+ - IFC to Graph
diff --git a/src/ifc5d/ifc5d/csv2ifc.py b/src/ifc5d/ifc5d/csv2ifc.py
new file mode 100644
index 0000000000..0ecb5f5d54
--- /dev/null
+++ b/src/ifc5d/ifc5d/csv2ifc.py
@@ -0,0 +1,124 @@
+# Ifc5D - IFC costing utility
+# Copyright (C) 2021 Dion Moult
+#
+# This file is part of Ifc5D.
+#
+# Ifc5D is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# Ifc5D is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public License
+# along with Ifc5D. If not, see .
+
+import csv
+import ifcopenshell
+import ifcopenshell.api
+import ifcopenshell.util.unit
+
+
+class Csv2Ifc:
+ def __init__(self):
+ self.csv = None
+ self.file = None
+ self.cost_items = []
+ self.cost_schedule = None
+
+ def execute(self):
+ self.parse_csv()
+ self.create_ifc()
+
+ def parse_csv(self):
+ self.parents = {}
+ self.headers = {}
+ with open(self.csv, "r") as csv_file:
+ reader = csv.reader(csv_file)
+ for row in reader:
+ if not row[0]:
+ continue
+ if row[0] == "Hierarchy":
+ self.has_categories = True
+ for i, col in enumerate(row):
+ if not col:
+ continue
+ if col == "Value":
+ self.has_categories = False
+ self.headers[col] = i
+ continue
+ cost_data = self.get_row_cost_data(row)
+ hierarchy_key = int(row[0])
+ if hierarchy_key == 1:
+ self.cost_items.append(cost_data)
+ else:
+ self.parents[hierarchy_key - 1]["children"].append(cost_data)
+ self.parents[hierarchy_key] = cost_data
+
+ def get_row_cost_data(self, row):
+ name = row[self.headers["Name"]]
+ cost_quantities = row[self.headers["Quantity"]]
+ cost_quantities_unit = row[self.headers["Unit"]]
+ if self.has_categories:
+ cost_values = {
+ k: float(row[v])
+ for k, v in self.headers.items()
+ if k not in ["Hierarchy", "Name", "Quantity", "Unit", "Subtotal"] and row[v]
+ }
+ else:
+ cost_values = row[self.headers["Value"]]
+ cost_values = float(cost_values) if cost_values else None
+ return {
+ "Name": str(name) if name else None,
+ "CostQuantities": float(cost_quantities) if cost_quantities else None,
+ "CostQuantitiesUnit": str(cost_quantities_unit) if cost_quantities_unit else None,
+ "CostValues": cost_values,
+ "children": [],
+ }
+
+ def create_ifc(self):
+ if not self.file:
+ self.create_boilerplate_ifc()
+ if not self.cost_schedule:
+ self.cost_schedule = ifcopenshell.api.run("cost.add_cost_schedule", self.file, name="CSV Import")
+ self.create_cost_items(self.cost_items)
+
+ def create_cost_items(self, cost_items, parent=None):
+ for cost_item in cost_items:
+ self.create_cost_item(cost_item, parent)
+
+ def create_cost_item(self, cost_item, parent):
+ if parent is None:
+ cost_item["ifc"] = ifcopenshell.api.run(
+ "cost.add_cost_item", self.file, cost_schedule=self.cost_schedule
+ )
+ else:
+ cost_item["ifc"] = ifcopenshell.api.run("cost.add_cost_item", self.file, cost_item=parent)
+
+ cost_item["ifc"].Name = cost_item["Name"]
+
+ if not cost_item["CostValues"]:
+ cost_value = ifcopenshell.api.run("cost.add_cost_value", self.file, parent=cost_item["ifc"])
+ cost_value.Category = "*"
+ elif self.has_categories:
+ for category, value in cost_item["CostValues"].items():
+ cost_value = ifcopenshell.api.run("cost.add_cost_value", self.file, parent=cost_item["ifc"])
+ cost_value.AppliedValue = self.file.createIfcMonetaryMeasure(value)
+ cost_value.Category = category
+ else:
+ cost_value = ifcopenshell.api.run("cost.add_cost_value", self.file, parent=cost_item["ifc"])
+ cost_value.AppliedValue = self.file.createIfcMonetaryMeasure(cost_item["CostValues"])
+
+ if cost_item["CostQuantities"]:
+ quantity_class = ifcopenshell.util.unit.get_symbol_quantity_class(cost_item["CostQuantitiesUnit"])
+ quantity = ifcopenshell.api.run(
+ "cost.add_cost_item_quantity", self.file, cost_item=cost_item["ifc"], ifc_class=quantity_class
+ )
+ quantity[3] = cost_item["CostQuantities"]
+ self.create_cost_items(cost_item["children"], cost_item["ifc"])
+
+ def create_boilerplate_ifc(self):
+ self.file = ifcopenshell.file(schema="IFC4")
diff --git a/src/ifc5d/test.csv b/src/ifc5d/test.csv
new file mode 100644
index 0000000000..203122abae
--- /dev/null
+++ b/src/ifc5d/test.csv
@@ -0,0 +1,14 @@
+"Hierarchy","Name","Quantity","Unit","Foo","Bar","Baz","Subtotal"
+1,"Demolition",,,,,,301
+,,,,,,,
+2,"Building A",,,,,,96
+,,,,,,,
+3,"Soft strip",1,"m",5,4,3,12
+3,"Hard Strip",2,"m2",6,5,4,30
+3,"Hazmat",3,"m3",7,6,5,54
+,,,,,,,
+2,"Building B",,,,,,205
+,,,,,,,
+3,"Soft strip",4,"hr",8,7,,60
+3,"Hard Strip",5,,9,,8,85
+3,"Hazmat",6,"kg",10,,,60
diff --git a/src/ifcbimtester/COPYING b/src/ifcbimtester/COPYING
new file mode 100644
index 0000000000..810fce6e9b
--- /dev/null
+++ b/src/ifcbimtester/COPYING
@@ -0,0 +1,621 @@
+ GNU GENERAL PUBLIC LICENSE
+ Version 3, 29 June 2007
+
+ Copyright (C) 2007 Free Software Foundation, Inc.
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+ Preamble
+
+ The GNU General Public License is a free, copyleft license for
+software and other kinds of works.
+
+ The licenses for most software and other practical works are designed
+to take away your freedom to share and change the works. By contrast,
+the GNU General Public License is intended to guarantee your freedom to
+share and change all versions of a program--to make sure it remains free
+software for all its users. We, the Free Software Foundation, use the
+GNU General Public License for most of our software; it applies also to
+any other work released this way by its authors. You can apply it to
+your programs, too.
+
+ When we speak of free software, we are referring to freedom, not
+price. Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+them if you wish), that you receive source code or can get it if you
+want it, that you can change the software or use pieces of it in new
+free programs, and that you know you can do these things.
+
+ To protect your rights, we need to prevent others from denying you
+these rights or asking you to surrender the rights. Therefore, you have
+certain responsibilities if you distribute copies of the software, or if
+you modify it: responsibilities to respect the freedom of others.
+
+ For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must pass on to the recipients the same
+freedoms that you received. You must make sure that they, too, receive
+or can get the source code. And you must show them these terms so they
+know their rights.
+
+ Developers that use the GNU GPL protect your rights with two steps:
+(1) assert copyright on the software, and (2) offer you this License
+giving you legal permission to copy, distribute and/or modify it.
+
+ For the developers' and authors' protection, the GPL clearly explains
+that there is no warranty for this free software. For both users' and
+authors' sake, the GPL requires that modified versions be marked as
+changed, so that their problems will not be attributed erroneously to
+authors of previous versions.
+
+ Some devices are designed to deny users access to install or run
+modified versions of the software inside them, although the manufacturer
+can do so. This is fundamentally incompatible with the aim of
+protecting users' freedom to change the software. The systematic
+pattern of such abuse occurs in the area of products for individuals to
+use, which is precisely where it is most unacceptable. Therefore, we
+have designed this version of the GPL to prohibit the practice for those
+products. If such problems arise substantially in other domains, we
+stand ready to extend this provision to those domains in future versions
+of the GPL, as needed to protect the freedom of users.
+
+ Finally, every program is threatened constantly by software patents.
+States should not allow patents to restrict development and use of
+software on general-purpose computers, but in those that do, we wish to
+avoid the special danger that patents applied to a free program could
+make it effectively proprietary. To prevent this, the GPL assures that
+patents cannot be used to render the program non-free.
+
+ The precise terms and conditions for copying, distribution and
+modification follow.
+
+ TERMS AND CONDITIONS
+
+ 0. Definitions.
+
+ "This License" refers to version 3 of the GNU General Public License.
+
+ "Copyright" also means copyright-like laws that apply to other kinds of
+works, such as semiconductor masks.
+
+ "The Program" refers to any copyrightable work licensed under this
+License. Each licensee is addressed as "you". "Licensees" and
+"recipients" may be individuals or organizations.
+
+ To "modify" a work means to copy from or adapt all or part of the work
+in a fashion requiring copyright permission, other than the making of an
+exact copy. The resulting work is called a "modified version" of the
+earlier work or a work "based on" the earlier work.
+
+ A "covered work" means either the unmodified Program or a work based
+on the Program.
+
+ To "propagate" a work means to do anything with it that, without
+permission, would make you directly or secondarily liable for
+infringement under applicable copyright law, except executing it on a
+computer or modifying a private copy. Propagation includes copying,
+distribution (with or without modification), making available to the
+public, and in some countries other activities as well.
+
+ To "convey" a work means any kind of propagation that enables other
+parties to make or receive copies. Mere interaction with a user through
+a computer network, with no transfer of a copy, is not conveying.
+
+ An interactive user interface displays "Appropriate Legal Notices"
+to the extent that it includes a convenient and prominently visible
+feature that (1) displays an appropriate copyright notice, and (2)
+tells the user that there is no warranty for the work (except to the
+extent that warranties are provided), that licensees may convey the
+work under this License, and how to view a copy of this License. If
+the interface presents a list of user commands or options, such as a
+menu, a prominent item in the list meets this criterion.
+
+ 1. Source Code.
+
+ The "source code" for a work means the preferred form of the work
+for making modifications to it. "Object code" means any non-source
+form of a work.
+
+ A "Standard Interface" means an interface that either is an official
+standard defined by a recognized standards body, or, in the case of
+interfaces specified for a particular programming language, one that
+is widely used among developers working in that language.
+
+ The "System Libraries" of an executable work include anything, other
+than the work as a whole, that (a) is included in the normal form of
+packaging a Major Component, but which is not part of that Major
+Component, and (b) serves only to enable use of the work with that
+Major Component, or to implement a Standard Interface for which an
+implementation is available to the public in source code form. A
+"Major Component", in this context, means a major essential component
+(kernel, window system, and so on) of the specific operating system
+(if any) on which the executable work runs, or a compiler used to
+produce the work, or an object code interpreter used to run it.
+
+ The "Corresponding Source" for a work in object code form means all
+the source code needed to generate, install, and (for an executable
+work) run the object code and to modify the work, including scripts to
+control those activities. However, it does not include the work's
+System Libraries, or general-purpose tools or generally available free
+programs which are used unmodified in performing those activities but
+which are not part of the work. For example, Corresponding Source
+includes interface definition files associated with source files for
+the work, and the source code for shared libraries and dynamically
+linked subprograms that the work is specifically designed to require,
+such as by intimate data communication or control flow between those
+subprograms and other parts of the work.
+
+ The Corresponding Source need not include anything that users
+can regenerate automatically from other parts of the Corresponding
+Source.
+
+ The Corresponding Source for a work in source code form is that
+same work.
+
+ 2. Basic Permissions.
+
+ All rights granted under this License are granted for the term of
+copyright on the Program, and are irrevocable provided the stated
+conditions are met. This License explicitly affirms your unlimited
+permission to run the unmodified Program. The output from running a
+covered work is covered by this License only if the output, given its
+content, constitutes a covered work. This License acknowledges your
+rights of fair use or other equivalent, as provided by copyright law.
+
+ You may make, run and propagate covered works that you do not
+convey, without conditions so long as your license otherwise remains
+in force. You may convey covered works to others for the sole purpose
+of having them make modifications exclusively for you, or provide you
+with facilities for running those works, provided that you comply with
+the terms of this License in conveying all material for which you do
+not control copyright. Those thus making or running the covered works
+for you must do so exclusively on your behalf, under your direction
+and control, on terms that prohibit them from making any copies of
+your copyrighted material outside their relationship with you.
+
+ Conveying under any other circumstances is permitted solely under
+the conditions stated below. Sublicensing is not allowed; section 10
+makes it unnecessary.
+
+ 3. Protecting Users' Legal Rights From Anti-Circumvention Law.
+
+ No covered work shall be deemed part of an effective technological
+measure under any applicable law fulfilling obligations under article
+11 of the WIPO copyright treaty adopted on 20 December 1996, or
+similar laws prohibiting or restricting circumvention of such
+measures.
+
+ When you convey a covered work, you waive any legal power to forbid
+circumvention of technological measures to the extent such circumvention
+is effected by exercising rights under this License with respect to
+the covered work, and you disclaim any intention to limit operation or
+modification of the work as a means of enforcing, against the work's
+users, your or third parties' legal rights to forbid circumvention of
+technological measures.
+
+ 4. Conveying Verbatim Copies.
+
+ You may convey verbatim copies of the Program's source code as you
+receive it, in any medium, provided that you conspicuously and
+appropriately publish on each copy an appropriate copyright notice;
+keep intact all notices stating that this License and any
+non-permissive terms added in accord with section 7 apply to the code;
+keep intact all notices of the absence of any warranty; and give all
+recipients a copy of this License along with the Program.
+
+ You may charge any price or no price for each copy that you convey,
+and you may offer support or warranty protection for a fee.
+
+ 5. Conveying Modified Source Versions.
+
+ You may convey a work based on the Program, or the modifications to
+produce it from the Program, in the form of source code under the
+terms of section 4, provided that you also meet all of these conditions:
+
+ a) The work must carry prominent notices stating that you modified
+ it, and giving a relevant date.
+
+ b) The work must carry prominent notices stating that it is
+ released under this License and any conditions added under section
+ 7. This requirement modifies the requirement in section 4 to
+ "keep intact all notices".
+
+ c) You must license the entire work, as a whole, under this
+ License to anyone who comes into possession of a copy. This
+ License will therefore apply, along with any applicable section 7
+ additional terms, to the whole of the work, and all its parts,
+ regardless of how they are packaged. This License gives no
+ permission to license the work in any other way, but it does not
+ invalidate such permission if you have separately received it.
+
+ d) If the work has interactive user interfaces, each must display
+ Appropriate Legal Notices; however, if the Program has interactive
+ interfaces that do not display Appropriate Legal Notices, your
+ work need not make them do so.
+
+ A compilation of a covered work with other separate and independent
+works, which are not by their nature extensions of the covered work,
+and which are not combined with it such as to form a larger program,
+in or on a volume of a storage or distribution medium, is called an
+"aggregate" if the compilation and its resulting copyright are not
+used to limit the access or legal rights of the compilation's users
+beyond what the individual works permit. Inclusion of a covered work
+in an aggregate does not cause this License to apply to the other
+parts of the aggregate.
+
+ 6. Conveying Non-Source Forms.
+
+ You may convey a covered work in object code form under the terms
+of sections 4 and 5, provided that you also convey the
+machine-readable Corresponding Source under the terms of this License,
+in one of these ways:
+
+ a) Convey the object code in, or embodied in, a physical product
+ (including a physical distribution medium), accompanied by the
+ Corresponding Source fixed on a durable physical medium
+ customarily used for software interchange.
+
+ b) Convey the object code in, or embodied in, a physical product
+ (including a physical distribution medium), accompanied by a
+ written offer, valid for at least three years and valid for as
+ long as you offer spare parts or customer support for that product
+ model, to give anyone who possesses the object code either (1) a
+ copy of the Corresponding Source for all the software in the
+ product that is covered by this License, on a durable physical
+ medium customarily used for software interchange, for a price no
+ more than your reasonable cost of physically performing this
+ conveying of source, or (2) access to copy the
+ Corresponding Source from a network server at no charge.
+
+ c) Convey individual copies of the object code with a copy of the
+ written offer to provide the Corresponding Source. This
+ alternative is allowed only occasionally and noncommercially, and
+ only if you received the object code with such an offer, in accord
+ with subsection 6b.
+
+ d) Convey the object code by offering access from a designated
+ place (gratis or for a charge), and offer equivalent access to the
+ Corresponding Source in the same way through the same place at no
+ further charge. You need not require recipients to copy the
+ Corresponding Source along with the object code. If the place to
+ copy the object code is a network server, the Corresponding Source
+ may be on a different server (operated by you or a third party)
+ that supports equivalent copying facilities, provided you maintain
+ clear directions next to the object code saying where to find the
+ Corresponding Source. Regardless of what server hosts the
+ Corresponding Source, you remain obligated to ensure that it is
+ available for as long as needed to satisfy these requirements.
+
+ e) Convey the object code using peer-to-peer transmission, provided
+ you inform other peers where the object code and Corresponding
+ Source of the work are being offered to the general public at no
+ charge under subsection 6d.
+
+ A separable portion of the object code, whose source code is excluded
+from the Corresponding Source as a System Library, need not be
+included in conveying the object code work.
+
+ A "User Product" is either (1) a "consumer product", which means any
+tangible personal property which is normally used for personal, family,
+or household purposes, or (2) anything designed or sold for incorporation
+into a dwelling. In determining whether a product is a consumer product,
+doubtful cases shall be resolved in favor of coverage. For a particular
+product received by a particular user, "normally used" refers to a
+typical or common use of that class of product, regardless of the status
+of the particular user or of the way in which the particular user
+actually uses, or expects or is expected to use, the product. A product
+is a consumer product regardless of whether the product has substantial
+commercial, industrial or non-consumer uses, unless such uses represent
+the only significant mode of use of the product.
+
+ "Installation Information" for a User Product means any methods,
+procedures, authorization keys, or other information required to install
+and execute modified versions of a covered work in that User Product from
+a modified version of its Corresponding Source. The information must
+suffice to ensure that the continued functioning of the modified object
+code is in no case prevented or interfered with solely because
+modification has been made.
+
+ If you convey an object code work under this section in, or with, or
+specifically for use in, a User Product, and the conveying occurs as
+part of a transaction in which the right of possession and use of the
+User Product is transferred to the recipient in perpetuity or for a
+fixed term (regardless of how the transaction is characterized), the
+Corresponding Source conveyed under this section must be accompanied
+by the Installation Information. But this requirement does not apply
+if neither you nor any third party retains the ability to install
+modified object code on the User Product (for example, the work has
+been installed in ROM).
+
+ The requirement to provide Installation Information does not include a
+requirement to continue to provide support service, warranty, or updates
+for a work that has been modified or installed by the recipient, or for
+the User Product in which it has been modified or installed. Access to a
+network may be denied when the modification itself materially and
+adversely affects the operation of the network or violates the rules and
+protocols for communication across the network.
+
+ Corresponding Source conveyed, and Installation Information provided,
+in accord with this section must be in a format that is publicly
+documented (and with an implementation available to the public in
+source code form), and must require no special password or key for
+unpacking, reading or copying.
+
+ 7. Additional Terms.
+
+ "Additional permissions" are terms that supplement the terms of this
+License by making exceptions from one or more of its conditions.
+Additional permissions that are applicable to the entire Program shall
+be treated as though they were included in this License, to the extent
+that they are valid under applicable law. If additional permissions
+apply only to part of the Program, that part may be used separately
+under those permissions, but the entire Program remains governed by
+this License without regard to the additional permissions.
+
+ When you convey a copy of a covered work, you may at your option
+remove any additional permissions from that copy, or from any part of
+it. (Additional permissions may be written to require their own
+removal in certain cases when you modify the work.) You may place
+additional permissions on material, added by you to a covered work,
+for which you have or can give appropriate copyright permission.
+
+ Notwithstanding any other provision of this License, for material you
+add to a covered work, you may (if authorized by the copyright holders of
+that material) supplement the terms of this License with terms:
+
+ a) Disclaiming warranty or limiting liability differently from the
+ terms of sections 15 and 16 of this License; or
+
+ b) Requiring preservation of specified reasonable legal notices or
+ author attributions in that material or in the Appropriate Legal
+ Notices displayed by works containing it; or
+
+ c) Prohibiting misrepresentation of the origin of that material, or
+ requiring that modified versions of such material be marked in
+ reasonable ways as different from the original version; or
+
+ d) Limiting the use for publicity purposes of names of licensors or
+ authors of the material; or
+
+ e) Declining to grant rights under trademark law for use of some
+ trade names, trademarks, or service marks; or
+
+ f) Requiring indemnification of licensors and authors of that
+ material by anyone who conveys the material (or modified versions of
+ it) with contractual assumptions of liability to the recipient, for
+ any liability that these contractual assumptions directly impose on
+ those licensors and authors.
+
+ All other non-permissive additional terms are considered "further
+restrictions" within the meaning of section 10. If the Program as you
+received it, or any part of it, contains a notice stating that it is
+governed by this License along with a term that is a further
+restriction, you may remove that term. If a license document contains
+a further restriction but permits relicensing or conveying under this
+License, you may add to a covered work material governed by the terms
+of that license document, provided that the further restriction does
+not survive such relicensing or conveying.
+
+ If you add terms to a covered work in accord with this section, you
+must place, in the relevant source files, a statement of the
+additional terms that apply to those files, or a notice indicating
+where to find the applicable terms.
+
+ Additional terms, permissive or non-permissive, may be stated in the
+form of a separately written license, or stated as exceptions;
+the above requirements apply either way.
+
+ 8. Termination.
+
+ You may not propagate or modify a covered work except as expressly
+provided under this License. Any attempt otherwise to propagate or
+modify it is void, and will automatically terminate your rights under
+this License (including any patent licenses granted under the third
+paragraph of section 11).
+
+ However, if you cease all violation of this License, then your
+license from a particular copyright holder is reinstated (a)
+provisionally, unless and until the copyright holder explicitly and
+finally terminates your license, and (b) permanently, if the copyright
+holder fails to notify you of the violation by some reasonable means
+prior to 60 days after the cessation.
+
+ Moreover, your license from a particular copyright holder is
+reinstated permanently if the copyright holder notifies you of the
+violation by some reasonable means, this is the first time you have
+received notice of violation of this License (for any work) from that
+copyright holder, and you cure the violation prior to 30 days after
+your receipt of the notice.
+
+ Termination of your rights under this section does not terminate the
+licenses of parties who have received copies or rights from you under
+this License. If your rights have been terminated and not permanently
+reinstated, you do not qualify to receive new licenses for the same
+material under section 10.
+
+ 9. Acceptance Not Required for Having Copies.
+
+ You are not required to accept this License in order to receive or
+run a copy of the Program. Ancillary propagation of a covered work
+occurring solely as a consequence of using peer-to-peer transmission
+to receive a copy likewise does not require acceptance. However,
+nothing other than this License grants you permission to propagate or
+modify any covered work. These actions infringe copyright if you do
+not accept this License. Therefore, by modifying or propagating a
+covered work, you indicate your acceptance of this License to do so.
+
+ 10. Automatic Licensing of Downstream Recipients.
+
+ Each time you convey a covered work, the recipient automatically
+receives a license from the original licensors, to run, modify and
+propagate that work, subject to this License. You are not responsible
+for enforcing compliance by third parties with this License.
+
+ An "entity transaction" is a transaction transferring control of an
+organization, or substantially all assets of one, or subdividing an
+organization, or merging organizations. If propagation of a covered
+work results from an entity transaction, each party to that
+transaction who receives a copy of the work also receives whatever
+licenses to the work the party's predecessor in interest had or could
+give under the previous paragraph, plus a right to possession of the
+Corresponding Source of the work from the predecessor in interest, if
+the predecessor has it or can get it with reasonable efforts.
+
+ You may not impose any further restrictions on the exercise of the
+rights granted or affirmed under this License. For example, you may
+not impose a license fee, royalty, or other charge for exercise of
+rights granted under this License, and you may not initiate litigation
+(including a cross-claim or counterclaim in a lawsuit) alleging that
+any patent claim is infringed by making, using, selling, offering for
+sale, or importing the Program or any portion of it.
+
+ 11. Patents.
+
+ A "contributor" is a copyright holder who authorizes use under this
+License of the Program or a work on which the Program is based. The
+work thus licensed is called the contributor's "contributor version".
+
+ A contributor's "essential patent claims" are all patent claims
+owned or controlled by the contributor, whether already acquired or
+hereafter acquired, that would be infringed by some manner, permitted
+by this License, of making, using, or selling its contributor version,
+but do not include claims that would be infringed only as a
+consequence of further modification of the contributor version. For
+purposes of this definition, "control" includes the right to grant
+patent sublicenses in a manner consistent with the requirements of
+this License.
+
+ Each contributor grants you a non-exclusive, worldwide, royalty-free
+patent license under the contributor's essential patent claims, to
+make, use, sell, offer for sale, import and otherwise run, modify and
+propagate the contents of its contributor version.
+
+ In the following three paragraphs, a "patent license" is any express
+agreement or commitment, however denominated, not to enforce a patent
+(such as an express permission to practice a patent or covenant not to
+sue for patent infringement). To "grant" such a patent license to a
+party means to make such an agreement or commitment not to enforce a
+patent against the party.
+
+ If you convey a covered work, knowingly relying on a patent license,
+and the Corresponding Source of the work is not available for anyone
+to copy, free of charge and under the terms of this License, through a
+publicly available network server or other readily accessible means,
+then you must either (1) cause the Corresponding Source to be so
+available, or (2) arrange to deprive yourself of the benefit of the
+patent license for this particular work, or (3) arrange, in a manner
+consistent with the requirements of this License, to extend the patent
+license to downstream recipients. "Knowingly relying" means you have
+actual knowledge that, but for the patent license, your conveying the
+covered work in a country, or your recipient's use of the covered work
+in a country, would infringe one or more identifiable patents in that
+country that you have reason to believe are valid.
+
+ If, pursuant to or in connection with a single transaction or
+arrangement, you convey, or propagate by procuring conveyance of, a
+covered work, and grant a patent license to some of the parties
+receiving the covered work authorizing them to use, propagate, modify
+or convey a specific copy of the covered work, then the patent license
+you grant is automatically extended to all recipients of the covered
+work and works based on it.
+
+ A patent license is "discriminatory" if it does not include within
+the scope of its coverage, prohibits the exercise of, or is
+conditioned on the non-exercise of one or more of the rights that are
+specifically granted under this License. You may not convey a covered
+work if you are a party to an arrangement with a third party that is
+in the business of distributing software, under which you make payment
+to the third party based on the extent of your activity of conveying
+the work, and under which the third party grants, to any of the
+parties who would receive the covered work from you, a discriminatory
+patent license (a) in connection with copies of the covered work
+conveyed by you (or copies made from those copies), or (b) primarily
+for and in connection with specific products or compilations that
+contain the covered work, unless you entered into that arrangement,
+or that patent license was granted, prior to 28 March 2007.
+
+ Nothing in this License shall be construed as excluding or limiting
+any implied license or other defenses to infringement that may
+otherwise be available to you under applicable patent law.
+
+ 12. No Surrender of Others' Freedom.
+
+ If conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot convey a
+covered work so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you may
+not convey it at all. For example, if you agree to terms that obligate you
+to collect a royalty for further conveying from those to whom you convey
+the Program, the only way you could satisfy both those terms and this
+License would be to refrain entirely from conveying the Program.
+
+ 13. Use with the GNU Affero General Public License.
+
+ Notwithstanding any other provision of this License, you have
+permission to link or combine any covered work with a work licensed
+under version 3 of the GNU Affero General Public License into a single
+combined work, and to convey the resulting work. The terms of this
+License will continue to apply to the part which is the covered work,
+but the special requirements of the GNU Affero General Public License,
+section 13, concerning interaction through a network will apply to the
+combination as such.
+
+ 14. Revised Versions of this License.
+
+ The Free Software Foundation may publish revised and/or new versions of
+the GNU General Public License from time to time. Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+ Each version is given a distinguishing version number. If the
+Program specifies that a certain numbered version of the GNU General
+Public License "or any later version" applies to it, you have the
+option of following the terms and conditions either of that numbered
+version or of any later version published by the Free Software
+Foundation. If the Program does not specify a version number of the
+GNU General Public License, you may choose any version ever published
+by the Free Software Foundation.
+
+ If the Program specifies that a proxy can decide which future
+versions of the GNU General Public License can be used, that proxy's
+public statement of acceptance of a version permanently authorizes you
+to choose that version for the Program.
+
+ Later license versions may give you additional or different
+permissions. However, no additional obligations are imposed on any
+author or copyright holder as a result of your choosing to follow a
+later version.
+
+ 15. Disclaimer of Warranty.
+
+ THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
+APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
+HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
+OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
+THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
+IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
+ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+ 16. Limitation of Liability.
+
+ IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
+THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
+GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
+USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
+DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
+PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
+EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGES.
+
+ 17. Interpretation of Sections 15 and 16.
+
+ If the disclaimer of warranty and limitation of liability provided
+above cannot be given local legal effect according to their terms,
+reviewing courts shall apply local law that most closely approximates
+an absolute waiver of all civil liability in connection with the
+Program, unless a warranty or assumption of liability accompanies a
+copy of the Program in return for a fee.
+
+ END OF TERMS AND CONDITIONS
diff --git a/src/ifcbimtester/COPYING.LESSER b/src/ifcbimtester/COPYING.LESSER
new file mode 100644
index 0000000000..0a041280bd
--- /dev/null
+++ b/src/ifcbimtester/COPYING.LESSER
@@ -0,0 +1,165 @@
+ GNU LESSER GENERAL PUBLIC LICENSE
+ Version 3, 29 June 2007
+
+ Copyright (C) 2007 Free Software Foundation, Inc.
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+
+ This version of the GNU Lesser General Public License incorporates
+the terms and conditions of version 3 of the GNU General Public
+License, supplemented by the additional permissions listed below.
+
+ 0. Additional Definitions.
+
+ As used herein, "this License" refers to version 3 of the GNU Lesser
+General Public License, and the "GNU GPL" refers to version 3 of the GNU
+General Public License.
+
+ "The Library" refers to a covered work governed by this License,
+other than an Application or a Combined Work as defined below.
+
+ An "Application" is any work that makes use of an interface provided
+by the Library, but which is not otherwise based on the Library.
+Defining a subclass of a class defined by the Library is deemed a mode
+of using an interface provided by the Library.
+
+ A "Combined Work" is a work produced by combining or linking an
+Application with the Library. The particular version of the Library
+with which the Combined Work was made is also called the "Linked
+Version".
+
+ The "Minimal Corresponding Source" for a Combined Work means the
+Corresponding Source for the Combined Work, excluding any source code
+for portions of the Combined Work that, considered in isolation, are
+based on the Application, and not on the Linked Version.
+
+ The "Corresponding Application Code" for a Combined Work means the
+object code and/or source code for the Application, including any data
+and utility programs needed for reproducing the Combined Work from the
+Application, but excluding the System Libraries of the Combined Work.
+
+ 1. Exception to Section 3 of the GNU GPL.
+
+ You may convey a covered work under sections 3 and 4 of this License
+without being bound by section 3 of the GNU GPL.
+
+ 2. Conveying Modified Versions.
+
+ If you modify a copy of the Library, and, in your modifications, a
+facility refers to a function or data to be supplied by an Application
+that uses the facility (other than as an argument passed when the
+facility is invoked), then you may convey a copy of the modified
+version:
+
+ a) under this License, provided that you make a good faith effort to
+ ensure that, in the event an Application does not supply the
+ function or data, the facility still operates, and performs
+ whatever part of its purpose remains meaningful, or
+
+ b) under the GNU GPL, with none of the additional permissions of
+ this License applicable to that copy.
+
+ 3. Object Code Incorporating Material from Library Header Files.
+
+ The object code form of an Application may incorporate material from
+a header file that is part of the Library. You may convey such object
+code under terms of your choice, provided that, if the incorporated
+material is not limited to numerical parameters, data structure
+layouts and accessors, or small macros, inline functions and templates
+(ten or fewer lines in length), you do both of the following:
+
+ a) Give prominent notice with each copy of the object code that the
+ Library is used in it and that the Library and its use are
+ covered by this License.
+
+ b) Accompany the object code with a copy of the GNU GPL and this license
+ document.
+
+ 4. Combined Works.
+
+ You may convey a Combined Work under terms of your choice that,
+taken together, effectively do not restrict modification of the
+portions of the Library contained in the Combined Work and reverse
+engineering for debugging such modifications, if you also do each of
+the following:
+
+ a) Give prominent notice with each copy of the Combined Work that
+ the Library is used in it and that the Library and its use are
+ covered by this License.
+
+ b) Accompany the Combined Work with a copy of the GNU GPL and this license
+ document.
+
+ c) For a Combined Work that displays copyright notices during
+ execution, include the copyright notice for the Library among
+ these notices, as well as a reference directing the user to the
+ copies of the GNU GPL and this license document.
+
+ d) Do one of the following:
+
+ 0) Convey the Minimal Corresponding Source under the terms of this
+ License, and the Corresponding Application Code in a form
+ suitable for, and under terms that permit, the user to
+ recombine or relink the Application with a modified version of
+ the Linked Version to produce a modified Combined Work, in the
+ manner specified by section 6 of the GNU GPL for conveying
+ Corresponding Source.
+
+ 1) Use a suitable shared library mechanism for linking with the
+ Library. A suitable mechanism is one that (a) uses at run time
+ a copy of the Library already present on the user's computer
+ system, and (b) will operate properly with a modified version
+ of the Library that is interface-compatible with the Linked
+ Version.
+
+ e) Provide Installation Information, but only if you would otherwise
+ be required to provide such information under section 6 of the
+ GNU GPL, and only to the extent that such information is
+ necessary to install and execute a modified version of the
+ Combined Work produced by recombining or relinking the
+ Application with a modified version of the Linked Version. (If
+ you use option 4d0, the Installation Information must accompany
+ the Minimal Corresponding Source and Corresponding Application
+ Code. If you use option 4d1, you must provide the Installation
+ Information in the manner specified by section 6 of the GNU GPL
+ for conveying Corresponding Source.)
+
+ 5. Combined Libraries.
+
+ You may place library facilities that are a work based on the
+Library side by side in a single library together with other library
+facilities that are not Applications and are not covered by this
+License, and convey such a combined library under terms of your
+choice, if you do both of the following:
+
+ a) Accompany the combined library with a copy of the same work based
+ on the Library, uncombined with any other library facilities,
+ conveyed under the terms of this License.
+
+ b) Give prominent notice with the combined library that part of it
+ is a work based on the Library, and explaining where to find the
+ accompanying uncombined form of the same work.
+
+ 6. Revised Versions of the GNU Lesser General Public License.
+
+ The Free Software Foundation may publish revised and/or new versions
+of the GNU Lesser General Public License from time to time. Such new
+versions will be similar in spirit to the present version, but may
+differ in detail to address new problems or concerns.
+
+ Each version is given a distinguishing version number. If the
+Library as you received it specifies that a certain numbered version
+of the GNU Lesser General Public License "or any later version"
+applies to it, you have the option of following the terms and
+conditions either of that published version or of any later version
+published by the Free Software Foundation. If the Library as you
+received it does not specify a version number of the GNU Lesser
+General Public License, you may choose any version of the GNU Lesser
+General Public License ever published by the Free Software Foundation.
+
+ If the Library as you received it specifies that a proxy can decide
+whether future versions of the GNU Lesser General Public License shall
+apply, that proxy's public statement of acceptance of any version is
+permanent authorization for you to choose that version for the
+Library.
diff --git a/src/ifcbimtester/bimtester/features/steps/all.py b/src/ifcbimtester/bimtester/features/steps/all.py
index 7270814868..6fcb45d576 100644
--- a/src/ifcbimtester/bimtester/features/steps/all.py
+++ b/src/ifcbimtester/bimtester/features/steps/all.py
@@ -20,4 +20,7 @@ use_step_matcher("parse")
from bimtester.features.steps.project_setup import de, en, fr, it, nl
use_step_matcher("parse")
-from bimtester.features.steps.aggregation import en
\ No newline at end of file
+from bimtester.features.steps.aggregation import en
+
+use_step_matcher("parse")
+from bimtester.features.steps.attributes_psets import en, de
diff --git a/src/ifcbimtester/bimtester/features/steps/attributes_psets/de.py b/src/ifcbimtester/bimtester/features/steps/attributes_psets/de.py
new file mode 100644
index 0000000000..b9080143e8
--- /dev/null
+++ b/src/ifcbimtester/bimtester/features/steps/attributes_psets/de.py
@@ -0,0 +1,8 @@
+from behave import step, use_step_matcher
+
+use_step_matcher("parse")
+
+
+@step("An alle {ifc_class} Bauteile ist im PSet {pset} das Attribut {aproperty} angehängt")
+def step_impl(context, ifc_class, aproperty, pset):
+ context.execute_steps(f"all {ifc_class} elements have an {aproperty} property in the {pset} pset")
diff --git a/src/ifcbimtester/bimtester/features/steps/attributes_psets/en.py b/src/ifcbimtester/bimtester/features/steps/attributes_psets/en.py
new file mode 100644
index 0000000000..3a3f5fb522
--- /dev/null
+++ b/src/ifcbimtester/bimtester/features/steps/attributes_psets/en.py
@@ -0,0 +1,91 @@
+from behave import step, use_step_matcher
+
+from bimtester.ifc import IfcStore
+from bimtester.util import assert_elements
+from bimtester.lang import _
+
+
+@step("All {ifc_class} elements have an {aproperty} property in the {pset} pset")
+def step_impl(context, ifc_class, aproperty, pset):
+ eleclass_has_property_in_pset(
+ context,
+ ifc_class,
+ aproperty,
+ pset
+ )
+
+
+# ------------------------------------------------------------------------
+# STEPS with Regular Expression Matcher ("re")
+# ------------------------------------------------------------------------
+use_step_matcher("re")
+
+
+@step(r"All (?P.*) elements have an? (?P.*\..*) property")
+def step_impl(context, ifc_class, property_path):
+ import re
+ pset, aproperty = property_path.split(".")
+ eleclass_has_property_in_pset(
+ context,
+ ifc_class,
+ aproperty,
+ pset
+ )
+
+
+@step(r'All (?P.*) elements have an? (?P.*\..*) property value matching the pattern "(?P.*)"'
+)
+def step_impl(context, ifc_class, property_path, pattern):
+ import re
+ from ifcopenshell.util.element import get_psets
+
+ pset_name, property_name = property_path.split(".")
+ elements = IfcStore.file.by_type(ifc_class)
+ for element in elements:
+
+ psets = get_psets(element)
+
+ if not pset_name in psets:
+ assert False
+
+ pset = psets[pset_name]
+ if not property_name in pset:
+ assert False
+
+ prop = pset[property_name]
+ # get_psets returns just strings
+
+ if not re.search(pattern, prop):
+ assert False
+
+
+def eleclass_has_property_in_pset(
+ context, ifc_class, aproperty, pset
+):
+ context.falseelems = []
+ context.falseguids = []
+ context.falseprops = {}
+ from ifcopenshell.util.element import get_psets
+
+ elements = IfcStore.file.by_type(ifc_class)
+ for elem in elements:
+ psets = get_psets(elem)
+ if not (pset in psets and aproperty in psets[pset]):
+ context.falseelems.append(str(elem))
+ context.falseguids.append(elem.GlobalId)
+ context.falseprops[elem.id()] = str(psets)
+
+ context.elemcount = len(elements)
+ context.falsecount = len(context.falseelems)
+ assert_elements(
+ ifc_class,
+ context.elemcount,
+ context.falsecount,
+ context.falseelems,
+ # TODO: Translate these messages into other languages
+ message_all_falseelems=_("All {elemcount} {ifc_class} elements are missing the property {parameter} in the pset."),
+ message_some_falseelems=_("The following {falsecount} of {elemcount} {ifc_class} elements are missing the property {parameter} in the pset: {falseelems}"),
+ message_no_elems=_("There are no {ifc_class} elements in the IFC file."),
+ parameter=aproperty
+ )
+ # the pset name is missing in the failing message, but it is in the step test name
diff --git a/src/ifcbimtester/bimtester/reports.py b/src/ifcbimtester/bimtester/reports.py
index 5a6683df0d..c76cb9b26c 100644
--- a/src/ifcbimtester/bimtester/reports.py
+++ b/src/ifcbimtester/bimtester/reports.py
@@ -2,6 +2,7 @@ import datetime
import json
import os
import pystache
+import sys
from bimtester.lang import _
diff --git a/src/ifcbimtester/examples/steps/attributes_psets.py b/src/ifcbimtester/examples/steps/attributes_psets.py
deleted file mode 100644
index 7eaa4cc596..0000000000
--- a/src/ifcbimtester/examples/steps/attributes_psets.py
+++ /dev/null
@@ -1,53 +0,0 @@
-from behave import step
-
-import attributes_psets_methods as apm
-from utils import assert_elements
-from utils import IfcFile
-from utils import switch_locale
-
-
-the_lang = "en"
-
-
-@step("all {ifc_class} elements have an {aproperty} property in the {pset} pset")
-def step_impl(context, ifc_class, aproperty, pset):
- switch_locale(context.localedir, the_lang)
- apm.eleclass_has_property_in_pset(
- context,
- ifc_class,
- aproperty,
- pset
- )
-
-
-# ------------------------------------------------------------------------
-# STEPS with Regular Expression Matcher ("re")
-# ------------------------------------------------------------------------
-use_step_matcher("re")
-
-
-@step("all (?P.*) elements have an? (?P.*\..*) property")
-def step_impl(context, ifc_class, property_path):
- pset_name, property_name = property_path.split(".")
- elements = IfcFile.get().by_type(ifc_class)
- for element in elements:
- if not IfcFile.get_property(element, pset_name, property_name):
- assert False
-
-
-@step(
- 'all (?P.*) elements have an? (?P.*\..*) property value matching the pattern "(?P.*)"'
-)
-def step_impl(context, ifc_class, property_path, pattern):
- import re
-
- pset_name, property_name = property_path.split(".")
- elements = IfcFile.get().by_type(ifc_class)
- for element in elements:
- prop = IfcFile.get_property(element, pset_name, property_name)
- if not prop:
- assert False
- # For now, we only check single values
- if prop.is_a("IfcPropertySingleValue"):
- if not (prop.NominalValue and re.search(pattern, prop.NominalValue.wrappedValue)):
- assert False
diff --git a/src/ifcbimtester/examples/steps/attributes_psets_de.py b/src/ifcbimtester/examples/steps/attributes_psets_de.py
deleted file mode 100644
index 941350becd..0000000000
--- a/src/ifcbimtester/examples/steps/attributes_psets_de.py
+++ /dev/null
@@ -1,18 +0,0 @@
-from behave import step
-
-import attributes_psets_methods as apm
-from utils import switch_locale
-
-
-the_lang = "de"
-
-
-@step("An alle {ifc_class} Bauteile ist im PSet {pset} das Attribut {aproperty} angehängt")
-def step_impl(context, ifc_class, aproperty, pset):
- switch_locale(context.localedir, the_lang)
- apm.eleclass_has_property_in_pset(
- context,
- ifc_class,
- aproperty,
- pset
- )
diff --git a/src/ifcbimtester/examples/steps/attributes_psets_fr.py b/src/ifcbimtester/examples/steps/attributes_psets_fr.py
deleted file mode 100644
index 29030d583e..0000000000
--- a/src/ifcbimtester/examples/steps/attributes_psets_fr.py
+++ /dev/null
@@ -1,21 +0,0 @@
-from behave import step
-
-import attributes_psets_methods as apm
-from utils import switch_locale
-
-
-the_lang = "fr"
-
-
-"""
-# TODO the next line needs translation
-@step("All {ifc_class} elements have an {aproperty} property in the {pset} pset")
-def step_impl(context, ifc_class, aproperty, pset):
- switch_locale(context.localedir, the_lang)
- apm.eleclass_has_property_in_pset(
- context,
- ifc_class,
- aproperty,
- pset
- )
-"""
diff --git a/src/ifcbimtester/examples/steps/attributes_psets_methods.py b/src/ifcbimtester/examples/steps/attributes_psets_methods.py
deleted file mode 100644
index 5e5fbfa08e..0000000000
--- a/src/ifcbimtester/examples/steps/attributes_psets_methods.py
+++ /dev/null
@@ -1,36 +0,0 @@
-import gettext # noqa
-
-from utils import assert_elements
-from utils import IfcFile
-
-
-def eleclass_has_property_in_pset(
- context, ifc_class, aproperty, pset
-):
-
- context.falseelems = []
- context.falseguids = []
- context.falseprops = {}
- from ifcopenshell.util.element import get_psets
-
- elements = IfcFile.get().by_type(ifc_class)
- for elem in elements:
- psets = get_psets(elem)
- if not (pset in psets and aproperty in psets[pset]):
- context.falseelems.append(str(elem))
- context.falseguids.append(elem.GlobalId)
- context.falseprops[elem.id()] = str(psets)
-
- context.elemcount = len(elements)
- context.falsecount = len(context.falseelems)
- assert_elements(
- ifc_class,
- context.elemcount,
- context.falsecount,
- context.falseelems,
- message_all_falseelems=_("All {elemcount} {ifc_class} elements are missing the property {parameter} in the pset."),
- message_some_falseelems=_("The following {falsecount} of {elemcount} {ifc_class} elements are missing the property {parameter} in the pset: {falseelems}"),
- message_no_elems=_("There are no {ifc_class} elements in the IFC file."),
- parameter=aproperty
- )
- # the pset name is missing in the failing message, but it is in the step test name
diff --git a/src/ifccityjson/COPYING b/src/ifccityjson/COPYING
new file mode 100644
index 0000000000..810fce6e9b
--- /dev/null
+++ b/src/ifccityjson/COPYING
@@ -0,0 +1,621 @@
+ GNU GENERAL PUBLIC LICENSE
+ Version 3, 29 June 2007
+
+ Copyright (C) 2007 Free Software Foundation, Inc.
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+ Preamble
+
+ The GNU General Public License is a free, copyleft license for
+software and other kinds of works.
+
+ The licenses for most software and other practical works are designed
+to take away your freedom to share and change the works. By contrast,
+the GNU General Public License is intended to guarantee your freedom to
+share and change all versions of a program--to make sure it remains free
+software for all its users. We, the Free Software Foundation, use the
+GNU General Public License for most of our software; it applies also to
+any other work released this way by its authors. You can apply it to
+your programs, too.
+
+ When we speak of free software, we are referring to freedom, not
+price. Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+them if you wish), that you receive source code or can get it if you
+want it, that you can change the software or use pieces of it in new
+free programs, and that you know you can do these things.
+
+ To protect your rights, we need to prevent others from denying you
+these rights or asking you to surrender the rights. Therefore, you have
+certain responsibilities if you distribute copies of the software, or if
+you modify it: responsibilities to respect the freedom of others.
+
+ For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must pass on to the recipients the same
+freedoms that you received. You must make sure that they, too, receive
+or can get the source code. And you must show them these terms so they
+know their rights.
+
+ Developers that use the GNU GPL protect your rights with two steps:
+(1) assert copyright on the software, and (2) offer you this License
+giving you legal permission to copy, distribute and/or modify it.
+
+ For the developers' and authors' protection, the GPL clearly explains
+that there is no warranty for this free software. For both users' and
+authors' sake, the GPL requires that modified versions be marked as
+changed, so that their problems will not be attributed erroneously to
+authors of previous versions.
+
+ Some devices are designed to deny users access to install or run
+modified versions of the software inside them, although the manufacturer
+can do so. This is fundamentally incompatible with the aim of
+protecting users' freedom to change the software. The systematic
+pattern of such abuse occurs in the area of products for individuals to
+use, which is precisely where it is most unacceptable. Therefore, we
+have designed this version of the GPL to prohibit the practice for those
+products. If such problems arise substantially in other domains, we
+stand ready to extend this provision to those domains in future versions
+of the GPL, as needed to protect the freedom of users.
+
+ Finally, every program is threatened constantly by software patents.
+States should not allow patents to restrict development and use of
+software on general-purpose computers, but in those that do, we wish to
+avoid the special danger that patents applied to a free program could
+make it effectively proprietary. To prevent this, the GPL assures that
+patents cannot be used to render the program non-free.
+
+ The precise terms and conditions for copying, distribution and
+modification follow.
+
+ TERMS AND CONDITIONS
+
+ 0. Definitions.
+
+ "This License" refers to version 3 of the GNU General Public License.
+
+ "Copyright" also means copyright-like laws that apply to other kinds of
+works, such as semiconductor masks.
+
+ "The Program" refers to any copyrightable work licensed under this
+License. Each licensee is addressed as "you". "Licensees" and
+"recipients" may be individuals or organizations.
+
+ To "modify" a work means to copy from or adapt all or part of the work
+in a fashion requiring copyright permission, other than the making of an
+exact copy. The resulting work is called a "modified version" of the
+earlier work or a work "based on" the earlier work.
+
+ A "covered work" means either the unmodified Program or a work based
+on the Program.
+
+ To "propagate" a work means to do anything with it that, without
+permission, would make you directly or secondarily liable for
+infringement under applicable copyright law, except executing it on a
+computer or modifying a private copy. Propagation includes copying,
+distribution (with or without modification), making available to the
+public, and in some countries other activities as well.
+
+ To "convey" a work means any kind of propagation that enables other
+parties to make or receive copies. Mere interaction with a user through
+a computer network, with no transfer of a copy, is not conveying.
+
+ An interactive user interface displays "Appropriate Legal Notices"
+to the extent that it includes a convenient and prominently visible
+feature that (1) displays an appropriate copyright notice, and (2)
+tells the user that there is no warranty for the work (except to the
+extent that warranties are provided), that licensees may convey the
+work under this License, and how to view a copy of this License. If
+the interface presents a list of user commands or options, such as a
+menu, a prominent item in the list meets this criterion.
+
+ 1. Source Code.
+
+ The "source code" for a work means the preferred form of the work
+for making modifications to it. "Object code" means any non-source
+form of a work.
+
+ A "Standard Interface" means an interface that either is an official
+standard defined by a recognized standards body, or, in the case of
+interfaces specified for a particular programming language, one that
+is widely used among developers working in that language.
+
+ The "System Libraries" of an executable work include anything, other
+than the work as a whole, that (a) is included in the normal form of
+packaging a Major Component, but which is not part of that Major
+Component, and (b) serves only to enable use of the work with that
+Major Component, or to implement a Standard Interface for which an
+implementation is available to the public in source code form. A
+"Major Component", in this context, means a major essential component
+(kernel, window system, and so on) of the specific operating system
+(if any) on which the executable work runs, or a compiler used to
+produce the work, or an object code interpreter used to run it.
+
+ The "Corresponding Source" for a work in object code form means all
+the source code needed to generate, install, and (for an executable
+work) run the object code and to modify the work, including scripts to
+control those activities. However, it does not include the work's
+System Libraries, or general-purpose tools or generally available free
+programs which are used unmodified in performing those activities but
+which are not part of the work. For example, Corresponding Source
+includes interface definition files associated with source files for
+the work, and the source code for shared libraries and dynamically
+linked subprograms that the work is specifically designed to require,
+such as by intimate data communication or control flow between those
+subprograms and other parts of the work.
+
+ The Corresponding Source need not include anything that users
+can regenerate automatically from other parts of the Corresponding
+Source.
+
+ The Corresponding Source for a work in source code form is that
+same work.
+
+ 2. Basic Permissions.
+
+ All rights granted under this License are granted for the term of
+copyright on the Program, and are irrevocable provided the stated
+conditions are met. This License explicitly affirms your unlimited
+permission to run the unmodified Program. The output from running a
+covered work is covered by this License only if the output, given its
+content, constitutes a covered work. This License acknowledges your
+rights of fair use or other equivalent, as provided by copyright law.
+
+ You may make, run and propagate covered works that you do not
+convey, without conditions so long as your license otherwise remains
+in force. You may convey covered works to others for the sole purpose
+of having them make modifications exclusively for you, or provide you
+with facilities for running those works, provided that you comply with
+the terms of this License in conveying all material for which you do
+not control copyright. Those thus making or running the covered works
+for you must do so exclusively on your behalf, under your direction
+and control, on terms that prohibit them from making any copies of
+your copyrighted material outside their relationship with you.
+
+ Conveying under any other circumstances is permitted solely under
+the conditions stated below. Sublicensing is not allowed; section 10
+makes it unnecessary.
+
+ 3. Protecting Users' Legal Rights From Anti-Circumvention Law.
+
+ No covered work shall be deemed part of an effective technological
+measure under any applicable law fulfilling obligations under article
+11 of the WIPO copyright treaty adopted on 20 December 1996, or
+similar laws prohibiting or restricting circumvention of such
+measures.
+
+ When you convey a covered work, you waive any legal power to forbid
+circumvention of technological measures to the extent such circumvention
+is effected by exercising rights under this License with respect to
+the covered work, and you disclaim any intention to limit operation or
+modification of the work as a means of enforcing, against the work's
+users, your or third parties' legal rights to forbid circumvention of
+technological measures.
+
+ 4. Conveying Verbatim Copies.
+
+ You may convey verbatim copies of the Program's source code as you
+receive it, in any medium, provided that you conspicuously and
+appropriately publish on each copy an appropriate copyright notice;
+keep intact all notices stating that this License and any
+non-permissive terms added in accord with section 7 apply to the code;
+keep intact all notices of the absence of any warranty; and give all
+recipients a copy of this License along with the Program.
+
+ You may charge any price or no price for each copy that you convey,
+and you may offer support or warranty protection for a fee.
+
+ 5. Conveying Modified Source Versions.
+
+ You may convey a work based on the Program, or the modifications to
+produce it from the Program, in the form of source code under the
+terms of section 4, provided that you also meet all of these conditions:
+
+ a) The work must carry prominent notices stating that you modified
+ it, and giving a relevant date.
+
+ b) The work must carry prominent notices stating that it is
+ released under this License and any conditions added under section
+ 7. This requirement modifies the requirement in section 4 to
+ "keep intact all notices".
+
+ c) You must license the entire work, as a whole, under this
+ License to anyone who comes into possession of a copy. This
+ License will therefore apply, along with any applicable section 7
+ additional terms, to the whole of the work, and all its parts,
+ regardless of how they are packaged. This License gives no
+ permission to license the work in any other way, but it does not
+ invalidate such permission if you have separately received it.
+
+ d) If the work has interactive user interfaces, each must display
+ Appropriate Legal Notices; however, if the Program has interactive
+ interfaces that do not display Appropriate Legal Notices, your
+ work need not make them do so.
+
+ A compilation of a covered work with other separate and independent
+works, which are not by their nature extensions of the covered work,
+and which are not combined with it such as to form a larger program,
+in or on a volume of a storage or distribution medium, is called an
+"aggregate" if the compilation and its resulting copyright are not
+used to limit the access or legal rights of the compilation's users
+beyond what the individual works permit. Inclusion of a covered work
+in an aggregate does not cause this License to apply to the other
+parts of the aggregate.
+
+ 6. Conveying Non-Source Forms.
+
+ You may convey a covered work in object code form under the terms
+of sections 4 and 5, provided that you also convey the
+machine-readable Corresponding Source under the terms of this License,
+in one of these ways:
+
+ a) Convey the object code in, or embodied in, a physical product
+ (including a physical distribution medium), accompanied by the
+ Corresponding Source fixed on a durable physical medium
+ customarily used for software interchange.
+
+ b) Convey the object code in, or embodied in, a physical product
+ (including a physical distribution medium), accompanied by a
+ written offer, valid for at least three years and valid for as
+ long as you offer spare parts or customer support for that product
+ model, to give anyone who possesses the object code either (1) a
+ copy of the Corresponding Source for all the software in the
+ product that is covered by this License, on a durable physical
+ medium customarily used for software interchange, for a price no
+ more than your reasonable cost of physically performing this
+ conveying of source, or (2) access to copy the
+ Corresponding Source from a network server at no charge.
+
+ c) Convey individual copies of the object code with a copy of the
+ written offer to provide the Corresponding Source. This
+ alternative is allowed only occasionally and noncommercially, and
+ only if you received the object code with such an offer, in accord
+ with subsection 6b.
+
+ d) Convey the object code by offering access from a designated
+ place (gratis or for a charge), and offer equivalent access to the
+ Corresponding Source in the same way through the same place at no
+ further charge. You need not require recipients to copy the
+ Corresponding Source along with the object code. If the place to
+ copy the object code is a network server, the Corresponding Source
+ may be on a different server (operated by you or a third party)
+ that supports equivalent copying facilities, provided you maintain
+ clear directions next to the object code saying where to find the
+ Corresponding Source. Regardless of what server hosts the
+ Corresponding Source, you remain obligated to ensure that it is
+ available for as long as needed to satisfy these requirements.
+
+ e) Convey the object code using peer-to-peer transmission, provided
+ you inform other peers where the object code and Corresponding
+ Source of the work are being offered to the general public at no
+ charge under subsection 6d.
+
+ A separable portion of the object code, whose source code is excluded
+from the Corresponding Source as a System Library, need not be
+included in conveying the object code work.
+
+ A "User Product" is either (1) a "consumer product", which means any
+tangible personal property which is normally used for personal, family,
+or household purposes, or (2) anything designed or sold for incorporation
+into a dwelling. In determining whether a product is a consumer product,
+doubtful cases shall be resolved in favor of coverage. For a particular
+product received by a particular user, "normally used" refers to a
+typical or common use of that class of product, regardless of the status
+of the particular user or of the way in which the particular user
+actually uses, or expects or is expected to use, the product. A product
+is a consumer product regardless of whether the product has substantial
+commercial, industrial or non-consumer uses, unless such uses represent
+the only significant mode of use of the product.
+
+ "Installation Information" for a User Product means any methods,
+procedures, authorization keys, or other information required to install
+and execute modified versions of a covered work in that User Product from
+a modified version of its Corresponding Source. The information must
+suffice to ensure that the continued functioning of the modified object
+code is in no case prevented or interfered with solely because
+modification has been made.
+
+ If you convey an object code work under this section in, or with, or
+specifically for use in, a User Product, and the conveying occurs as
+part of a transaction in which the right of possession and use of the
+User Product is transferred to the recipient in perpetuity or for a
+fixed term (regardless of how the transaction is characterized), the
+Corresponding Source conveyed under this section must be accompanied
+by the Installation Information. But this requirement does not apply
+if neither you nor any third party retains the ability to install
+modified object code on the User Product (for example, the work has
+been installed in ROM).
+
+ The requirement to provide Installation Information does not include a
+requirement to continue to provide support service, warranty, or updates
+for a work that has been modified or installed by the recipient, or for
+the User Product in which it has been modified or installed. Access to a
+network may be denied when the modification itself materially and
+adversely affects the operation of the network or violates the rules and
+protocols for communication across the network.
+
+ Corresponding Source conveyed, and Installation Information provided,
+in accord with this section must be in a format that is publicly
+documented (and with an implementation available to the public in
+source code form), and must require no special password or key for
+unpacking, reading or copying.
+
+ 7. Additional Terms.
+
+ "Additional permissions" are terms that supplement the terms of this
+License by making exceptions from one or more of its conditions.
+Additional permissions that are applicable to the entire Program shall
+be treated as though they were included in this License, to the extent
+that they are valid under applicable law. If additional permissions
+apply only to part of the Program, that part may be used separately
+under those permissions, but the entire Program remains governed by
+this License without regard to the additional permissions.
+
+ When you convey a copy of a covered work, you may at your option
+remove any additional permissions from that copy, or from any part of
+it. (Additional permissions may be written to require their own
+removal in certain cases when you modify the work.) You may place
+additional permissions on material, added by you to a covered work,
+for which you have or can give appropriate copyright permission.
+
+ Notwithstanding any other provision of this License, for material you
+add to a covered work, you may (if authorized by the copyright holders of
+that material) supplement the terms of this License with terms:
+
+ a) Disclaiming warranty or limiting liability differently from the
+ terms of sections 15 and 16 of this License; or
+
+ b) Requiring preservation of specified reasonable legal notices or
+ author attributions in that material or in the Appropriate Legal
+ Notices displayed by works containing it; or
+
+ c) Prohibiting misrepresentation of the origin of that material, or
+ requiring that modified versions of such material be marked in
+ reasonable ways as different from the original version; or
+
+ d) Limiting the use for publicity purposes of names of licensors or
+ authors of the material; or
+
+ e) Declining to grant rights under trademark law for use of some
+ trade names, trademarks, or service marks; or
+
+ f) Requiring indemnification of licensors and authors of that
+ material by anyone who conveys the material (or modified versions of
+ it) with contractual assumptions of liability to the recipient, for
+ any liability that these contractual assumptions directly impose on
+ those licensors and authors.
+
+ All other non-permissive additional terms are considered "further
+restrictions" within the meaning of section 10. If the Program as you
+received it, or any part of it, contains a notice stating that it is
+governed by this License along with a term that is a further
+restriction, you may remove that term. If a license document contains
+a further restriction but permits relicensing or conveying under this
+License, you may add to a covered work material governed by the terms
+of that license document, provided that the further restriction does
+not survive such relicensing or conveying.
+
+ If you add terms to a covered work in accord with this section, you
+must place, in the relevant source files, a statement of the
+additional terms that apply to those files, or a notice indicating
+where to find the applicable terms.
+
+ Additional terms, permissive or non-permissive, may be stated in the
+form of a separately written license, or stated as exceptions;
+the above requirements apply either way.
+
+ 8. Termination.
+
+ You may not propagate or modify a covered work except as expressly
+provided under this License. Any attempt otherwise to propagate or
+modify it is void, and will automatically terminate your rights under
+this License (including any patent licenses granted under the third
+paragraph of section 11).
+
+ However, if you cease all violation of this License, then your
+license from a particular copyright holder is reinstated (a)
+provisionally, unless and until the copyright holder explicitly and
+finally terminates your license, and (b) permanently, if the copyright
+holder fails to notify you of the violation by some reasonable means
+prior to 60 days after the cessation.
+
+ Moreover, your license from a particular copyright holder is
+reinstated permanently if the copyright holder notifies you of the
+violation by some reasonable means, this is the first time you have
+received notice of violation of this License (for any work) from that
+copyright holder, and you cure the violation prior to 30 days after
+your receipt of the notice.
+
+ Termination of your rights under this section does not terminate the
+licenses of parties who have received copies or rights from you under
+this License. If your rights have been terminated and not permanently
+reinstated, you do not qualify to receive new licenses for the same
+material under section 10.
+
+ 9. Acceptance Not Required for Having Copies.
+
+ You are not required to accept this License in order to receive or
+run a copy of the Program. Ancillary propagation of a covered work
+occurring solely as a consequence of using peer-to-peer transmission
+to receive a copy likewise does not require acceptance. However,
+nothing other than this License grants you permission to propagate or
+modify any covered work. These actions infringe copyright if you do
+not accept this License. Therefore, by modifying or propagating a
+covered work, you indicate your acceptance of this License to do so.
+
+ 10. Automatic Licensing of Downstream Recipients.
+
+ Each time you convey a covered work, the recipient automatically
+receives a license from the original licensors, to run, modify and
+propagate that work, subject to this License. You are not responsible
+for enforcing compliance by third parties with this License.
+
+ An "entity transaction" is a transaction transferring control of an
+organization, or substantially all assets of one, or subdividing an
+organization, or merging organizations. If propagation of a covered
+work results from an entity transaction, each party to that
+transaction who receives a copy of the work also receives whatever
+licenses to the work the party's predecessor in interest had or could
+give under the previous paragraph, plus a right to possession of the
+Corresponding Source of the work from the predecessor in interest, if
+the predecessor has it or can get it with reasonable efforts.
+
+ You may not impose any further restrictions on the exercise of the
+rights granted or affirmed under this License. For example, you may
+not impose a license fee, royalty, or other charge for exercise of
+rights granted under this License, and you may not initiate litigation
+(including a cross-claim or counterclaim in a lawsuit) alleging that
+any patent claim is infringed by making, using, selling, offering for
+sale, or importing the Program or any portion of it.
+
+ 11. Patents.
+
+ A "contributor" is a copyright holder who authorizes use under this
+License of the Program or a work on which the Program is based. The
+work thus licensed is called the contributor's "contributor version".
+
+ A contributor's "essential patent claims" are all patent claims
+owned or controlled by the contributor, whether already acquired or
+hereafter acquired, that would be infringed by some manner, permitted
+by this License, of making, using, or selling its contributor version,
+but do not include claims that would be infringed only as a
+consequence of further modification of the contributor version. For
+purposes of this definition, "control" includes the right to grant
+patent sublicenses in a manner consistent with the requirements of
+this License.
+
+ Each contributor grants you a non-exclusive, worldwide, royalty-free
+patent license under the contributor's essential patent claims, to
+make, use, sell, offer for sale, import and otherwise run, modify and
+propagate the contents of its contributor version.
+
+ In the following three paragraphs, a "patent license" is any express
+agreement or commitment, however denominated, not to enforce a patent
+(such as an express permission to practice a patent or covenant not to
+sue for patent infringement). To "grant" such a patent license to a
+party means to make such an agreement or commitment not to enforce a
+patent against the party.
+
+ If you convey a covered work, knowingly relying on a patent license,
+and the Corresponding Source of the work is not available for anyone
+to copy, free of charge and under the terms of this License, through a
+publicly available network server or other readily accessible means,
+then you must either (1) cause the Corresponding Source to be so
+available, or (2) arrange to deprive yourself of the benefit of the
+patent license for this particular work, or (3) arrange, in a manner
+consistent with the requirements of this License, to extend the patent
+license to downstream recipients. "Knowingly relying" means you have
+actual knowledge that, but for the patent license, your conveying the
+covered work in a country, or your recipient's use of the covered work
+in a country, would infringe one or more identifiable patents in that
+country that you have reason to believe are valid.
+
+ If, pursuant to or in connection with a single transaction or
+arrangement, you convey, or propagate by procuring conveyance of, a
+covered work, and grant a patent license to some of the parties
+receiving the covered work authorizing them to use, propagate, modify
+or convey a specific copy of the covered work, then the patent license
+you grant is automatically extended to all recipients of the covered
+work and works based on it.
+
+ A patent license is "discriminatory" if it does not include within
+the scope of its coverage, prohibits the exercise of, or is
+conditioned on the non-exercise of one or more of the rights that are
+specifically granted under this License. You may not convey a covered
+work if you are a party to an arrangement with a third party that is
+in the business of distributing software, under which you make payment
+to the third party based on the extent of your activity of conveying
+the work, and under which the third party grants, to any of the
+parties who would receive the covered work from you, a discriminatory
+patent license (a) in connection with copies of the covered work
+conveyed by you (or copies made from those copies), or (b) primarily
+for and in connection with specific products or compilations that
+contain the covered work, unless you entered into that arrangement,
+or that patent license was granted, prior to 28 March 2007.
+
+ Nothing in this License shall be construed as excluding or limiting
+any implied license or other defenses to infringement that may
+otherwise be available to you under applicable patent law.
+
+ 12. No Surrender of Others' Freedom.
+
+ If conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot convey a
+covered work so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you may
+not convey it at all. For example, if you agree to terms that obligate you
+to collect a royalty for further conveying from those to whom you convey
+the Program, the only way you could satisfy both those terms and this
+License would be to refrain entirely from conveying the Program.
+
+ 13. Use with the GNU Affero General Public License.
+
+ Notwithstanding any other provision of this License, you have
+permission to link or combine any covered work with a work licensed
+under version 3 of the GNU Affero General Public License into a single
+combined work, and to convey the resulting work. The terms of this
+License will continue to apply to the part which is the covered work,
+but the special requirements of the GNU Affero General Public License,
+section 13, concerning interaction through a network will apply to the
+combination as such.
+
+ 14. Revised Versions of this License.
+
+ The Free Software Foundation may publish revised and/or new versions of
+the GNU General Public License from time to time. Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+ Each version is given a distinguishing version number. If the
+Program specifies that a certain numbered version of the GNU General
+Public License "or any later version" applies to it, you have the
+option of following the terms and conditions either of that numbered
+version or of any later version published by the Free Software
+Foundation. If the Program does not specify a version number of the
+GNU General Public License, you may choose any version ever published
+by the Free Software Foundation.
+
+ If the Program specifies that a proxy can decide which future
+versions of the GNU General Public License can be used, that proxy's
+public statement of acceptance of a version permanently authorizes you
+to choose that version for the Program.
+
+ Later license versions may give you additional or different
+permissions. However, no additional obligations are imposed on any
+author or copyright holder as a result of your choosing to follow a
+later version.
+
+ 15. Disclaimer of Warranty.
+
+ THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
+APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
+HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
+OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
+THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
+IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
+ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+ 16. Limitation of Liability.
+
+ IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
+THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
+GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
+USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
+DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
+PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
+EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGES.
+
+ 17. Interpretation of Sections 15 and 16.
+
+ If the disclaimer of warranty and limitation of liability provided
+above cannot be given local legal effect according to their terms,
+reviewing courts shall apply local law that most closely approximates
+an absolute waiver of all civil liability in connection with the
+Program, unless a warranty or assumption of liability accompanies a
+copy of the Program in return for a fee.
+
+ END OF TERMS AND CONDITIONS
diff --git a/src/ifccityjson/COPYING.LESSER b/src/ifccityjson/COPYING.LESSER
new file mode 100644
index 0000000000..0a041280bd
--- /dev/null
+++ b/src/ifccityjson/COPYING.LESSER
@@ -0,0 +1,165 @@
+ GNU LESSER GENERAL PUBLIC LICENSE
+ Version 3, 29 June 2007
+
+ Copyright (C) 2007 Free Software Foundation, Inc.
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+
+ This version of the GNU Lesser General Public License incorporates
+the terms and conditions of version 3 of the GNU General Public
+License, supplemented by the additional permissions listed below.
+
+ 0. Additional Definitions.
+
+ As used herein, "this License" refers to version 3 of the GNU Lesser
+General Public License, and the "GNU GPL" refers to version 3 of the GNU
+General Public License.
+
+ "The Library" refers to a covered work governed by this License,
+other than an Application or a Combined Work as defined below.
+
+ An "Application" is any work that makes use of an interface provided
+by the Library, but which is not otherwise based on the Library.
+Defining a subclass of a class defined by the Library is deemed a mode
+of using an interface provided by the Library.
+
+ A "Combined Work" is a work produced by combining or linking an
+Application with the Library. The particular version of the Library
+with which the Combined Work was made is also called the "Linked
+Version".
+
+ The "Minimal Corresponding Source" for a Combined Work means the
+Corresponding Source for the Combined Work, excluding any source code
+for portions of the Combined Work that, considered in isolation, are
+based on the Application, and not on the Linked Version.
+
+ The "Corresponding Application Code" for a Combined Work means the
+object code and/or source code for the Application, including any data
+and utility programs needed for reproducing the Combined Work from the
+Application, but excluding the System Libraries of the Combined Work.
+
+ 1. Exception to Section 3 of the GNU GPL.
+
+ You may convey a covered work under sections 3 and 4 of this License
+without being bound by section 3 of the GNU GPL.
+
+ 2. Conveying Modified Versions.
+
+ If you modify a copy of the Library, and, in your modifications, a
+facility refers to a function or data to be supplied by an Application
+that uses the facility (other than as an argument passed when the
+facility is invoked), then you may convey a copy of the modified
+version:
+
+ a) under this License, provided that you make a good faith effort to
+ ensure that, in the event an Application does not supply the
+ function or data, the facility still operates, and performs
+ whatever part of its purpose remains meaningful, or
+
+ b) under the GNU GPL, with none of the additional permissions of
+ this License applicable to that copy.
+
+ 3. Object Code Incorporating Material from Library Header Files.
+
+ The object code form of an Application may incorporate material from
+a header file that is part of the Library. You may convey such object
+code under terms of your choice, provided that, if the incorporated
+material is not limited to numerical parameters, data structure
+layouts and accessors, or small macros, inline functions and templates
+(ten or fewer lines in length), you do both of the following:
+
+ a) Give prominent notice with each copy of the object code that the
+ Library is used in it and that the Library and its use are
+ covered by this License.
+
+ b) Accompany the object code with a copy of the GNU GPL and this license
+ document.
+
+ 4. Combined Works.
+
+ You may convey a Combined Work under terms of your choice that,
+taken together, effectively do not restrict modification of the
+portions of the Library contained in the Combined Work and reverse
+engineering for debugging such modifications, if you also do each of
+the following:
+
+ a) Give prominent notice with each copy of the Combined Work that
+ the Library is used in it and that the Library and its use are
+ covered by this License.
+
+ b) Accompany the Combined Work with a copy of the GNU GPL and this license
+ document.
+
+ c) For a Combined Work that displays copyright notices during
+ execution, include the copyright notice for the Library among
+ these notices, as well as a reference directing the user to the
+ copies of the GNU GPL and this license document.
+
+ d) Do one of the following:
+
+ 0) Convey the Minimal Corresponding Source under the terms of this
+ License, and the Corresponding Application Code in a form
+ suitable for, and under terms that permit, the user to
+ recombine or relink the Application with a modified version of
+ the Linked Version to produce a modified Combined Work, in the
+ manner specified by section 6 of the GNU GPL for conveying
+ Corresponding Source.
+
+ 1) Use a suitable shared library mechanism for linking with the
+ Library. A suitable mechanism is one that (a) uses at run time
+ a copy of the Library already present on the user's computer
+ system, and (b) will operate properly with a modified version
+ of the Library that is interface-compatible with the Linked
+ Version.
+
+ e) Provide Installation Information, but only if you would otherwise
+ be required to provide such information under section 6 of the
+ GNU GPL, and only to the extent that such information is
+ necessary to install and execute a modified version of the
+ Combined Work produced by recombining or relinking the
+ Application with a modified version of the Linked Version. (If
+ you use option 4d0, the Installation Information must accompany
+ the Minimal Corresponding Source and Corresponding Application
+ Code. If you use option 4d1, you must provide the Installation
+ Information in the manner specified by section 6 of the GNU GPL
+ for conveying Corresponding Source.)
+
+ 5. Combined Libraries.
+
+ You may place library facilities that are a work based on the
+Library side by side in a single library together with other library
+facilities that are not Applications and are not covered by this
+License, and convey such a combined library under terms of your
+choice, if you do both of the following:
+
+ a) Accompany the combined library with a copy of the same work based
+ on the Library, uncombined with any other library facilities,
+ conveyed under the terms of this License.
+
+ b) Give prominent notice with the combined library that part of it
+ is a work based on the Library, and explaining where to find the
+ accompanying uncombined form of the same work.
+
+ 6. Revised Versions of the GNU Lesser General Public License.
+
+ The Free Software Foundation may publish revised and/or new versions
+of the GNU Lesser General Public License from time to time. Such new
+versions will be similar in spirit to the present version, but may
+differ in detail to address new problems or concerns.
+
+ Each version is given a distinguishing version number. If the
+Library as you received it specifies that a certain numbered version
+of the GNU Lesser General Public License "or any later version"
+applies to it, you have the option of following the terms and
+conditions either of that published version or of any later version
+published by the Free Software Foundation. If the Library as you
+received it does not specify a version number of the GNU Lesser
+General Public License, you may choose any version of the GNU Lesser
+General Public License ever published by the Free Software Foundation.
+
+ If the Library as you received it specifies that a proxy can decide
+whether future versions of the GNU Lesser General Public License shall
+apply, that proxy's public statement of acceptance of any version is
+permanent authorization for you to choose that version for the
+Library.
diff --git a/src/ifccityjson/README.md b/src/ifccityjson/README.md
index 95183145ed..d15fb01142 100644
--- a/src/ifccityjson/README.md
+++ b/src/ifccityjson/README.md
@@ -19,8 +19,8 @@ The example file that could be used is example/3D_BAG_example.json
python ifccityjson.py -i example/3DBAG_example.json -o example/3DBAG_example.ifc -n identificatie
## Implemented geometries
-- [ ] "MultiPoint"
-- [ ] "MultiLineString"
+- [x] "MultiPoint"
+- [x] "MultiLineString"
- [x] "MultiSurface"
- [x] "CompositeSurface"
- [x] "Solid": exterior shell
@@ -34,5 +34,5 @@ The example file that could be used is example/3D_BAG_example.json
- [x] Implement georeferencing
- [x] Do not use template IFC for new IFC file, but make IFC file from scratch
- [x] Create mapping to IFC for all CityJSON object types & semantic surfaces
-- [ ] Implement conversion of all geometries
-- [ ] Implement conversion of all LODs instead of online the most detailed
+- [ ] Implement conversion of all CitYJSON geometries
+- [ ] Implement conversion of all LODs instead of only the most detailed
diff --git a/src/ifccityjson/cityjson2ifc.py b/src/ifccityjson/cityjson2ifc.py
index 2a53cb1833..986d203913 100644
--- a/src/ifccityjson/cityjson2ifc.py
+++ b/src/ifccityjson/cityjson2ifc.py
@@ -1,3 +1,22 @@
+
+# ifccityjson - Python CityJSON to IFC converter
+# Copyright (C) 2021 Laurens J.N. Oostwegel
+#
+# This file is part of ifccityjson.
+#
+# ifccityjson is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# ifccityjson is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public License
+# along with ifccityjson. If not, see .
+
import ifcopenshell
import ifcopenshell.api
from geometry import GeometryIO
@@ -87,15 +106,14 @@ class Cityjson2ifc:
def create_new_file(self):
self.IFC_model = ifcopenshell.api.run("project.create_file")
self.IFC_project = ifcopenshell.api.run("root.create_entity", self.IFC_model, **{"ifc_class": "IfcProject"})
+ ifcopenshell.api.run("unit.assign_unit", self.IFC_model, length={"is_metric": True, "raw": "METERS"})
self.properties["owner_history"] = self.create_owner_history()
- ifcopenshell.api.run("unit.assign_unit", self.IFC_model)
self.IFC_representation_context = ifcopenshell.api.run("context.add_context", self.IFC_model,
**{"context": "Model"})
self.IFC_representation_sub_context = ifcopenshell.api.run("context.add_context", self.IFC_model,
**{"context": "Model",
"subcontext": "Body", # LODs as subcontext
"target_view": "MODEL_VIEW"})
-
self.IFC_site = ifcopenshell.api.run("root.create_entity", self.IFC_model,
**{"ifc_class": "IfcSite",
"name": "My Site"})
@@ -131,7 +149,7 @@ class Cityjson2ifc:
data.update(mapping[1])
# attributes
- IFC_name = None
+ IFC_name = obj_id
if "name_attribute" in self.properties and self.properties["name_attribute"] in obj.attributes:
IFC_name = obj.attributes[self.properties["name_attribute"]]
@@ -156,25 +174,26 @@ class Cityjson2ifc:
child_data = {"GlobalId": ifcopenshell.guid.new(),
"Name": IFC_child_class
}
+
# CREATE ENTITY
surface_geometry = self.geometry.create_IFC_surface(self.IFC_model, geometry, surface_id)
if surface_geometry:
- child_data["Representation"] = self.create_IFC_representation(surface_geometry)
+ child_data["Representation"] = self.create_IFC_representation(surface_geometry, 'brep')
IFC_children.append(self.IFC_model.create_entity(IFC_child_class, **child_data))
else:
- IFC_geometry = self.geometry.create_IFC_geometry(self.IFC_model, geometry)
+ IFC_geometry, shape_representation_type = self.geometry.create_IFC_geometry(self.IFC_model, geometry)
if IFC_geometry:
- data["Representation"] = self.create_IFC_representation(IFC_geometry)
+ data["Representation"] = self.create_IFC_representation(IFC_geometry, shape_representation_type)
data["GlobalId"] = ifcopenshell.guid.new()
data["Name"] = IFC_name
IFC_object = self.IFC_model.create_entity(IFC_class, **data)
# Define aggregation
- self.IFC_model.create_entity("IfcRelAggregates",
+ self.IFC_model.create_entity("IfcRelContainedInSpatialStructure",
**{"GlobalId": ifcopenshell.guid.new(),
- "RelatedObjects": [IFC_object],
- "RelatingObject": self.IFC_site}
+ "RelatedElements": [IFC_object],
+ "RelatingStructure": self.IFC_site}
)
if IFC_children:
self.IFC_model.create_entity("IfcRelAggregates",
@@ -184,10 +203,13 @@ class Cityjson2ifc:
self.create_property_set(obj.attributes, IFC_object)
- def create_IFC_representation(self, IFC_geometry):
+ def create_IFC_representation(self, IFC_geometry, shape_representation_type):
+ if not isinstance(IFC_geometry, list):
+ IFC_geometry = [IFC_geometry]
+
shape_representation = self.IFC_model.create_entity("IfcShapeRepresentation",
- self.IFC_representation_sub_context, 'Body', 'Brep',
- [IFC_geometry])
+ self.IFC_representation_sub_context, 'Body', shape_representation_type,
+ IFC_geometry)
product_representation = self.IFC_model.create_entity("IfcProductDefinitionShape",
Representations=[shape_representation])
return product_representation
diff --git a/src/ifccityjson/example/geometries.json b/src/ifccityjson/example/geometries.json
new file mode 100644
index 0000000000..cf5f1c7812
--- /dev/null
+++ b/src/ifccityjson/example/geometries.json
@@ -0,0 +1,485 @@
+{
+ "CityObjects": {
+ "multipoint": {
+ "geometry": [
+ {
+ "type": "MultiPoint",
+ "lod": 1,
+ "boundaries": [
+ 2,
+ 3,
+ 5,
+ 7
+ ]
+ }
+ ],
+ "attributes": {
+ "function": "Being a MultiPoint geometry"
+ },
+ "type": "GenericCityObject"
+ },
+ "multiline": {
+ "geometry": [
+ {
+ "type": "MultiLineString",
+ "lod": 1,
+ "boundaries": [
+ [
+ 2,
+ 3,
+ 9
+ ],
+ [
+ 10,
+ 8,
+ 10
+ ]
+ ]
+ }
+ ],
+ "attributes": {
+ "function": "Being a MultiLineString"
+ },
+ "type": "GenericCityObject"
+ },
+ "multisurface": {
+ "geometry": [
+ {
+ "type": "MultiSurface",
+ "lod": 1,
+ "boundaries": [
+ [
+ [
+ 0,
+ 3,
+ 2,
+ 1
+ ]
+ ],
+ [
+ [
+ 4,
+ 5,
+ 6,
+ 7
+ ]
+ ],
+ [
+ [
+ 0,
+ 1,
+ 5,
+ 4
+ ]
+ ]
+ ]
+ }
+ ],
+ "attributes": {
+ "function": "Being a MultiSurface without holes"
+ },
+ "type": "GenericCityObject"
+ },
+ "CompositeSurface": {
+ "geometry": [
+ {
+ "type": "CompositeSurface",
+ "lod": 1,
+ "boundaries": [
+ [
+ [
+ 0,
+ 3,
+ 2,
+ 1
+ ]
+ ],
+ [
+ [
+ 4,
+ 5,
+ 6,
+ 7
+ ]
+ ],
+ [
+ [
+ 0,
+ 1,
+ 5,
+ 4
+ ]
+ ]
+ ]
+ }
+ ],
+ "attributes": {
+ "function": "Being a CompositeSurface without holes"
+ },
+ "type": "GenericCityObject"
+ },
+ "cube": {
+ "geometry": [
+ {
+ "boundaries": [
+ [
+ [
+ [
+ 0,
+ 1,
+ 2,
+ 3
+ ]
+ ],
+ [
+ [
+ 7,
+ 4,
+ 0,
+ 3
+ ]
+ ],
+ [
+ [
+ 4,
+ 5,
+ 1,
+ 0
+ ]
+ ],
+ [
+ [
+ 5,
+ 6,
+ 2,
+ 1
+ ]
+ ],
+ [
+ [
+ 3,
+ 2,
+ 6,
+ 7
+ ]
+ ],
+ [
+ [
+ 6,
+ 5,
+ 4,
+ 7
+ ]
+ ]
+ ]
+ ],
+ "lod": 1,
+ "type": "Solid"
+ }
+ ],
+ "attributes": {
+ "function": "being a Solid geometry cube"
+ },
+ "type": "GenericCityObject"
+ },
+ "multicube": {
+ "geometry": [
+ {
+ "boundaries": [[
+ [
+ [
+ [
+ 0,
+ 1,
+ 2,
+ 3
+ ]
+ ],
+ [
+ [
+ 7,
+ 4,
+ 0,
+ 3
+ ]
+ ],
+ [
+ [
+ 4,
+ 5,
+ 1,
+ 0
+ ]
+ ],
+ [
+ [
+ 5,
+ 6,
+ 2,
+ 1
+ ]
+ ],
+ [
+ [
+ 3,
+ 2,
+ 6,
+ 7
+ ]
+ ],
+ [
+ [
+ 6,
+ 5,
+ 4,
+ 7
+ ]
+ ]
+ ]
+ ],[
+ [
+ [
+ [
+ 0,
+ 1,
+ 2,
+ 3
+ ]
+ ],
+ [
+ [
+ 7,
+ 4,
+ 0,
+ 3
+ ]
+ ],
+ [
+ [
+ 4,
+ 5,
+ 1,
+ 0
+ ]
+ ],
+ [
+ [
+ 5,
+ 6,
+ 2,
+ 1
+ ]
+ ],
+ [
+ [
+ 3,
+ 2,
+ 6,
+ 7
+ ]
+ ],
+ [
+ [
+ 6,
+ 5,
+ 4,
+ 7
+ ]
+ ]
+ ]
+ ]],
+ "lod": 1,
+ "type": "MultiSolid"
+ }
+ ],
+ "attributes": {
+ "function": "being a MultiSolid geometry cube that is twice the same geometry"
+ },
+ "type": "GenericCityObject"
+ },
+ "compositecube": {
+ "geometry": [
+ {
+ "boundaries": [[
+ [
+ [
+ [
+ 0,
+ 1,
+ 2,
+ 3
+ ]
+ ],
+ [
+ [
+ 7,
+ 4,
+ 0,
+ 3
+ ]
+ ],
+ [
+ [
+ 4,
+ 5,
+ 1,
+ 0
+ ]
+ ],
+ [
+ [
+ 5,
+ 6,
+ 2,
+ 1
+ ]
+ ],
+ [
+ [
+ 3,
+ 2,
+ 6,
+ 7
+ ]
+ ],
+ [
+ [
+ 6,
+ 5,
+ 4,
+ 7
+ ]
+ ]
+ ]
+ ],[
+ [
+ [
+ [
+ 0,
+ 1,
+ 2,
+ 3
+ ]
+ ],
+ [
+ [
+ 7,
+ 4,
+ 0,
+ 3
+ ]
+ ],
+ [
+ [
+ 4,
+ 5,
+ 1,
+ 0
+ ]
+ ],
+ [
+ [
+ 5,
+ 6,
+ 2,
+ 1
+ ]
+ ],
+ [
+ [
+ 3,
+ 2,
+ 6,
+ 7
+ ]
+ ],
+ [
+ [
+ 6,
+ 5,
+ 4,
+ 7
+ ]
+ ]
+ ]
+ ]],
+ "lod": 1,
+ "type": "CompositeSolid"
+ }
+ ],
+ "attributes": {
+ "function": "being a CompositeSolid geometry cube that is twice the same geometry"
+ },
+ "type": "GenericCityObject"
+ }
+ },
+ "type": "CityJSON",
+ "version": "1.0",
+ "vertices": [
+ [
+ 1.0,
+ 0.0,
+ 1.0
+ ],
+ [
+ 0.0,
+ 1.0,
+ 1.0
+ ],
+ [
+ -1.0,
+ 0.0,
+ 1.0
+ ],
+ [
+ 0.0,
+ -1.0,
+ 1.0
+ ],
+ [
+ 1.0,
+ 0.0,
+ 0.0
+ ],
+ [
+ 0.0,
+ 1.0,
+ 0.0
+ ],
+ [
+ -1.0,
+ 0.0,
+ 0.0
+ ],
+ [
+ 0.0,
+ -1.0,
+ 0.0
+ ],
+ [
+ 5.0,
+ 30,
+ 2.0
+ ],
+ [
+ 6.0,
+ -1.0,
+ 2.0
+ ],
+ [
+ 8.0,
+ 7.0,
+ -1.0
+ ]
+ ],
+ "metadata": {
+ "geographicalExtent": [
+ -1.0,
+ -1.0,
+ 0.0,
+ 1.0,
+ 1.0,
+ 1.0
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/ifccityjson/geometry.py b/src/ifccityjson/geometry.py
index e483d3e6e5..4706dde237 100644
--- a/src/ifccityjson/geometry.py
+++ b/src/ifccityjson/geometry.py
@@ -1,3 +1,22 @@
+
+# ifccityjson - Python CityJSON to IFC converter
+# Copyright (C) 2021 Laurens J.N. Oostwegel
+#
+# This file is part of ifccityjson.
+#
+# ifccityjson is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# ifccityjson is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public License
+# along with ifccityjson. If not, see .
+
import warnings
class GeometryIO:
@@ -16,16 +35,50 @@ class GeometryIO:
IFC_cartesian_point = IFC_model.create_entity("IfcCartesianPoint", IFC_vertex)
self.vertices[tuple(coord)] = IFC_cartesian_point
+ # See for CityJSON geometries:
+ # https://www.cityjson.org/dev/geom-arrays/
+ # https://www.cityjson.org/specs/1.0.3/#geometry-objects
def create_IFC_geometry(self, IFC_model, geometry):
- if geometry.type == "Solid":
- return self.create_IFC_closed_shell(IFC_model, geometry)
- elif geometry.type in ["CompositeSolid", "MultiSolid"]:
- return self.create_IFC_composite_closed_shell(IFC_model, geometry)
+ IFC_Geometry = None
+ geometry_type = 'brep'
+ if geometry.type in ["MultiPoint"]:
+ IFC_geometry = self.create_IFC_cartesian_point_list3D(IFC_model, geometry)
+ geometry_type = 'PointCloud'
+ elif geometry.type in ["MultiLineString"]:
+ IFC_geometry = self.create_IFC_composite_curve(IFC_model, geometry)
+ geometry_type = 'Curve3D'
elif geometry.type in ["CompositeSurface", "MultiSurface"]:
- return self.create_IFC_surface(IFC_model, geometry)
+ IFC_geometry = self.create_IFC_surface(IFC_model, geometry)
+ elif geometry.type == "Solid":
+ IFC_geometry = self.create_IFC_closed_shell(IFC_model, geometry)
+ elif geometry.type in ["CompositeSolid", "MultiSolid"]:
+ IFC_geometry = self.create_IFC_composite_closed_shell(IFC_model, geometry)
+ elif geometry.type in ["GeometryInstance"]:
+ warnings.warn("GeometryInstance is not supported.")
+ return None, None
else:
- warnings.warn("Types other than solids are not yet supported")
- return
+ warnings.warn("Custom CityJSON geometries are not supported.")
+ return None, None
+ return IFC_geometry, geometry_type
+
+ def create_IFC_cartesian_point_list3D(self, IFC_model, geometry):
+ # https://www.cityjson.org/dev/geom-arrays/
+ # https://standards.buildingsmart.org/IFC/DEV/IFC4_2/FINAL/HTML/schema/ifcgeometricmodelresource/lexical/ifccartesianpointlist3d.htm
+ IFC_geometry = IFC_model.create_entity("IfcCartesianPointList3D", geometry.boundaries)
+ return IFC_geometry
+
+ def create_IFC_composite_curve(self, IFC_model, geometry):
+ # https://www.cityjson.org/dev/geom-arrays/
+ # https://standards.buildingsmart.org/IFC/DEV/IFC4_2/FINAL/HTML/schema/ifcgeometryresource/lexical/ifccompositecurve.htm
+ # https://standards.buildingsmart.org/IFC/DEV/IFC4_2/FINAL/HTML/schema/ifcgeometryresource/lexical/ifccompositecurvesegment.htm
+ IFC_geometry = []
+ for line in geometry.boundaries:
+ vertices = []
+ for vertex in line:
+ vertices.append(self.vertices[tuple(vertex)])
+ polyline = IFC_model.create_entity("IfcPolyLine", vertices)
+ IFC_geometry.append(polyline)
+ return IFC_geometry
def create_IFC_composite_closed_shell(self, IFC_model, geometry):
shells = []
diff --git a/src/ifccityjson/ifccityjson.py b/src/ifccityjson/ifccityjson.py
index 49cc0526aa..791cf5d42b 100644
--- a/src/ifccityjson/ifccityjson.py
+++ b/src/ifccityjson/ifccityjson.py
@@ -1,3 +1,22 @@
+
+# ifccityjson - Python CityJSON to IFC converter
+# Copyright (C) 2021 Laurens J.N. Oostwegel
+#
+# This file is part of ifccityjson.
+#
+# ifccityjson is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# ifccityjson is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public License
+# along with ifccityjson. If not, see .
+
import argparse
from cjio import cityjson
from cityjson2ifc import Cityjson2ifc
@@ -6,6 +25,7 @@ from cityjson2ifc import Cityjson2ifc
if __name__ == '__main__':
# Example:
# python ifccityjson.py -i example/3DBAG_example.json -o example/output.ifc -n identificatie
+ # python ifccityjson.py -i example/geometries.json -o example/geometry_output.ifc
parser = argparse.ArgumentParser(description="")
parser.add_argument("-i", "--input", type=str, help="input CityJSON file", required=True)
parser.add_argument("-o", "--output", type=str, help="output IFC file. Standard is output.ifc")
diff --git a/src/ifcclash/COPYING b/src/ifcclash/COPYING
new file mode 100644
index 0000000000..810fce6e9b
--- /dev/null
+++ b/src/ifcclash/COPYING
@@ -0,0 +1,621 @@
+ GNU GENERAL PUBLIC LICENSE
+ Version 3, 29 June 2007
+
+ Copyright (C) 2007 Free Software Foundation, Inc.
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+ Preamble
+
+ The GNU General Public License is a free, copyleft license for
+software and other kinds of works.
+
+ The licenses for most software and other practical works are designed
+to take away your freedom to share and change the works. By contrast,
+the GNU General Public License is intended to guarantee your freedom to
+share and change all versions of a program--to make sure it remains free
+software for all its users. We, the Free Software Foundation, use the
+GNU General Public License for most of our software; it applies also to
+any other work released this way by its authors. You can apply it to
+your programs, too.
+
+ When we speak of free software, we are referring to freedom, not
+price. Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+them if you wish), that you receive source code or can get it if you
+want it, that you can change the software or use pieces of it in new
+free programs, and that you know you can do these things.
+
+ To protect your rights, we need to prevent others from denying you
+these rights or asking you to surrender the rights. Therefore, you have
+certain responsibilities if you distribute copies of the software, or if
+you modify it: responsibilities to respect the freedom of others.
+
+ For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must pass on to the recipients the same
+freedoms that you received. You must make sure that they, too, receive
+or can get the source code. And you must show them these terms so they
+know their rights.
+
+ Developers that use the GNU GPL protect your rights with two steps:
+(1) assert copyright on the software, and (2) offer you this License
+giving you legal permission to copy, distribute and/or modify it.
+
+ For the developers' and authors' protection, the GPL clearly explains
+that there is no warranty for this free software. For both users' and
+authors' sake, the GPL requires that modified versions be marked as
+changed, so that their problems will not be attributed erroneously to
+authors of previous versions.
+
+ Some devices are designed to deny users access to install or run
+modified versions of the software inside them, although the manufacturer
+can do so. This is fundamentally incompatible with the aim of
+protecting users' freedom to change the software. The systematic
+pattern of such abuse occurs in the area of products for individuals to
+use, which is precisely where it is most unacceptable. Therefore, we
+have designed this version of the GPL to prohibit the practice for those
+products. If such problems arise substantially in other domains, we
+stand ready to extend this provision to those domains in future versions
+of the GPL, as needed to protect the freedom of users.
+
+ Finally, every program is threatened constantly by software patents.
+States should not allow patents to restrict development and use of
+software on general-purpose computers, but in those that do, we wish to
+avoid the special danger that patents applied to a free program could
+make it effectively proprietary. To prevent this, the GPL assures that
+patents cannot be used to render the program non-free.
+
+ The precise terms and conditions for copying, distribution and
+modification follow.
+
+ TERMS AND CONDITIONS
+
+ 0. Definitions.
+
+ "This License" refers to version 3 of the GNU General Public License.
+
+ "Copyright" also means copyright-like laws that apply to other kinds of
+works, such as semiconductor masks.
+
+ "The Program" refers to any copyrightable work licensed under this
+License. Each licensee is addressed as "you". "Licensees" and
+"recipients" may be individuals or organizations.
+
+ To "modify" a work means to copy from or adapt all or part of the work
+in a fashion requiring copyright permission, other than the making of an
+exact copy. The resulting work is called a "modified version" of the
+earlier work or a work "based on" the earlier work.
+
+ A "covered work" means either the unmodified Program or a work based
+on the Program.
+
+ To "propagate" a work means to do anything with it that, without
+permission, would make you directly or secondarily liable for
+infringement under applicable copyright law, except executing it on a
+computer or modifying a private copy. Propagation includes copying,
+distribution (with or without modification), making available to the
+public, and in some countries other activities as well.
+
+ To "convey" a work means any kind of propagation that enables other
+parties to make or receive copies. Mere interaction with a user through
+a computer network, with no transfer of a copy, is not conveying.
+
+ An interactive user interface displays "Appropriate Legal Notices"
+to the extent that it includes a convenient and prominently visible
+feature that (1) displays an appropriate copyright notice, and (2)
+tells the user that there is no warranty for the work (except to the
+extent that warranties are provided), that licensees may convey the
+work under this License, and how to view a copy of this License. If
+the interface presents a list of user commands or options, such as a
+menu, a prominent item in the list meets this criterion.
+
+ 1. Source Code.
+
+ The "source code" for a work means the preferred form of the work
+for making modifications to it. "Object code" means any non-source
+form of a work.
+
+ A "Standard Interface" means an interface that either is an official
+standard defined by a recognized standards body, or, in the case of
+interfaces specified for a particular programming language, one that
+is widely used among developers working in that language.
+
+ The "System Libraries" of an executable work include anything, other
+than the work as a whole, that (a) is included in the normal form of
+packaging a Major Component, but which is not part of that Major
+Component, and (b) serves only to enable use of the work with that
+Major Component, or to implement a Standard Interface for which an
+implementation is available to the public in source code form. A
+"Major Component", in this context, means a major essential component
+(kernel, window system, and so on) of the specific operating system
+(if any) on which the executable work runs, or a compiler used to
+produce the work, or an object code interpreter used to run it.
+
+ The "Corresponding Source" for a work in object code form means all
+the source code needed to generate, install, and (for an executable
+work) run the object code and to modify the work, including scripts to
+control those activities. However, it does not include the work's
+System Libraries, or general-purpose tools or generally available free
+programs which are used unmodified in performing those activities but
+which are not part of the work. For example, Corresponding Source
+includes interface definition files associated with source files for
+the work, and the source code for shared libraries and dynamically
+linked subprograms that the work is specifically designed to require,
+such as by intimate data communication or control flow between those
+subprograms and other parts of the work.
+
+ The Corresponding Source need not include anything that users
+can regenerate automatically from other parts of the Corresponding
+Source.
+
+ The Corresponding Source for a work in source code form is that
+same work.
+
+ 2. Basic Permissions.
+
+ All rights granted under this License are granted for the term of
+copyright on the Program, and are irrevocable provided the stated
+conditions are met. This License explicitly affirms your unlimited
+permission to run the unmodified Program. The output from running a
+covered work is covered by this License only if the output, given its
+content, constitutes a covered work. This License acknowledges your
+rights of fair use or other equivalent, as provided by copyright law.
+
+ You may make, run and propagate covered works that you do not
+convey, without conditions so long as your license otherwise remains
+in force. You may convey covered works to others for the sole purpose
+of having them make modifications exclusively for you, or provide you
+with facilities for running those works, provided that you comply with
+the terms of this License in conveying all material for which you do
+not control copyright. Those thus making or running the covered works
+for you must do so exclusively on your behalf, under your direction
+and control, on terms that prohibit them from making any copies of
+your copyrighted material outside their relationship with you.
+
+ Conveying under any other circumstances is permitted solely under
+the conditions stated below. Sublicensing is not allowed; section 10
+makes it unnecessary.
+
+ 3. Protecting Users' Legal Rights From Anti-Circumvention Law.
+
+ No covered work shall be deemed part of an effective technological
+measure under any applicable law fulfilling obligations under article
+11 of the WIPO copyright treaty adopted on 20 December 1996, or
+similar laws prohibiting or restricting circumvention of such
+measures.
+
+ When you convey a covered work, you waive any legal power to forbid
+circumvention of technological measures to the extent such circumvention
+is effected by exercising rights under this License with respect to
+the covered work, and you disclaim any intention to limit operation or
+modification of the work as a means of enforcing, against the work's
+users, your or third parties' legal rights to forbid circumvention of
+technological measures.
+
+ 4. Conveying Verbatim Copies.
+
+ You may convey verbatim copies of the Program's source code as you
+receive it, in any medium, provided that you conspicuously and
+appropriately publish on each copy an appropriate copyright notice;
+keep intact all notices stating that this License and any
+non-permissive terms added in accord with section 7 apply to the code;
+keep intact all notices of the absence of any warranty; and give all
+recipients a copy of this License along with the Program.
+
+ You may charge any price or no price for each copy that you convey,
+and you may offer support or warranty protection for a fee.
+
+ 5. Conveying Modified Source Versions.
+
+ You may convey a work based on the Program, or the modifications to
+produce it from the Program, in the form of source code under the
+terms of section 4, provided that you also meet all of these conditions:
+
+ a) The work must carry prominent notices stating that you modified
+ it, and giving a relevant date.
+
+ b) The work must carry prominent notices stating that it is
+ released under this License and any conditions added under section
+ 7. This requirement modifies the requirement in section 4 to
+ "keep intact all notices".
+
+ c) You must license the entire work, as a whole, under this
+ License to anyone who comes into possession of a copy. This
+ License will therefore apply, along with any applicable section 7
+ additional terms, to the whole of the work, and all its parts,
+ regardless of how they are packaged. This License gives no
+ permission to license the work in any other way, but it does not
+ invalidate such permission if you have separately received it.
+
+ d) If the work has interactive user interfaces, each must display
+ Appropriate Legal Notices; however, if the Program has interactive
+ interfaces that do not display Appropriate Legal Notices, your
+ work need not make them do so.
+
+ A compilation of a covered work with other separate and independent
+works, which are not by their nature extensions of the covered work,
+and which are not combined with it such as to form a larger program,
+in or on a volume of a storage or distribution medium, is called an
+"aggregate" if the compilation and its resulting copyright are not
+used to limit the access or legal rights of the compilation's users
+beyond what the individual works permit. Inclusion of a covered work
+in an aggregate does not cause this License to apply to the other
+parts of the aggregate.
+
+ 6. Conveying Non-Source Forms.
+
+ You may convey a covered work in object code form under the terms
+of sections 4 and 5, provided that you also convey the
+machine-readable Corresponding Source under the terms of this License,
+in one of these ways:
+
+ a) Convey the object code in, or embodied in, a physical product
+ (including a physical distribution medium), accompanied by the
+ Corresponding Source fixed on a durable physical medium
+ customarily used for software interchange.
+
+ b) Convey the object code in, or embodied in, a physical product
+ (including a physical distribution medium), accompanied by a
+ written offer, valid for at least three years and valid for as
+ long as you offer spare parts or customer support for that product
+ model, to give anyone who possesses the object code either (1) a
+ copy of the Corresponding Source for all the software in the
+ product that is covered by this License, on a durable physical
+ medium customarily used for software interchange, for a price no
+ more than your reasonable cost of physically performing this
+ conveying of source, or (2) access to copy the
+ Corresponding Source from a network server at no charge.
+
+ c) Convey individual copies of the object code with a copy of the
+ written offer to provide the Corresponding Source. This
+ alternative is allowed only occasionally and noncommercially, and
+ only if you received the object code with such an offer, in accord
+ with subsection 6b.
+
+ d) Convey the object code by offering access from a designated
+ place (gratis or for a charge), and offer equivalent access to the
+ Corresponding Source in the same way through the same place at no
+ further charge. You need not require recipients to copy the
+ Corresponding Source along with the object code. If the place to
+ copy the object code is a network server, the Corresponding Source
+ may be on a different server (operated by you or a third party)
+ that supports equivalent copying facilities, provided you maintain
+ clear directions next to the object code saying where to find the
+ Corresponding Source. Regardless of what server hosts the
+ Corresponding Source, you remain obligated to ensure that it is
+ available for as long as needed to satisfy these requirements.
+
+ e) Convey the object code using peer-to-peer transmission, provided
+ you inform other peers where the object code and Corresponding
+ Source of the work are being offered to the general public at no
+ charge under subsection 6d.
+
+ A separable portion of the object code, whose source code is excluded
+from the Corresponding Source as a System Library, need not be
+included in conveying the object code work.
+
+ A "User Product" is either (1) a "consumer product", which means any
+tangible personal property which is normally used for personal, family,
+or household purposes, or (2) anything designed or sold for incorporation
+into a dwelling. In determining whether a product is a consumer product,
+doubtful cases shall be resolved in favor of coverage. For a particular
+product received by a particular user, "normally used" refers to a
+typical or common use of that class of product, regardless of the status
+of the particular user or of the way in which the particular user
+actually uses, or expects or is expected to use, the product. A product
+is a consumer product regardless of whether the product has substantial
+commercial, industrial or non-consumer uses, unless such uses represent
+the only significant mode of use of the product.
+
+ "Installation Information" for a User Product means any methods,
+procedures, authorization keys, or other information required to install
+and execute modified versions of a covered work in that User Product from
+a modified version of its Corresponding Source. The information must
+suffice to ensure that the continued functioning of the modified object
+code is in no case prevented or interfered with solely because
+modification has been made.
+
+ If you convey an object code work under this section in, or with, or
+specifically for use in, a User Product, and the conveying occurs as
+part of a transaction in which the right of possession and use of the
+User Product is transferred to the recipient in perpetuity or for a
+fixed term (regardless of how the transaction is characterized), the
+Corresponding Source conveyed under this section must be accompanied
+by the Installation Information. But this requirement does not apply
+if neither you nor any third party retains the ability to install
+modified object code on the User Product (for example, the work has
+been installed in ROM).
+
+ The requirement to provide Installation Information does not include a
+requirement to continue to provide support service, warranty, or updates
+for a work that has been modified or installed by the recipient, or for
+the User Product in which it has been modified or installed. Access to a
+network may be denied when the modification itself materially and
+adversely affects the operation of the network or violates the rules and
+protocols for communication across the network.
+
+ Corresponding Source conveyed, and Installation Information provided,
+in accord with this section must be in a format that is publicly
+documented (and with an implementation available to the public in
+source code form), and must require no special password or key for
+unpacking, reading or copying.
+
+ 7. Additional Terms.
+
+ "Additional permissions" are terms that supplement the terms of this
+License by making exceptions from one or more of its conditions.
+Additional permissions that are applicable to the entire Program shall
+be treated as though they were included in this License, to the extent
+that they are valid under applicable law. If additional permissions
+apply only to part of the Program, that part may be used separately
+under those permissions, but the entire Program remains governed by
+this License without regard to the additional permissions.
+
+ When you convey a copy of a covered work, you may at your option
+remove any additional permissions from that copy, or from any part of
+it. (Additional permissions may be written to require their own
+removal in certain cases when you modify the work.) You may place
+additional permissions on material, added by you to a covered work,
+for which you have or can give appropriate copyright permission.
+
+ Notwithstanding any other provision of this License, for material you
+add to a covered work, you may (if authorized by the copyright holders of
+that material) supplement the terms of this License with terms:
+
+ a) Disclaiming warranty or limiting liability differently from the
+ terms of sections 15 and 16 of this License; or
+
+ b) Requiring preservation of specified reasonable legal notices or
+ author attributions in that material or in the Appropriate Legal
+ Notices displayed by works containing it; or
+
+ c) Prohibiting misrepresentation of the origin of that material, or
+ requiring that modified versions of such material be marked in
+ reasonable ways as different from the original version; or
+
+ d) Limiting the use for publicity purposes of names of licensors or
+ authors of the material; or
+
+ e) Declining to grant rights under trademark law for use of some
+ trade names, trademarks, or service marks; or
+
+ f) Requiring indemnification of licensors and authors of that
+ material by anyone who conveys the material (or modified versions of
+ it) with contractual assumptions of liability to the recipient, for
+ any liability that these contractual assumptions directly impose on
+ those licensors and authors.
+
+ All other non-permissive additional terms are considered "further
+restrictions" within the meaning of section 10. If the Program as you
+received it, or any part of it, contains a notice stating that it is
+governed by this License along with a term that is a further
+restriction, you may remove that term. If a license document contains
+a further restriction but permits relicensing or conveying under this
+License, you may add to a covered work material governed by the terms
+of that license document, provided that the further restriction does
+not survive such relicensing or conveying.
+
+ If you add terms to a covered work in accord with this section, you
+must place, in the relevant source files, a statement of the
+additional terms that apply to those files, or a notice indicating
+where to find the applicable terms.
+
+ Additional terms, permissive or non-permissive, may be stated in the
+form of a separately written license, or stated as exceptions;
+the above requirements apply either way.
+
+ 8. Termination.
+
+ You may not propagate or modify a covered work except as expressly
+provided under this License. Any attempt otherwise to propagate or
+modify it is void, and will automatically terminate your rights under
+this License (including any patent licenses granted under the third
+paragraph of section 11).
+
+ However, if you cease all violation of this License, then your
+license from a particular copyright holder is reinstated (a)
+provisionally, unless and until the copyright holder explicitly and
+finally terminates your license, and (b) permanently, if the copyright
+holder fails to notify you of the violation by some reasonable means
+prior to 60 days after the cessation.
+
+ Moreover, your license from a particular copyright holder is
+reinstated permanently if the copyright holder notifies you of the
+violation by some reasonable means, this is the first time you have
+received notice of violation of this License (for any work) from that
+copyright holder, and you cure the violation prior to 30 days after
+your receipt of the notice.
+
+ Termination of your rights under this section does not terminate the
+licenses of parties who have received copies or rights from you under
+this License. If your rights have been terminated and not permanently
+reinstated, you do not qualify to receive new licenses for the same
+material under section 10.
+
+ 9. Acceptance Not Required for Having Copies.
+
+ You are not required to accept this License in order to receive or
+run a copy of the Program. Ancillary propagation of a covered work
+occurring solely as a consequence of using peer-to-peer transmission
+to receive a copy likewise does not require acceptance. However,
+nothing other than this License grants you permission to propagate or
+modify any covered work. These actions infringe copyright if you do
+not accept this License. Therefore, by modifying or propagating a
+covered work, you indicate your acceptance of this License to do so.
+
+ 10. Automatic Licensing of Downstream Recipients.
+
+ Each time you convey a covered work, the recipient automatically
+receives a license from the original licensors, to run, modify and
+propagate that work, subject to this License. You are not responsible
+for enforcing compliance by third parties with this License.
+
+ An "entity transaction" is a transaction transferring control of an
+organization, or substantially all assets of one, or subdividing an
+organization, or merging organizations. If propagation of a covered
+work results from an entity transaction, each party to that
+transaction who receives a copy of the work also receives whatever
+licenses to the work the party's predecessor in interest had or could
+give under the previous paragraph, plus a right to possession of the
+Corresponding Source of the work from the predecessor in interest, if
+the predecessor has it or can get it with reasonable efforts.
+
+ You may not impose any further restrictions on the exercise of the
+rights granted or affirmed under this License. For example, you may
+not impose a license fee, royalty, or other charge for exercise of
+rights granted under this License, and you may not initiate litigation
+(including a cross-claim or counterclaim in a lawsuit) alleging that
+any patent claim is infringed by making, using, selling, offering for
+sale, or importing the Program or any portion of it.
+
+ 11. Patents.
+
+ A "contributor" is a copyright holder who authorizes use under this
+License of the Program or a work on which the Program is based. The
+work thus licensed is called the contributor's "contributor version".
+
+ A contributor's "essential patent claims" are all patent claims
+owned or controlled by the contributor, whether already acquired or
+hereafter acquired, that would be infringed by some manner, permitted
+by this License, of making, using, or selling its contributor version,
+but do not include claims that would be infringed only as a
+consequence of further modification of the contributor version. For
+purposes of this definition, "control" includes the right to grant
+patent sublicenses in a manner consistent with the requirements of
+this License.
+
+ Each contributor grants you a non-exclusive, worldwide, royalty-free
+patent license under the contributor's essential patent claims, to
+make, use, sell, offer for sale, import and otherwise run, modify and
+propagate the contents of its contributor version.
+
+ In the following three paragraphs, a "patent license" is any express
+agreement or commitment, however denominated, not to enforce a patent
+(such as an express permission to practice a patent or covenant not to
+sue for patent infringement). To "grant" such a patent license to a
+party means to make such an agreement or commitment not to enforce a
+patent against the party.
+
+ If you convey a covered work, knowingly relying on a patent license,
+and the Corresponding Source of the work is not available for anyone
+to copy, free of charge and under the terms of this License, through a
+publicly available network server or other readily accessible means,
+then you must either (1) cause the Corresponding Source to be so
+available, or (2) arrange to deprive yourself of the benefit of the
+patent license for this particular work, or (3) arrange, in a manner
+consistent with the requirements of this License, to extend the patent
+license to downstream recipients. "Knowingly relying" means you have
+actual knowledge that, but for the patent license, your conveying the
+covered work in a country, or your recipient's use of the covered work
+in a country, would infringe one or more identifiable patents in that
+country that you have reason to believe are valid.
+
+ If, pursuant to or in connection with a single transaction or
+arrangement, you convey, or propagate by procuring conveyance of, a
+covered work, and grant a patent license to some of the parties
+receiving the covered work authorizing them to use, propagate, modify
+or convey a specific copy of the covered work, then the patent license
+you grant is automatically extended to all recipients of the covered
+work and works based on it.
+
+ A patent license is "discriminatory" if it does not include within
+the scope of its coverage, prohibits the exercise of, or is
+conditioned on the non-exercise of one or more of the rights that are
+specifically granted under this License. You may not convey a covered
+work if you are a party to an arrangement with a third party that is
+in the business of distributing software, under which you make payment
+to the third party based on the extent of your activity of conveying
+the work, and under which the third party grants, to any of the
+parties who would receive the covered work from you, a discriminatory
+patent license (a) in connection with copies of the covered work
+conveyed by you (or copies made from those copies), or (b) primarily
+for and in connection with specific products or compilations that
+contain the covered work, unless you entered into that arrangement,
+or that patent license was granted, prior to 28 March 2007.
+
+ Nothing in this License shall be construed as excluding or limiting
+any implied license or other defenses to infringement that may
+otherwise be available to you under applicable patent law.
+
+ 12. No Surrender of Others' Freedom.
+
+ If conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot convey a
+covered work so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you may
+not convey it at all. For example, if you agree to terms that obligate you
+to collect a royalty for further conveying from those to whom you convey
+the Program, the only way you could satisfy both those terms and this
+License would be to refrain entirely from conveying the Program.
+
+ 13. Use with the GNU Affero General Public License.
+
+ Notwithstanding any other provision of this License, you have
+permission to link or combine any covered work with a work licensed
+under version 3 of the GNU Affero General Public License into a single
+combined work, and to convey the resulting work. The terms of this
+License will continue to apply to the part which is the covered work,
+but the special requirements of the GNU Affero General Public License,
+section 13, concerning interaction through a network will apply to the
+combination as such.
+
+ 14. Revised Versions of this License.
+
+ The Free Software Foundation may publish revised and/or new versions of
+the GNU General Public License from time to time. Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+ Each version is given a distinguishing version number. If the
+Program specifies that a certain numbered version of the GNU General
+Public License "or any later version" applies to it, you have the
+option of following the terms and conditions either of that numbered
+version or of any later version published by the Free Software
+Foundation. If the Program does not specify a version number of the
+GNU General Public License, you may choose any version ever published
+by the Free Software Foundation.
+
+ If the Program specifies that a proxy can decide which future
+versions of the GNU General Public License can be used, that proxy's
+public statement of acceptance of a version permanently authorizes you
+to choose that version for the Program.
+
+ Later license versions may give you additional or different
+permissions. However, no additional obligations are imposed on any
+author or copyright holder as a result of your choosing to follow a
+later version.
+
+ 15. Disclaimer of Warranty.
+
+ THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
+APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
+HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
+OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
+THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
+IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
+ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+ 16. Limitation of Liability.
+
+ IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
+THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
+GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
+USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
+DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
+PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
+EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGES.
+
+ 17. Interpretation of Sections 15 and 16.
+
+ If the disclaimer of warranty and limitation of liability provided
+above cannot be given local legal effect according to their terms,
+reviewing courts shall apply local law that most closely approximates
+an absolute waiver of all civil liability in connection with the
+Program, unless a warranty or assumption of liability accompanies a
+copy of the Program in return for a fee.
+
+ END OF TERMS AND CONDITIONS
diff --git a/src/ifcclash/COPYING.LESSER b/src/ifcclash/COPYING.LESSER
new file mode 100644
index 0000000000..0a041280bd
--- /dev/null
+++ b/src/ifcclash/COPYING.LESSER
@@ -0,0 +1,165 @@
+ GNU LESSER GENERAL PUBLIC LICENSE
+ Version 3, 29 June 2007
+
+ Copyright (C) 2007 Free Software Foundation, Inc.
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+
+ This version of the GNU Lesser General Public License incorporates
+the terms and conditions of version 3 of the GNU General Public
+License, supplemented by the additional permissions listed below.
+
+ 0. Additional Definitions.
+
+ As used herein, "this License" refers to version 3 of the GNU Lesser
+General Public License, and the "GNU GPL" refers to version 3 of the GNU
+General Public License.
+
+ "The Library" refers to a covered work governed by this License,
+other than an Application or a Combined Work as defined below.
+
+ An "Application" is any work that makes use of an interface provided
+by the Library, but which is not otherwise based on the Library.
+Defining a subclass of a class defined by the Library is deemed a mode
+of using an interface provided by the Library.
+
+ A "Combined Work" is a work produced by combining or linking an
+Application with the Library. The particular version of the Library
+with which the Combined Work was made is also called the "Linked
+Version".
+
+ The "Minimal Corresponding Source" for a Combined Work means the
+Corresponding Source for the Combined Work, excluding any source code
+for portions of the Combined Work that, considered in isolation, are
+based on the Application, and not on the Linked Version.
+
+ The "Corresponding Application Code" for a Combined Work means the
+object code and/or source code for the Application, including any data
+and utility programs needed for reproducing the Combined Work from the
+Application, but excluding the System Libraries of the Combined Work.
+
+ 1. Exception to Section 3 of the GNU GPL.
+
+ You may convey a covered work under sections 3 and 4 of this License
+without being bound by section 3 of the GNU GPL.
+
+ 2. Conveying Modified Versions.
+
+ If you modify a copy of the Library, and, in your modifications, a
+facility refers to a function or data to be supplied by an Application
+that uses the facility (other than as an argument passed when the
+facility is invoked), then you may convey a copy of the modified
+version:
+
+ a) under this License, provided that you make a good faith effort to
+ ensure that, in the event an Application does not supply the
+ function or data, the facility still operates, and performs
+ whatever part of its purpose remains meaningful, or
+
+ b) under the GNU GPL, with none of the additional permissions of
+ this License applicable to that copy.
+
+ 3. Object Code Incorporating Material from Library Header Files.
+
+ The object code form of an Application may incorporate material from
+a header file that is part of the Library. You may convey such object
+code under terms of your choice, provided that, if the incorporated
+material is not limited to numerical parameters, data structure
+layouts and accessors, or small macros, inline functions and templates
+(ten or fewer lines in length), you do both of the following:
+
+ a) Give prominent notice with each copy of the object code that the
+ Library is used in it and that the Library and its use are
+ covered by this License.
+
+ b) Accompany the object code with a copy of the GNU GPL and this license
+ document.
+
+ 4. Combined Works.
+
+ You may convey a Combined Work under terms of your choice that,
+taken together, effectively do not restrict modification of the
+portions of the Library contained in the Combined Work and reverse
+engineering for debugging such modifications, if you also do each of
+the following:
+
+ a) Give prominent notice with each copy of the Combined Work that
+ the Library is used in it and that the Library and its use are
+ covered by this License.
+
+ b) Accompany the Combined Work with a copy of the GNU GPL and this license
+ document.
+
+ c) For a Combined Work that displays copyright notices during
+ execution, include the copyright notice for the Library among
+ these notices, as well as a reference directing the user to the
+ copies of the GNU GPL and this license document.
+
+ d) Do one of the following:
+
+ 0) Convey the Minimal Corresponding Source under the terms of this
+ License, and the Corresponding Application Code in a form
+ suitable for, and under terms that permit, the user to
+ recombine or relink the Application with a modified version of
+ the Linked Version to produce a modified Combined Work, in the
+ manner specified by section 6 of the GNU GPL for conveying
+ Corresponding Source.
+
+ 1) Use a suitable shared library mechanism for linking with the
+ Library. A suitable mechanism is one that (a) uses at run time
+ a copy of the Library already present on the user's computer
+ system, and (b) will operate properly with a modified version
+ of the Library that is interface-compatible with the Linked
+ Version.
+
+ e) Provide Installation Information, but only if you would otherwise
+ be required to provide such information under section 6 of the
+ GNU GPL, and only to the extent that such information is
+ necessary to install and execute a modified version of the
+ Combined Work produced by recombining or relinking the
+ Application with a modified version of the Linked Version. (If
+ you use option 4d0, the Installation Information must accompany
+ the Minimal Corresponding Source and Corresponding Application
+ Code. If you use option 4d1, you must provide the Installation
+ Information in the manner specified by section 6 of the GNU GPL
+ for conveying Corresponding Source.)
+
+ 5. Combined Libraries.
+
+ You may place library facilities that are a work based on the
+Library side by side in a single library together with other library
+facilities that are not Applications and are not covered by this
+License, and convey such a combined library under terms of your
+choice, if you do both of the following:
+
+ a) Accompany the combined library with a copy of the same work based
+ on the Library, uncombined with any other library facilities,
+ conveyed under the terms of this License.
+
+ b) Give prominent notice with the combined library that part of it
+ is a work based on the Library, and explaining where to find the
+ accompanying uncombined form of the same work.
+
+ 6. Revised Versions of the GNU Lesser General Public License.
+
+ The Free Software Foundation may publish revised and/or new versions
+of the GNU Lesser General Public License from time to time. Such new
+versions will be similar in spirit to the present version, but may
+differ in detail to address new problems or concerns.
+
+ Each version is given a distinguishing version number. If the
+Library as you received it specifies that a certain numbered version
+of the GNU Lesser General Public License "or any later version"
+applies to it, you have the option of following the terms and
+conditions either of that published version or of any later version
+published by the Free Software Foundation. If the Library as you
+received it does not specify a version number of the GNU Lesser
+General Public License, you may choose any version of the GNU Lesser
+General Public License ever published by the Free Software Foundation.
+
+ If the Library as you received it specifies that a proxy can decide
+whether future versions of the GNU Lesser General Public License shall
+apply, that proxy's public statement of acceptance of any version is
+permanent authorization for you to choose that version for the
+Library.
diff --git a/src/ifcclash/README.md b/src/ifcclash/README.md
new file mode 100644
index 0000000000..406131efb4
--- /dev/null
+++ b/src/ifcclash/README.md
@@ -0,0 +1,121 @@
+# ifcclash
+
+`ifcclash` is both a CLI utility and library that lets you perform clash
+detections on and between IFC files.
+
+## Installation
+
+`ifcclash` depends on
+[`hppfcl`](https://github.com/humanoid-path-planner/hpp-fcl) and optionally
+[`bcf`](https://github.com/IfcOpenShell/IfcOpenShell/tree/v0.6.0/src/bcf). Once
+you have the dependencies, the `ifcclash` directory may be added to your Python
+site packages like any other Python module. You can run it as a CLI like:
+
+```
+$ python -m ifcclash
+```
+
+If you want something more Unix-like ...
+
+```
+$ alias ifcclash='python -m ifcclash'
+```
+
+Alternatively, you can package it as a distributable.
+
+```
+$ python make.py
+$ ./dist/ifcclash
+```
+
+## Usage
+
+Instructions on what clashes to perform are structured in terms of clash sets.
+Each clash set contains instructions of collisions that we want to perform, and
+can be named so it is easy to distinguish. A typical name would be "Structure
+and Pipes", to describe that we are are detecting collisions between structural
+elements and pipes.
+
+Each clash set may include two groups of objects, named `A` and `B`. This tells
+IfcClash to attempt to find collisions between any object in group `A` with any
+object in group `B`. Group `A` is mandatory, but group `B` is optional. If group
+`B` is not provided, IfcClash will detect all clashes within objects of group
+`A`.
+
+Within group `A` or `B`, you may be define one or more data sources of objects.
+A data source must include a path to the IFC file which the objects come from.
+You may also optionally provide a filter to only include or exclude certain
+objects. If no filter is provided, then all objects will be used to detect
+collisions.
+
+Here's a sample JSON description of a single clash set, with both groups
+defined with data sources.
+
+```json
+[
+ {
+ "name": "Clash Set A",
+ "a": [
+ {
+ "file": "/path/to/one.ifc"
+ }
+ ],
+ "b": [
+ {
+ "file": "/path/to/two.ifc",
+ "selector": ".IfcWall",
+ "mode": "i"
+ }
+ ]
+ }
+]
+```
+
+Once your have your JSON description of your clashes, usage is like any other
+CLI app.
+
+```
+$ ifcclash -h
+
+usage: __main__.py [-h] [-o OUTPUT] input
+
+Clashes geometry between two IFC files
+
+positional arguments:
+ input A JSON dataset describing a series of clashsets
+
+optional arguments:
+ -h, --help show this help message and exit
+ -o OUTPUT, --output OUTPUT
+ The JSON diff file to output. Defaults to output.json
+```
+
+In it simplest form, just present your JSON file.
+
+```
+$ ifcclash clash_sets.json
+$ cat output.json
+```
+
+You can also use it as a library.
+
+```python
+import sys
+import json
+import logging
+import ifcclash
+
+
+settings = ClashSettings()
+settings.output = "output.json"
+settings.logger = logging.getLogger("Clash")
+settings.logger.setLevel(logging.DEBUG)
+handler = logging.StreamHandler(sys.stdout)
+handler.setLevel(logging.DEBUG)
+settings.logger.addHandler(handler)
+ifc_clasher = Clasher(settings)
+with open(args.input, "r") as clash_sets_file:
+ ifc_clasher.clash_sets = json.loads(clash_sets_file.read())
+ifc_clasher.clash()
+ifc_clasher.export()
+```
diff --git a/src/ifcclash/bootstrap.py b/src/ifcclash/bootstrap.py
new file mode 100644
index 0000000000..15ec2f242a
--- /dev/null
+++ b/src/ifcclash/bootstrap.py
@@ -0,0 +1,21 @@
+
+# IfcClash - IFC-based clash detection.
+# Copyright (C) 2020, 2021 Dion Moult
+#
+# This file is part of IfcClash.
+#
+# IfcClash is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# IfcClash is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public License
+# along with IfcClash. If not, see .
+
+import ifcclash.__main__
+
diff --git a/src/ifcclash/clashsets.json b/src/ifcclash/clashsets.json
deleted file mode 100644
index 0826317114..0000000000
--- a/src/ifcclash/clashsets.json
+++ /dev/null
@@ -1,17 +0,0 @@
-[
- {
- "name": "Clashset foo",
- "tolerance": 0.01,
- "a": [
- { "file": "/home/dion/one.ifc" }
- ],
- "b": [
- {
- "file": "/home/dion/two.ifc",
- "selector": ".IfcProduct",
- "mode": "i"
- }
- ]
- }
-]
-
diff --git a/src/ifcclash/collision.py b/src/ifcclash/collision.py
deleted file mode 100644
index b5dcf620f5..0000000000
--- a/src/ifcclash/collision.py
+++ /dev/null
@@ -1,663 +0,0 @@
-# This code is taken from the trimesh project at https://github.com/mikedh/trimesh/blob/master/trimesh/collision.py
-# License MIT https://github.com/mikedh/trimesh/blob/master/LICENSE.md
-
-import numpy as np
-
-import collections
-
-try:
- # pip install python-fcl
- import fcl
-except BaseException:
- fcl = None
-
-
-class ContactData(object):
- """
- Data structure for holding information about a collision contact.
- """
-
- def __init__(self, names, contact):
- """
- Initialize a ContactData.
-
- Parameters
- ----------
- names : list of str
- The names of the two objects in order.
- contact : fcl.Contact
- The contact in question.
- """
- self.names = names
- self._inds = {names[0]: contact.b1, names[1]: contact.b2}
- self._point = contact.pos
- self.raw = contact
-
- @property
- def point(self):
- """
- The 3D point of intersection for this contact.
-
- Returns
- -------
- point : (3,) float
- The intersection point.
- """
- return self._point
-
- def index(self, name):
- """
- Returns the index of the face in contact for the mesh with
- the given name.
-
- Parameters
- ----------
- name : str
- The name of the target object.
-
- Returns
- -------
- index : int
- The index of the face in collison
- """
- return self._inds[name]
-
-
-class DistanceData(object):
- """
- Data structure for holding information about a distance query.
- """
-
- def __init__(self, names, result):
- """
- Initialize a DistanceData.
-
- Parameters
- ----------
- names : list of str
- The names of the two objects in order.
- contact : fcl.DistanceResult
- The distance query result.
- """
- self.names = set(names)
- self._inds = {names[0]: result.b1, names[1]: result.b2}
- self._points = {names[0]: result.nearest_points[0], names[1]: result.nearest_points[1]}
- self._distance = result.min_distance
-
- @property
- def distance(self):
- """
- Returns the distance between the two objects.
-
- Returns
- -------
- distance : float
- The euclidean distance between the objects.
- """
- return self._distance
-
- def index(self, name):
- """
- Returns the index of the closest face for the mesh with
- the given name.
-
- Parameters
- ----------
- name : str
- The name of the target object.
-
- Returns
- -------
- index : int
- The index of the face in collisoin.
- """
- return self._inds[name]
-
- def point(self, name):
- """
- The 3D point of closest distance on the mesh with the given name.
-
- Parameters
- ----------
- name : str
- The name of the target object.
-
- Returns
- -------
- point : (3,) float
- The closest point.
- """
- return self._points[name]
-
-
-class CollisionManager(object):
- """
- A mesh-mesh collision manager.
- """
-
- def __init__(self):
- """
- Initialize a mesh-mesh collision manager.
- """
- if fcl is None:
- raise ValueError("No FCL Available!")
- # {name: {geom:, obj}}
- self._objs = {}
- # {id(bvh) : str, name}
- # unpopulated values will return None
- self._names = collections.defaultdict(lambda: None)
-
- # cache BVH objects
- # {mesh.md5(): fcl.BVHModel object}
- self._bvh = {}
- self._manager = fcl.DynamicAABBTreeCollisionManager()
- self._manager.setup()
-
- def add_object(self, name, mesh, transform=None):
- """
- Add an object to the collision manager.
-
- If an object with the given name is already in the manager,
- replace it.
-
- Parameters
- ----------
- name : str
- An identifier for the object
- mesh : Trimesh object
- The geometry of the collision object
- transform : (4,4) float
- Homogeneous transform matrix for the object
- """
-
- # if no transform passed, assume identity transform
- if transform is None:
- transform = np.eye(4)
- transform = np.asanyarray(transform, dtype=np.float64)
- if transform.shape != (4, 4):
- raise ValueError("transform must be (4,4)!")
-
- # create or recall from cache BVH
- bvh = self._get_BVH(mesh)
- # create the FCL transform from (4,4) matrix
- t = fcl.Transform(transform[:3, :3], transform[:3, 3])
- o = fcl.CollisionObject(bvh, t)
-
- # Add collision object to set
- if name in self._objs:
- self._manager.unregisterObject(self._objs[name])
- self._objs[name] = {"obj": o, "geom": bvh}
- # store the name of the geometry
- self._names[id(bvh)] = name
-
- self._manager.registerObject(o)
- self._manager.update()
- return o
-
- def remove_object(self, name):
- """
- Delete an object from the collision manager.
-
- Parameters
- ----------
- name : str
- The identifier for the object
- """
- if name in self._objs:
- self._manager.unregisterObject(self._objs[name]["obj"])
- self._manager.update(self._objs[name]["obj"])
- # remove objects from _objs
- geom_id = id(self._objs.pop(name)["geom"])
- # remove names
- self._names.pop(geom_id)
- else:
- raise ValueError("{} not in collision manager!".format(name))
-
- def set_transform(self, name, transform):
- """
- Set the transform for one of the manager's objects.
- This replaces the prior transform.
-
- Parameters
- ----------
- name : str
- An identifier for the object already in the manager
- transform : (4,4) float
- A new homogeneous transform matrix for the object
- """
- if name in self._objs:
- o = self._objs[name]["obj"]
- o.setRotation(transform[:3, :3])
- o.setTranslation(transform[:3, 3])
- self._manager.update(o)
- else:
- raise ValueError("{} not in collision manager!".format(name))
-
- def in_collision_single(self, mesh, transform=None, return_names=False, return_data=False):
- """
- Check a single object for collisions against all objects in the
- manager.
-
- Parameters
- ----------
- mesh : Trimesh object
- The geometry of the collision object
- transform : (4,4) float
- Homogeneous transform matrix
- return_names : bool
- If true, a set is returned containing the names
- of all objects in collision with the object
- return_data : bool
- If true, a list of ContactData is returned as well
-
- Returns
- ------------
- is_collision : bool
- True if a collision occurs and False otherwise
- names : set of str
- [OPTIONAL] The set of names of objects that collided with the
- provided one
- contacts : list of ContactData
- [OPTIONAL] All contacts detected
- """
- if transform is None:
- transform = np.eye(4)
-
- # Create FCL data
- b = self._get_BVH(mesh)
- t = fcl.Transform(transform[:3, :3], transform[:3, 3])
- o = fcl.CollisionObject(b, t)
-
- # Collide with manager's objects
- cdata = fcl.CollisionData()
- if return_names or return_data:
- cdata = fcl.CollisionData(request=fcl.CollisionRequest(num_max_contacts=100000, enable_contact=True))
-
- self._manager.collide(o, cdata, fcl.defaultCollisionCallback)
- result = cdata.result.is_collision
-
- # If we want to return the objects that were collision, collect them.
- objs_in_collision = set()
- contact_data = []
- if return_names or return_data:
- for contact in cdata.result.contacts:
- cg = contact.o1
- if cg == b:
- cg = contact.o2
- name = self._extract_name(cg)
-
- names = (name, "__external")
- if cg == contact.o2:
- names = reversed(names)
-
- if return_names:
- objs_in_collision.add(name)
- if return_data:
- contact_data.append(ContactData(names, contact))
-
- if return_names and return_data:
- return result, objs_in_collision, contact_data
- elif return_names:
- return result, objs_in_collision
- elif return_data:
- return result, contact_data
- else:
- return result
-
- def in_collision_internal(self, return_names=False, return_data=False):
- """
- Check if any pair of objects in the manager collide with one another.
-
- Parameters
- ----------
- return_names : bool
- If true, a set is returned containing the names
- of all pairs of objects in collision.
- return_data : bool
- If true, a list of ContactData is returned as well
-
- Returns
- -------
- is_collision : bool
- True if a collision occurred between any pair of objects
- and False otherwise
- names : set of 2-tup
- The set of pairwise collisions. Each tuple
- contains two names in alphabetical order indicating
- that the two corresponding objects are in collision.
- contacts : list of ContactData
- All contacts detected
- """
- cdata = fcl.CollisionData()
- if return_names or return_data:
- cdata = fcl.CollisionData(request=fcl.CollisionRequest(num_max_contacts=1000000, enable_contact=True))
-
- self._manager.collide(cdata, fcl.defaultCollisionCallback)
-
- result = cdata.result.is_collision
-
- objs_in_collision = set()
- contact_data = []
- if return_names or return_data:
- for contact in cdata.result.contacts:
- names = (self._extract_name(contact.o1), self._extract_name(contact.o2))
-
- if return_names:
- objs_in_collision.add(tuple(sorted(names)))
- if return_data:
- contact_data.append(ContactData(names, contact))
-
- if return_names and return_data:
- return result, objs_in_collision, contact_data
- elif return_names:
- return result, objs_in_collision
- elif return_data:
- return result, contact_data
- else:
- return result
-
- def in_collision_other(self, other_manager, return_names=False, return_data=False):
- """
- Check if any object from this manager collides with any object
- from another manager.
-
- Parameters
- -------------------
- other_manager : CollisionManager
- Another collision manager object
- return_names : bool
- If true, a set is returned containing the names
- of all pairs of objects in collision.
- return_data : bool
- If true, a list of ContactData is returned as well
-
- Returns
- -------------
- is_collision : bool
- True if a collision occurred between any pair of objects
- and False otherwise
- names : set of 2-tup
- The set of pairwise collisions. Each tuple
- contains two names (first from this manager,
- second from the other_manager) indicating
- that the two corresponding objects are in collision.
- contacts : list of ContactData
- All contacts detected
- """
- cdata = fcl.CollisionData()
- if return_names or return_data:
- cdata = fcl.CollisionData(request=fcl.CollisionRequest(num_max_contacts=100000, enable_contact=True))
- self._manager.collide(other_manager._manager, cdata, fcl.defaultCollisionCallback)
- result = cdata.result.is_collision
-
- objs_in_collision = set()
- contact_data = []
- if return_names or return_data:
- for contact in cdata.result.contacts:
- reverse = False
- names = (self._extract_name(contact.o1), other_manager._extract_name(contact.o2))
- if names[0] is None:
- names = (self._extract_name(contact.o2), other_manager._extract_name(contact.o1))
- reverse = True
-
- if return_names:
- objs_in_collision.add(names)
- if return_data:
- if reverse:
- names = reversed(names)
- contact_data.append(ContactData(names, contact))
-
- if return_names and return_data:
- return result, objs_in_collision, contact_data
- elif return_names:
- return result, objs_in_collision
- elif return_data:
- return result, contact_data
- else:
- return result
-
- def min_distance_single(self, mesh, transform=None, return_name=False, return_data=False):
- """
- Get the minimum distance between a single object and any
- object in the manager.
-
- Parameters
- ---------------
- mesh : Trimesh object
- The geometry of the collision object
- transform : (4,4) float
- Homogeneous transform matrix for the object
- return_names : bool
- If true, return name of the closest object
- return_data : bool
- If true, a DistanceData object is returned as well
-
- Returns
- -------------
- distance : float
- Min distance between mesh and any object in the manager
- name : str
- The name of the object in the manager that was closest
- data : DistanceData
- Extra data about the distance query
- """
- if transform is None:
- transform = np.eye(4)
-
- # Create FCL data
- b = self._get_BVH(mesh)
-
- t = fcl.Transform(transform[:3, :3], transform[:3, 3])
- o = fcl.CollisionObject(b, t)
-
- # Collide with manager's objects
- ddata = fcl.DistanceData()
- if return_data:
- ddata = fcl.DistanceData(fcl.DistanceRequest(enable_nearest_points=True), fcl.DistanceResult())
-
- self._manager.distance(o, ddata, fcl.defaultDistanceCallback)
-
- distance = ddata.result.min_distance
-
- # If we want to return the objects that were collision, collect them.
- name, data = None, None
- if return_name or return_data:
- cg = ddata.result.o1
- if cg == b:
- cg = ddata.result.o2
-
- name = self._extract_name(cg)
-
- names = (name, "__external")
- if cg == ddata.result.o2:
- names = reversed(names)
- data = DistanceData(names, ddata.result)
-
- if return_name and return_data:
- return distance, name, data
- elif return_name:
- return distance, name
- elif return_data:
- return distance, data
- else:
- return distance
-
- def min_distance_internal(self, return_names=False, return_data=False):
- """
- Get the minimum distance between any pair of objects in the manager.
-
- Parameters
- -------------
- return_names : bool
- If true, a 2-tuple is returned containing the names
- of the closest objects.
- return_data : bool
- If true, a DistanceData object is returned as well
-
- Returns
- -----------
- distance : float
- Min distance between any two managed objects
- names : (2,) str
- The names of the closest objects
- data : DistanceData
- Extra data about the distance query
- """
- ddata = fcl.DistanceData()
- if return_data:
- ddata = fcl.DistanceData(fcl.DistanceRequest(enable_nearest_points=True), fcl.DistanceResult())
-
- self._manager.distance(ddata, fcl.defaultDistanceCallback)
-
- distance = ddata.result.min_distance
-
- names, data = None, None
- if return_names or return_data:
- names = (self._extract_name(ddata.result.o1), self._extract_name(ddata.result.o2))
- data = DistanceData(names, ddata.result)
- names = tuple(sorted(names))
-
- if return_names and return_data:
- return distance, names, data
- elif return_names:
- return distance, names
- elif return_data:
- return distance, data
- else:
- return distance
-
- def min_distance_other(self, other_manager, return_names=False, return_data=False):
- """
- Get the minimum distance between any pair of objects,
- one in each manager.
-
- Parameters
- ----------
- other_manager : CollisionManager
- Another collision manager object
- return_names : bool
- If true, a 2-tuple is returned containing
- the names of the closest objects.
- return_data : bool
- If true, a DistanceData object is returned as well
-
- Returns
- -----------
- distance : float
- The min distance between a pair of objects,
- one from each manager.
- names : 2-tup of str
- A 2-tuple containing two names (first from this manager,
- second from the other_manager) indicating
- the two closest objects.
- data : DistanceData
- Extra data about the distance query
- """
- ddata = fcl.DistanceData()
- if return_data:
- ddata = fcl.DistanceData(fcl.DistanceRequest(enable_nearest_points=True), fcl.DistanceResult())
-
- self._manager.distance(other_manager._manager, ddata, fcl.defaultDistanceCallback)
-
- distance = ddata.result.min_distance
-
- names, data = None, None
- if return_names or return_data:
- reverse = False
- names = (self._extract_name(ddata.result.o1), other_manager._extract_name(ddata.result.o2))
- if names[0] is None:
- reverse = True
- names = (self._extract_name(ddata.result.o2), other_manager._extract_name(ddata.result.o1))
-
- dnames = tuple(names)
- if reverse:
- dnames = reversed(dnames)
- data = DistanceData(dnames, ddata.result)
-
- if return_names and return_data:
- return distance, names, data
- elif return_names:
- return distance, names
- elif return_data:
- return distance, data
- else:
- return distance
-
- def _get_BVH(self, mesh):
- """
- Get a BVH for a mesh.
-
- Parameters
- -------------
- mesh : Trimesh
- Mesh to create BVH for
-
- Returns
- --------------
- bvh : fcl.BVHModel
- BVH object of source mesh
- """
- bvh = mesh_to_BVH(mesh)
- return bvh
-
- def _extract_name(self, geom):
- """
- Retrieve the name of an object from the manager by its
- CollisionObject, or return None if not found.
-
- Parameters
- -----------
- geom : CollisionObject or BVHModel
- Input model
-
- Returns
- ------------
- names : hashable
- Name of input geometry
- """
- return self._names[id(geom)]
-
-
-def mesh_to_BVH(mesh):
- """
- Create a BVHModel object from a Trimesh object
-
- Parameters
- -----------
- mesh : Trimesh
- Input geometry
-
- Returns
- ------------
- bvh : fcl.BVHModel
- BVH of input geometry
- """
- bvh = fcl.BVHModel()
- bvh.beginModel(num_tris_=len(mesh.faces), num_vertices_=len(mesh.vertices))
- bvh.addSubModel(verts=mesh.vertices, triangles=mesh.faces)
- bvh.endModel()
- return bvh
-
-
-def scene_to_collision(scene):
- """
- Create collision objects from a trimesh.Scene object.
-
- Parameters
- ------------
- scene : trimesh.Scene
- Scene to create collision objects for
-
- Returns
- ------------
- manager : CollisionManager
- CollisionManager for objects in scene
- objects: {node name: CollisionObject}
- Collision objects for nodes in scene
- """
- manager = CollisionManager()
- objects = {}
- for node in scene.graph.nodes_geometry:
- T, geometry = scene.graph[node]
- objects[node] = manager.add_object(name=node, mesh=scene.geometry[geometry], transform=T)
- return manager, objects
diff --git a/src/ifcclash/ifcclash.py b/src/ifcclash/ifcclash.py
deleted file mode 100644
index a17cc79d00..0000000000
--- a/src/ifcclash/ifcclash.py
+++ /dev/null
@@ -1,454 +0,0 @@
-#!/usr/bin/env python3
-
-import collision
-import ifcopenshell
-import ifcopenshell.geom
-import ifcopenshell.util.selector
-import multiprocessing
-import numpy as np
-import json
-import sys
-import argparse
-import logging
-
-
-class Mesh:
- faces: []
- vertices: []
-
-
-class IfcClasher:
- def __init__(self, settings):
- self.settings = settings
- self.geom_settings = ifcopenshell.geom.settings()
- self.clash_sets = []
- self.clash_data = {"meshes": {}}
- self.global_data = {"meshes": {}, "matrices": {}}
-
- def clash(self):
- for clash_set in self.clash_sets:
- self.process_clash_set(clash_set)
-
- def process_clash_set(self, clash_set):
- for ab in ["a", "b"]:
- self.settings.logger.info(f"Creating collision manager {ab} ...")
- clash_set[f"{ab}_cm"] = collision.CollisionManager()
- self.settings.logger.info(f"Loading files {ab} ...")
- for data in clash_set[ab]:
- data["ifc"] = ifcopenshell.open(data["file"])
- self.patch_ifc(data["ifc"])
- self.settings.logger.info(f"Creating collision data for {ab} ...")
- if len(data["ifc"].by_type("IfcElement")) > 0:
- self.add_collision_objects(data, clash_set[f"{ab}_cm"])
-
- if "b" in clash_set and clash_set["b"]:
- results = clash_set["a_cm"].in_collision_other(clash_set["b_cm"], return_data=True)
- else:
- results = clash_set["a_cm"].in_collision_internal(return_data=True)
-
- if not results[0]:
- return
-
- tolerance = clash_set["tolerance"] if "tolerance" in clash_set else 0.01
- clash_set["clashes"] = {}
-
- for contact in results[1]:
- a_global_id, b_global_id = contact.names
- a = self.get_element(clash_set["a"], a_global_id)
- if "b" in clash_set and clash_set["b"]:
- b = self.get_element(clash_set["b"], b_global_id)
- else:
- b = self.get_element(clash_set["a"], b_global_id)
- if contact.raw.penetration_depth < tolerance:
- continue
-
- # fcl returns contact data for faces that aren't actually
- # penetrating, but just touching. If our tolerance is zero, then we
- # consider these as clashes and we move on. If our tolerance is not
- # zero, fcl has a strange behaviour where the penetration depth can
- # be a large number even though objects are just touching
- # https://github.com/flexible-collision-library/fcl/issues/503 In
- # this case, I don't trust the penetration depth and I run my own
- # triangle-triangle intersection test. Optimistically, this skips
- # the false positives. Conservatively, we let the user manually deal
- # with the false positives and we mark it as a clash.
- is_optimistic = True # TODO: let user configure this
-
- if is_optimistic and tolerance != 0:
- # We'll now check if the contact data's two faces are actually
- # intersecting, using this brute force check:
- # https://stackoverflow.com/questions/7113344/find-whether-two-triangles-intersect-or-not
- # I'm not very good at this kind of code. If you know this stuff
- # please help rewrite this.
-
- # Get vertices of clashing tris
- p1 = self.global_data["meshes"][contact.names[0]].faces[contact.index(contact.names[0])]
- p2 = self.global_data["meshes"][contact.names[1]].faces[contact.index(contact.names[1])]
- m1 = self.global_data["matrices"][contact.names[0]]
- m2 = self.global_data["matrices"][contact.names[1]]
- v1 = []
- v2 = []
-
- for v in p1:
- v1.append(
- (m1 @ np.array([*self.global_data["meshes"][contact.names[0]].vertices[v], 1]))[0:3].round(2)
- )
- for v in p2:
- v2.append(
- (m2 @ np.array([*self.global_data["meshes"][contact.names[1]].vertices[v], 1]))[0:3].round(2)
- )
-
- tri1_x = 0
- tri2_x = 0
- tri1_x += 1 if self.intersect_line_triangle(v1[0], v1[1], v2[0], v2[1], v2[2]) is not None else 0
- tri1_x += 1 if self.intersect_line_triangle(v1[1], v1[2], v2[0], v2[1], v2[2]) is not None else 0
- tri1_x += 1 if self.intersect_line_triangle(v1[2], v1[0], v2[0], v2[1], v2[2]) is not None else 0
-
- tri2_x += 1 if self.intersect_line_triangle(v2[0], v2[1], v1[0], v1[1], v1[2]) is not None else 0
- tri2_x += 1 if self.intersect_line_triangle(v2[1], v2[2], v1[0], v1[1], v1[2]) is not None else 0
- tri2_x += 1 if self.intersect_line_triangle(v2[2], v2[0], v1[0], v1[1], v1[2]) is not None else 0
- intersections = [tri1_x, tri2_x]
- if intersections == [0, 2] or intersections == [2, 0] or intersections == [1, 1]:
- # This is a penetrating collision
- pass
- else:
- # This is probably two triangles which just touch
- continue
-
- key = f"{a_global_id}-{b_global_id}"
-
- if (
- key in clash_set["clashes"]
- and clash_set["clashes"][key]["penetration_depth"] > contact.raw.penetration_depth
- ):
- continue
-
- clash_set["clashes"][key] = {
- "a_global_id": a_global_id,
- "b_global_id": b_global_id,
- "a_ifc_class": a.is_a(),
- "b_ifc_class": b.is_a(),
- "a_name": a.Name,
- "b_name": b.Name,
- "normal": list(contact.raw.normal),
- "position": list(contact.raw.pos),
- "penetration_depth": contact.raw.penetration_depth,
- }
-
- # https://stackoverflow.com/questions/42740765/intersection-between-line-and-triangle-in-3d
- def intersect_line_triangle(self, q1, q2, p1, p2, p3):
- def signed_tetra_volume(a, b, c, d):
- return np.sign(np.dot(np.cross(b - a, c - a), d - a) / 6.0)
-
- s1 = signed_tetra_volume(q1, p1, p2, p3)
- s2 = signed_tetra_volume(q2, p1, p2, p3)
-
- if s1 != s2:
- s3 = signed_tetra_volume(q1, q2, p1, p2)
- s4 = signed_tetra_volume(q1, q2, p2, p3)
- s5 = signed_tetra_volume(q1, q2, p3, p1)
- if s3 == s4 and s4 == s5:
- n = np.cross(p2 - p1, p3 - p1)
- t = -np.dot(q1, n - p1) / np.dot(q1, q2 - q1)
- return q1 + t * (q2 - q1)
- return None
-
- def export(self):
- if len(self.settings.output) > 4 and self.settings.output[-4:] == ".bcf":
- return self.export_bcfxml()
- self.export_json()
-
- def export_bcfxml(self):
- import bcf
- import bcf.bcfxml
-
- for i, clash_set in enumerate(self.clash_sets):
- bcfxml = bcf.bcfxml.BcfXml()
- bcfxml.new_project()
- bcfxml.project.name = clash_set["name"]
- bcfxml.edit_project()
- for key, clash in clash_set["clashes"].items():
- topic = bcf.data.Topic()
- topic.title = "{}/{} and {}/{}".format(
- clash["a_ifc_class"], clash["a_name"], clash["b_ifc_class"], clash["b_name"]
- )
- topic = bcfxml.add_topic(topic)
- viewpoint = bcf.data.Viewpoint()
- viewpoint.perspective_camera = bcf.data.PerspectiveCamera()
- position = np.array(clash["position"])
- point = position + np.array((5, 5, 5)) # Dumb, but works!
- viewpoint.perspective_camera.camera_view_point.x = point[0]
- viewpoint.perspective_camera.camera_view_point.y = point[1]
- viewpoint.perspective_camera.camera_view_point.z = point[2]
- mat = self.get_track_to_matrix(point, position)
- viewpoint.perspective_camera.camera_direction.x = mat[0][2] * -1
- viewpoint.perspective_camera.camera_direction.y = mat[1][2] * -1
- viewpoint.perspective_camera.camera_direction.z = mat[2][2] * -1
- viewpoint.perspective_camera.camera_up_vector.x = mat[0][1]
- viewpoint.perspective_camera.camera_up_vector.y = mat[1][1]
- viewpoint.perspective_camera.camera_up_vector.z = mat[2][1]
- viewpoint.components = bcf.data.Components()
- c1 = bcf.data.Component()
- c1.ifc_guid = clash["a_global_id"]
- c2 = bcf.data.Component()
- c2.ifc_guid = clash["b_global_id"]
- viewpoint.components.selection.append(c1)
- viewpoint.components.selection.append(c2)
- viewpoint.components.visibility = bcf.data.ComponentVisibility()
- viewpoint.components.visibility.default_visibility = True
- viewpoint.snapshot = self.get_viewpoint_snapshot(viewpoint, mat)
- bcfxml.add_viewpoint(topic, viewpoint)
- if i == 0:
- bcfxml.save_project(self.settings.output)
- else:
- bcfxml.save_project(self.settings.output + f".{i}")
-
- def get_viewpoint_snapshot(self, viewpoint, mat):
- return None # Possible to overload this function in a GUI application if used as a library
-
- # https://blender.stackexchange.com/questions/68834/recreate-to-track-quat-with-two-vectors-using-python/141706#141706
- def get_track_to_matrix(self, camera_position, target_position):
- camera_direction = camera_position - target_position
- camera_direction = camera_direction / np.linalg.norm(camera_direction)
- camera_right = np.cross(np.array([0.0, 0.0, 1.0]), camera_direction)
- camera_right = camera_right / np.linalg.norm(camera_right)
- camera_up = np.cross(camera_direction, camera_right)
- camera_up = camera_up / np.linalg.norm(camera_up)
- rotation_transform = np.zeros((4, 4))
- rotation_transform[0, :3] = camera_right
- rotation_transform[1, :3] = camera_up
- rotation_transform[2, :3] = camera_direction
- rotation_transform[-1, -1] = 1
- translation_transform = np.eye(4)
- translation_transform[:3, -1] = - camera_position
- look_at_transform = np.matmul(rotation_transform, translation_transform)
- return np.linalg.inv(look_at_transform)
-
- def export_json(self):
- results = self.clash_sets.copy()
- for result in results:
- del result["a_cm"]
- del result["b_cm"]
- for ab in ["a", "b"]:
- for data in result[ab]:
- if "ifc" in data:
- del data["ifc"]
- with open(self.settings.output, "w", encoding="utf-8") as clashes_file:
- json.dump(results, clashes_file, indent=4)
-
- def get_element(self, clash_group, global_id):
- for data in clash_group:
- try:
- element = data["ifc"].by_guid(global_id)
- if element:
- return element
- except:
- pass
-
- def add_collision_objects(self, data, cm):
- self.clash_data["meshes"] = {}
- selector = ifcopenshell.util.selector.Selector()
- if "selector" not in data:
- iterator = ifcopenshell.geom.iterator(
- self.geom_settings,
- data["ifc"],
- multiprocessing.cpu_count(),
- exclude=(data["ifc"].by_type("IfcSpatialStructureElement")),
- )
- elif data["mode"] == "e":
- iterator = ifcopenshell.geom.iterator(
- self.geom_settings,
- data["ifc"],
- multiprocessing.cpu_count(),
- exclude=selector.parse(data["ifc"], data["selector"]),
- )
- elif data["mode"] == "i":
- iterator = ifcopenshell.geom.iterator(
- self.geom_settings,
- data["ifc"],
- multiprocessing.cpu_count(),
- include=selector.parse(data["ifc"], data["selector"]),
- )
- valid_file = iterator.initialize()
- if not valid_file:
- return False
- old_progress = -1
- while True:
- progress = iterator.progress() // 2
- if progress > old_progress:
- print("\r[" + "#" * progress + " " * (50 - progress) + "]", end="")
- old_progress = progress
- self.add_collision_object(data, cm, iterator.get())
- if not iterator.next():
- break
-
- def add_collision_object(self, data, cm, shape):
- if shape is None:
- return
- element = data["ifc"].by_id(shape.guid)
- self.settings.logger.info("Creating object {}".format(element))
- mesh_name = f"mesh-{shape.geometry.id}"
- if mesh_name in self.clash_data["meshes"]:
- mesh = self.clash_data["meshes"][mesh_name]
- else:
- mesh = self.create_mesh(shape)
- self.clash_data["meshes"][mesh_name] = mesh
- self.global_data["meshes"][shape.guid] = mesh
-
- m = shape.transformation.matrix.data
- mat = np.array([[m[0], m[3], m[6], m[9]], [m[1], m[4], m[7], m[10]], [m[2], m[5], m[8], m[11]], [0, 0, 0, 1]])
-
- mat.transpose()
- self.global_data["matrices"][shape.guid] = mat
- cm.add_object(shape.guid, mesh, mat)
-
- def create_mesh(self, shape):
- f = shape.geometry.faces
- v = shape.geometry.verts
- mesh = Mesh()
- mesh.vertices = np.array([[v[i], v[i + 1], v[i + 2]] for i in range(0, len(v), 3)])
- mesh.faces = np.array([[f[i], f[i + 1], f[i + 2]] for i in range(0, len(f), 3)])
- return mesh
-
- def patch_ifc(self, ifc_file):
- project = ifc_file.by_type("IfcProject")[0]
- sites = self.find_decomposed_ifc_class(project, "IfcSite")
- for site in sites:
- self.patch_placement_to_origin(site)
- buildings = self.find_decomposed_ifc_class(project, "IfcBuilding")
- for building in buildings:
- self.patch_placement_to_origin(building)
-
- def find_decomposed_ifc_class(self, element, ifc_class):
- results = []
- rel_aggregates = element.IsDecomposedBy
- if not rel_aggregates:
- return results
- for rel_aggregate in rel_aggregates:
- for part in rel_aggregate.RelatedObjects:
- if part.is_a(ifc_class):
- results.append(part)
- results.extend(self.find_decomposed_ifc_class(part, ifc_class))
- return results
-
- def patch_placement_to_origin(self, element):
- element.ObjectPlacement.RelativePlacement.Location.Coordinates = (0.0, 0.0, 0.0)
- if element.ObjectPlacement.RelativePlacement.Axis:
- element.ObjectPlacement.RelativePlacement.Axis.DirectionRatios = (0.0, 0.0, 1.0)
- if element.ObjectPlacement.RelativePlacement.RefDirection:
- element.ObjectPlacement.RelativePlacement.RefDirection.DirectionRatios = (1.0, 0.0, 0.0)
-
- def smart_group_clashes(self, clash_sets, max_clustering_distance):
- from sklearn.cluster import OPTICS
- from collections import defaultdict
-
- count_of_input_clashes = 0
- count_of_clash_sets = 0
- count_of_smart_groups = 0
- count_of_final_clash_sets = 0
-
- count_of_clash_sets = len(clash_sets)
-
- for clash_set in clash_sets:
- if not "clashes" in clash_set.keys():
- print(f"Skipping clash set [{clash_set['name']}] since it contains no clash results.")
- continue
- clashes = clash_set["clashes"]
- if len(clashes) == 0:
- print(f"Skipping clash set [{clash_set['name']}] since it contains no clash results.")
- continue
-
- count_of_input_clashes += len(clashes)
-
- positions = []
- for clash in clashes.values():
- positions.append(clash["position"])
-
- data = np.array(positions)
-
- # INPUTS
- # set the desired maximum distance between the grouped points
- if max_clustering_distance > 0:
- max_distance_between_grouped_points = max_clustering_distance
- else:
- max_distance_between_grouped_points = 3
-
- model = OPTICS(min_samples=2, max_eps=max_distance_between_grouped_points)
- model.fit_predict(data)
- pred = model.fit_predict(data)
-
- # Insert the smart groups into the clashes
- if len(pred) == len(clashes.values()):
- i = 0
- for clash in clashes.values():
- int_prediction = int(pred[i])
- if int_prediction == -1:
- # ungroup this clash since it's a single clash that we were not able to group.
- new_clash_group_number = np.amax(pred).item() + 1 + i
- clash["smart_group"] = new_clash_group_number
- else:
- clash["smart_group"] = int_prediction
- i += 1
-
- # Create JSON with smart_groups that contain GlobalIDs
- output_clash_sets = defaultdict(list)
- for clash_set in clash_sets:
- if not "clashes" in clash_set.keys():
- continue
- smart_groups = defaultdict(list)
- for clash_id, content in clash_set["clashes"].items():
- if "smart_group" in content:
- object_id_list = list()
- # Clash has been grouped, let's extract it.
- object_id_list.append(content["a_global_id"])
- object_id_list.append(content["b_global_id"])
- smart_groups[content["smart_group"]].append(object_id_list)
- count_of_smart_groups += len(smart_groups)
- output_clash_sets[clash_set["name"]].append(smart_groups)
-
- # Rename the clash groups to something more sensible
- for clash_set, smart_groups in output_clash_sets.items():
- clash_set_name = clash_set
- # Only select the clashes that correspond to the actively selected IFC Clash Set
- i = 1
- new_smart_group_name = ""
- for smart_group, global_id_pairs in list(smart_groups[0].items()):
- new_smart_group_name = f"{clash_set_name} - {i}"
- smart_groups[0][new_smart_group_name] = smart_groups[0].pop(smart_group)
- i += 1
-
- count_of_final_clash_sets = len(output_clash_sets)
- print(
- f"Took {count_of_input_clashes} clashes in {count_of_clash_sets} clash sets and turned",
- f"them into {count_of_smart_groups} smart groups in {count_of_final_clash_sets} clash sets",
- )
-
- return output_clash_sets
-
-
-class IfcClashSettings:
- def __init__(self):
- self.logger = None
- self.output = "clashes.json"
-
-
-if __name__ == "__main__":
- parser = argparse.ArgumentParser(description="Clashes geometry between two IFC files")
- parser.add_argument("input", type=str, help="A JSON dataset describing a series of clashsets")
- parser.add_argument(
- "-o", "--output", type=str, help="The JSON diff file to output. Defaults to output.json", default="output.json"
- )
- args = parser.parse_args()
-
- settings = IfcClashSettings()
- settings.output = args.output
- settings.logger = logging.getLogger("Clash")
- settings.logger.setLevel(logging.DEBUG)
- handler = logging.StreamHandler(sys.stdout)
- handler.setLevel(logging.DEBUG)
- settings.logger.addHandler(handler)
- ifc_clasher = IfcClasher(settings)
- with open(args.input, "r") as clash_sets_file:
- ifc_clasher.clash_sets = json.loads(clash_sets_file.read())
- ifc_clasher.clash()
- ifc_clasher.export()
diff --git a/src/ifcclash/ifcclash/__main__.py b/src/ifcclash/ifcclash/__main__.py
new file mode 100644
index 0000000000..bc81131a53
--- /dev/null
+++ b/src/ifcclash/ifcclash/__main__.py
@@ -0,0 +1,45 @@
+#!/usr/bin/env python3
+
+# IfcClash - IFC-based clash detection.
+# Copyright (C) 2020, 2021 Dion Moult
+#
+# This file is part of IfcClash.
+#
+# IfcClash is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# IfcClash is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public License
+# along with IfcClash. If not, see .
+
+import sys
+import json
+import logging
+import argparse
+from .ifcclash import Clasher, ClashSettings
+
+parser = argparse.ArgumentParser(description="Clashes geometry between two IFC files")
+parser.add_argument("input", type=str, help="A JSON dataset describing a series of clashsets")
+parser.add_argument(
+ "-o", "--output", type=str, help="The JSON diff file to output. Defaults to output.json", default="output.json"
+)
+args = parser.parse_args()
+
+settings = ClashSettings()
+settings.output = args.output
+settings.logger = logging.getLogger("Clash")
+settings.logger.setLevel(logging.DEBUG)
+handler = logging.StreamHandler(sys.stdout)
+handler.setLevel(logging.DEBUG)
+settings.logger.addHandler(handler)
+ifc_clasher = Clasher(settings)
+with open(args.input, "r") as clash_sets_file:
+ ifc_clasher.clash_sets = json.loads(clash_sets_file.read())
+ifc_clasher.clash()
+ifc_clasher.export()
diff --git a/src/ifcclash/ifcclash/collider.py b/src/ifcclash/ifcclash/collider.py
new file mode 100644
index 0000000000..62a912df5e
--- /dev/null
+++ b/src/ifcclash/ifcclash/collider.py
@@ -0,0 +1,121 @@
+# IfcClash - IFC-based clash detection.
+# Copyright (C) 2020, 2021 Dion Moult
+#
+# This file is part of IfcClash.
+#
+# IfcClash is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# IfcClash is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public License
+# along with IfcClash. If not, see .
+
+import hppfcl
+import numpy as np
+import ifcopenshell
+
+
+class Collider:
+ def __init__(self, logger):
+ self.logger = logger
+ self.groups = {}
+ self.tree = ifcopenshell.geom.tree()
+
+ def create_group(self, name):
+ self.logger.info(f"Creating group {name}")
+ self.groups[name] = {"elements": {}, "objects": {}}
+
+ def create_objects(self, name, ifc_file, iterator, elements):
+ import time
+
+ start = time.time()
+ self.logger.info(f"Adding objects {name}")
+ assert iterator.initialize()
+ while True:
+ self.tree.add_element(iterator.get_native())
+ shape = iterator.get()
+ self.create_object(name, shape.guid, shape)
+ if not iterator.next():
+ break
+ self.logger.info(f"Tree finished {time.time() - start}")
+ start = time.time()
+ self.groups[name]["elements"].update({e.GlobalId: e for e in elements})
+ self.logger.info(f"Element metadata finished {time.time() - start}")
+ start = time.time()
+
+ def create_object(self, group_name, id, shape):
+ obj = hppfcl.CollisionObject(
+ self.create_bvh(shape.geometry), self.create_transform(shape.transformation.matrix.data)
+ )
+ self.groups[group_name]["objects"][id] = obj
+
+ def collide_internal(self, name):
+ return self.collide_narrowphase(name, name, self.collide_broadphase(name, name))
+
+ def collide_group(self, name1, name2):
+ return self.collide_narrowphase(name1, name2, self.collide_broadphase(name1, name2))
+
+ def collide_broadphase(self, name1, name2):
+ import time
+
+ start = time.time()
+ self.logger.info("Starting broadphase")
+ potential_collisions = []
+ checked_collisions = set()
+ for id, element in self.groups[name1]["elements"].items():
+ checked_collisions.add(id)
+ box_filter = self.tree.select_box(element)
+ pairs = [
+ {"id1": id, "id2": e.GlobalId}
+ for e in box_filter
+ if e.GlobalId not in checked_collisions and e.GlobalId in self.groups[name2]["elements"]
+ ]
+ potential_collisions.extend(pairs)
+ self.logger.info(f"Finished broadphase {time.time() - start}")
+ return potential_collisions
+
+ def collide_narrowphase(self, name1, name2, potential_collisions):
+ import time
+
+ start = time.time()
+ self.logger.info("Starting narrowphase")
+ collisions = []
+ for data in potential_collisions:
+ result = hppfcl.CollisionResult()
+ hppfcl.collide(
+ self.groups[name1]["objects"][data["id1"]],
+ self.groups[name2]["objects"][data["id2"]],
+ hppfcl.CollisionRequest(),
+ result,
+ )
+ if result.isCollision():
+ collisions.append({"id1": data["id1"], "id2": data["id2"], "collision": result})
+ self.logger.info(f"Finished narrowphase {time.time() - start}")
+ return collisions
+
+ def create_transform(self, m):
+ mat = np.array([[m[0], m[3], m[6], m[9]], [m[1], m[4], m[7], m[10]], [m[2], m[5], m[8], m[11]], [0, 0, 0, 1]])
+ mat.transpose()
+ return hppfcl.Transform3f(mat[:3, :3], mat[:3, 3])
+
+ def create_bvh(self, mesh):
+ v = mesh.verts
+ f = mesh.faces
+ mesh_verts = np.array([[v[i], v[i + 1], v[i + 2]] for i in range(0, len(v), 3)])
+ mesh_faces = [(int(f[i]), int(f[i + 1]), int(f[i + 2])) for i in range(0, len(f), 3)]
+
+ bvh = hppfcl.BVHModelOBB()
+ bvh.beginModel(len(mesh_faces), len(mesh_verts))
+ vertices = hppfcl.StdVec_Vec3f()
+ [vertices.append(v) for v in mesh_verts]
+ triangles = hppfcl.StdVec_Triangle()
+ [triangles.append(hppfcl.Triangle(f[0], f[1], f[2])) for f in mesh_faces]
+ bvh.addSubModel(vertices, triangles)
+ bvh.endModel()
+ return bvh
diff --git a/src/ifcclash/ifcclash/ifcclash.py b/src/ifcclash/ifcclash/ifcclash.py
new file mode 100644
index 0000000000..3531820626
--- /dev/null
+++ b/src/ifcclash/ifcclash/ifcclash.py
@@ -0,0 +1,298 @@
+#!/usr/bin/env python3
+
+# IfcClash - IFC-based clash detection.
+# Copyright (C) 2020, 2021 Dion Moult
+#
+# This file is part of IfcClash.
+#
+# IfcClash is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# IfcClash is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public License
+# along with IfcClash. If not, see .
+
+
+import numpy as np
+import json
+import sys
+import argparse
+import logging
+import multiprocessing
+import ifcopenshell
+import ifcopenshell.geom
+import ifcopenshell.util.selector
+from . import collider
+
+
+class Clasher:
+ def __init__(self, settings):
+ self.settings = settings
+ self.geom_settings = ifcopenshell.geom.settings()
+ self.clash_sets = []
+ self.collider = collider.Collider(self.settings.logger)
+ self.selector = ifcopenshell.util.selector.Selector()
+ self.ifcs = {}
+
+ def clash(self):
+ existing_limit = sys.getrecursionlimit()
+ for clash_set in self.clash_sets:
+ self.process_clash_set(clash_set)
+
+ def process_clash_set(self, clash_set):
+ self.collider.create_group("a")
+ for source in clash_set["a"]:
+ source["ifc"] = self.load_ifc(source["file"])
+ self.add_collision_objects("a", source["ifc"], source.get("mode", None), source.get("selector", None))
+
+ if "b" in clash_set:
+ self.collider.create_group("b")
+ for source in clash_set["b"]:
+ source["ifc"] = self.load_ifc(source["file"])
+ self.add_collision_objects("b", source["ifc"], source.get("mode", None), source.get("selector", None))
+ results = self.collider.collide_group("a", "b")
+ else:
+ results = self.collider.collide_internal("a")
+
+ processed_results = {}
+ for result in results:
+ element1 = self.get_element(clash_set["a"], result["id1"])
+ if "b" in clash_set:
+ element2 = self.get_element(clash_set["b"], result["id2"])
+ else:
+ element2 = self.get_element(clash_set["a"], result["id2"])
+
+ contact = result["collision"].getContacts()[0]
+ processed_results[f"{result['id1']}-{result['id2']}"] = {
+ "a_global_id": result["id1"],
+ "b_global_id": result["id2"],
+ "a_ifc_class": element1.is_a(),
+ "b_ifc_class": element2.is_a(),
+ "a_name": element1.Name,
+ "b_name": element2.Name,
+ "normal": list(contact.normal),
+ "position": list(contact.pos),
+ "penetration_depth": contact.penetration_depth,
+ }
+ clash_set["clashes"] = processed_results
+
+ def load_ifc(self, path):
+ import time
+
+ start = time.time()
+ self.settings.logger.info(f"Loading IFC {path}")
+ ifc = self.ifcs.get(path, None)
+ if not ifc:
+ ifc = ifcopenshell.open(path)
+ self.ifcs[path] = ifc
+ self.settings.logger.info(f"Loading finished {time.time() - start}")
+ return ifc
+
+ def add_collision_objects(self, name, ifc_file, mode=None, selector=None):
+ import time
+
+ start = time.time()
+ self.settings.logger.info("Creating iterator")
+ if not mode:
+ elements = ifc_file.by_type("IfcElement")
+ elif mode == "e":
+ elements = set(ifc_file.by_type("IfcElement")) - set(self.selector.parse(ifc_file, selector))
+ elif mode == "i":
+ elements = self.selector.parse(ifc_file, selector)
+ iterator = ifcopenshell.geom.iterator(
+ self.geom_settings, ifc_file, multiprocessing.cpu_count(), include=elements
+ )
+ self.settings.logger.info(f"Iterator creation finished {time.time() - start}")
+ self.collider.create_objects(name, ifc_file, iterator, elements)
+
+ def export(self):
+ if len(self.settings.output) > 4 and self.settings.output[-4:] == ".bcf":
+ return self.export_bcfxml()
+ self.export_json()
+
+ def export_bcfxml(self):
+ import bcf
+ import bcf.v2.bcfxml
+
+ for i, clash_set in enumerate(self.clash_sets):
+ bcfxml = bcf.v2.bcfxml.BcfXml()
+ bcfxml.new_project()
+ bcfxml.project.name = clash_set["name"]
+ bcfxml.edit_project()
+ for key, clash in clash_set["clashes"].items():
+ topic = bcf.v2.data.Topic()
+ topic.title = "{}/{} and {}/{}".format(
+ clash["a_ifc_class"], clash["a_name"], clash["b_ifc_class"], clash["b_name"]
+ )
+ topic = bcfxml.add_topic(topic)
+ viewpoint = bcf.v2.data.Viewpoint()
+ viewpoint.perspective_camera = bcf.v2.data.PerspectiveCamera()
+ position = np.array(clash["position"])
+ point = position + np.array((5, 5, 5)) # Dumb, but works (for now)!
+ viewpoint.perspective_camera.camera_view_point.x = point[0]
+ viewpoint.perspective_camera.camera_view_point.y = point[1]
+ viewpoint.perspective_camera.camera_view_point.z = point[2]
+ mat = self.get_track_to_matrix(point, position)
+ viewpoint.perspective_camera.camera_direction.x = mat[0][2] * -1
+ viewpoint.perspective_camera.camera_direction.y = mat[1][2] * -1
+ viewpoint.perspective_camera.camera_direction.z = mat[2][2] * -1
+ viewpoint.perspective_camera.camera_up_vector.x = mat[0][1]
+ viewpoint.perspective_camera.camera_up_vector.y = mat[1][1]
+ viewpoint.perspective_camera.camera_up_vector.z = mat[2][1]
+ viewpoint.components = bcf.v2.data.Components()
+ c1 = bcf.v2.data.Component()
+ c1.ifc_guid = clash["a_global_id"]
+ c2 = bcf.v2.data.Component()
+ c2.ifc_guid = clash["b_global_id"]
+ viewpoint.components.selection.append(c1)
+ viewpoint.components.selection.append(c2)
+ viewpoint.components.visibility = bcf.v2.data.ComponentVisibility()
+ viewpoint.components.visibility.default_visibility = True
+ viewpoint.snapshot = self.get_viewpoint_snapshot(viewpoint, mat)
+ bcfxml.add_viewpoint(topic, viewpoint)
+ if i == 0:
+ bcfxml.save_project(self.settings.output)
+ else:
+ bcfxml.save_project(self.settings.output + f".{i}")
+
+ def get_viewpoint_snapshot(self, viewpoint, mat):
+ return None # Possible to overload this function in a GUI application if used as a library
+
+ # https://blender.stackexchange.com/questions/68834/recreate-to-track-quat-with-two-vectors-using-python/141706#141706
+ def get_track_to_matrix(self, camera_position, target_position):
+ camera_direction = camera_position - target_position
+ camera_direction = camera_direction / np.linalg.norm(camera_direction)
+ camera_right = np.cross(np.array([0.0, 0.0, 1.0]), camera_direction)
+ camera_right = camera_right / np.linalg.norm(camera_right)
+ camera_up = np.cross(camera_direction, camera_right)
+ camera_up = camera_up / np.linalg.norm(camera_up)
+ rotation_transform = np.zeros((4, 4))
+ rotation_transform[0, :3] = camera_right
+ rotation_transform[1, :3] = camera_up
+ rotation_transform[2, :3] = camera_direction
+ rotation_transform[-1, -1] = 1
+ translation_transform = np.eye(4)
+ translation_transform[:3, -1] = -camera_position
+ look_at_transform = np.matmul(rotation_transform, translation_transform)
+ return np.linalg.inv(look_at_transform)
+
+ def export_json(self):
+ clash_sets = self.clash_sets.copy()
+ for clash_set in clash_sets:
+ for source in clash_set["a"]:
+ del source["ifc"]
+ for source in clash_set.get("b", []):
+ del source["ifc"]
+ with open(self.settings.output, "w", encoding="utf-8") as clashes_file:
+ json.dump(clash_sets, clashes_file, indent=4)
+
+ def get_element(self, clash_set, global_id):
+ for source in clash_set:
+ try:
+ element = source["ifc"].by_guid(global_id)
+ if element:
+ return element
+ except:
+ pass
+
+ def smart_group_clashes(self, clash_sets, max_clustering_distance):
+ from sklearn.cluster import OPTICS
+ from collections import defaultdict
+
+ count_of_input_clashes = 0
+ count_of_clash_sets = 0
+ count_of_smart_groups = 0
+ count_of_final_clash_sets = 0
+
+ count_of_clash_sets = len(clash_sets)
+
+ for clash_set in clash_sets:
+ if not "clashes" in clash_set.keys():
+ self.settings.logger.info(
+ f"Skipping clash set [{clash_set['name']}] since it contains no clash results."
+ )
+ continue
+ clashes = clash_set["clashes"]
+ if len(clashes) == 0:
+ self.settings.logger.info(
+ f"Skipping clash set [{clash_set['name']}] since it contains no clash results."
+ )
+ continue
+
+ count_of_input_clashes += len(clashes)
+
+ positions = []
+ for clash in clashes.values():
+ positions.append(clash["position"])
+
+ data = np.array(positions)
+
+ # INPUTS
+ # set the desired maximum distance between the grouped points
+ if max_clustering_distance > 0:
+ max_distance_between_grouped_points = max_clustering_distance
+ else:
+ max_distance_between_grouped_points = 3
+
+ model = OPTICS(min_samples=2, max_eps=max_distance_between_grouped_points)
+ model.fit_predict(data)
+ pred = model.fit_predict(data)
+
+ # Insert the smart groups into the clashes
+ if len(pred) == len(clashes.values()):
+ i = 0
+ for clash in clashes.values():
+ int_prediction = int(pred[i])
+ if int_prediction == -1:
+ # ungroup this clash since it's a single clash that we were not able to group.
+ new_clash_group_number = np.amax(pred).item() + 1 + i
+ clash["smart_group"] = new_clash_group_number
+ else:
+ clash["smart_group"] = int_prediction
+ i += 1
+
+ # Create JSON with smart_groups that contain GlobalIDs
+ output_clash_sets = defaultdict(list)
+ for clash_set in clash_sets:
+ if not "clashes" in clash_set.keys():
+ continue
+ smart_groups = defaultdict(list)
+ for clash_id, content in clash_set["clashes"].items():
+ if "smart_group" in content:
+ object_id_list = list()
+ # Clash has been grouped, let's extract it.
+ object_id_list.append(content["a_global_id"])
+ object_id_list.append(content["b_global_id"])
+ smart_groups[content["smart_group"]].append(object_id_list)
+ count_of_smart_groups += len(smart_groups)
+ output_clash_sets[clash_set["name"]].append(smart_groups)
+
+ # Rename the clash groups to something more sensible
+ for clash_set, smart_groups in output_clash_sets.items():
+ clash_set_name = clash_set
+ # Only select the clashes that correspond to the actively selected IFC Clash Set
+ i = 1
+ new_smart_group_name = ""
+ for smart_group, global_id_pairs in list(smart_groups[0].items()):
+ new_smart_group_name = f"{clash_set_name} - {i}"
+ smart_groups[0][new_smart_group_name] = smart_groups[0].pop(smart_group)
+ i += 1
+
+ count_of_final_clash_sets = len(output_clash_sets)
+ self.settings.logger.info(
+ f"Took {count_of_input_clashes} clashes in {count_of_clash_sets} clash sets and turned them into {count_of_smart_groups} smart groups in {count_of_final_clash_sets} clash sets"
+ )
+
+ return output_clash_sets
+
+
+class ClashSettings:
+ def __init__(self):
+ self.logger = None
+ self.output = "clashes.json"
diff --git a/src/ifcclash/make.py b/src/ifcclash/make.py
new file mode 100644
index 0000000000..1e1f26ee70
--- /dev/null
+++ b/src/ifcclash/make.py
@@ -0,0 +1,27 @@
+#!/usr/bin/env python3
+
+# IfcClash - IFC-based clash detection.
+# Copyright (C) 2020, 2021 Dion Moult
+#
+# This file is part of IfcClash.
+#
+# IfcClash is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# IfcClash is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public License
+# along with IfcClash. If not, see .
+
+import os
+import subprocess
+
+
+cmd = "pyinstaller ./bootstrap.py --name ifcclash --onefile --clean"
+subprocess.check_output(cmd, shell=True)
+
diff --git a/src/ifccobie/COPYING b/src/ifccobie/COPYING
new file mode 100644
index 0000000000..810fce6e9b
--- /dev/null
+++ b/src/ifccobie/COPYING
@@ -0,0 +1,621 @@
+ GNU GENERAL PUBLIC LICENSE
+ Version 3, 29 June 2007
+
+ Copyright (C) 2007 Free Software Foundation, Inc.
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+ Preamble
+
+ The GNU General Public License is a free, copyleft license for
+software and other kinds of works.
+
+ The licenses for most software and other practical works are designed
+to take away your freedom to share and change the works. By contrast,
+the GNU General Public License is intended to guarantee your freedom to
+share and change all versions of a program--to make sure it remains free
+software for all its users. We, the Free Software Foundation, use the
+GNU General Public License for most of our software; it applies also to
+any other work released this way by its authors. You can apply it to
+your programs, too.
+
+ When we speak of free software, we are referring to freedom, not
+price. Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+them if you wish), that you receive source code or can get it if you
+want it, that you can change the software or use pieces of it in new
+free programs, and that you know you can do these things.
+
+ To protect your rights, we need to prevent others from denying you
+these rights or asking you to surrender the rights. Therefore, you have
+certain responsibilities if you distribute copies of the software, or if
+you modify it: responsibilities to respect the freedom of others.
+
+ For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must pass on to the recipients the same
+freedoms that you received. You must make sure that they, too, receive
+or can get the source code. And you must show them these terms so they
+know their rights.
+
+ Developers that use the GNU GPL protect your rights with two steps:
+(1) assert copyright on the software, and (2) offer you this License
+giving you legal permission to copy, distribute and/or modify it.
+
+ For the developers' and authors' protection, the GPL clearly explains
+that there is no warranty for this free software. For both users' and
+authors' sake, the GPL requires that modified versions be marked as
+changed, so that their problems will not be attributed erroneously to
+authors of previous versions.
+
+ Some devices are designed to deny users access to install or run
+modified versions of the software inside them, although the manufacturer
+can do so. This is fundamentally incompatible with the aim of
+protecting users' freedom to change the software. The systematic
+pattern of such abuse occurs in the area of products for individuals to
+use, which is precisely where it is most unacceptable. Therefore, we
+have designed this version of the GPL to prohibit the practice for those
+products. If such problems arise substantially in other domains, we
+stand ready to extend this provision to those domains in future versions
+of the GPL, as needed to protect the freedom of users.
+
+ Finally, every program is threatened constantly by software patents.
+States should not allow patents to restrict development and use of
+software on general-purpose computers, but in those that do, we wish to
+avoid the special danger that patents applied to a free program could
+make it effectively proprietary. To prevent this, the GPL assures that
+patents cannot be used to render the program non-free.
+
+ The precise terms and conditions for copying, distribution and
+modification follow.
+
+ TERMS AND CONDITIONS
+
+ 0. Definitions.
+
+ "This License" refers to version 3 of the GNU General Public License.
+
+ "Copyright" also means copyright-like laws that apply to other kinds of
+works, such as semiconductor masks.
+
+ "The Program" refers to any copyrightable work licensed under this
+License. Each licensee is addressed as "you". "Licensees" and
+"recipients" may be individuals or organizations.
+
+ To "modify" a work means to copy from or adapt all or part of the work
+in a fashion requiring copyright permission, other than the making of an
+exact copy. The resulting work is called a "modified version" of the
+earlier work or a work "based on" the earlier work.
+
+ A "covered work" means either the unmodified Program or a work based
+on the Program.
+
+ To "propagate" a work means to do anything with it that, without
+permission, would make you directly or secondarily liable for
+infringement under applicable copyright law, except executing it on a
+computer or modifying a private copy. Propagation includes copying,
+distribution (with or without modification), making available to the
+public, and in some countries other activities as well.
+
+ To "convey" a work means any kind of propagation that enables other
+parties to make or receive copies. Mere interaction with a user through
+a computer network, with no transfer of a copy, is not conveying.
+
+ An interactive user interface displays "Appropriate Legal Notices"
+to the extent that it includes a convenient and prominently visible
+feature that (1) displays an appropriate copyright notice, and (2)
+tells the user that there is no warranty for the work (except to the
+extent that warranties are provided), that licensees may convey the
+work under this License, and how to view a copy of this License. If
+the interface presents a list of user commands or options, such as a
+menu, a prominent item in the list meets this criterion.
+
+ 1. Source Code.
+
+ The "source code" for a work means the preferred form of the work
+for making modifications to it. "Object code" means any non-source
+form of a work.
+
+ A "Standard Interface" means an interface that either is an official
+standard defined by a recognized standards body, or, in the case of
+interfaces specified for a particular programming language, one that
+is widely used among developers working in that language.
+
+ The "System Libraries" of an executable work include anything, other
+than the work as a whole, that (a) is included in the normal form of
+packaging a Major Component, but which is not part of that Major
+Component, and (b) serves only to enable use of the work with that
+Major Component, or to implement a Standard Interface for which an
+implementation is available to the public in source code form. A
+"Major Component", in this context, means a major essential component
+(kernel, window system, and so on) of the specific operating system
+(if any) on which the executable work runs, or a compiler used to
+produce the work, or an object code interpreter used to run it.
+
+ The "Corresponding Source" for a work in object code form means all
+the source code needed to generate, install, and (for an executable
+work) run the object code and to modify the work, including scripts to
+control those activities. However, it does not include the work's
+System Libraries, or general-purpose tools or generally available free
+programs which are used unmodified in performing those activities but
+which are not part of the work. For example, Corresponding Source
+includes interface definition files associated with source files for
+the work, and the source code for shared libraries and dynamically
+linked subprograms that the work is specifically designed to require,
+such as by intimate data communication or control flow between those
+subprograms and other parts of the work.
+
+ The Corresponding Source need not include anything that users
+can regenerate automatically from other parts of the Corresponding
+Source.
+
+ The Corresponding Source for a work in source code form is that
+same work.
+
+ 2. Basic Permissions.
+
+ All rights granted under this License are granted for the term of
+copyright on the Program, and are irrevocable provided the stated
+conditions are met. This License explicitly affirms your unlimited
+permission to run the unmodified Program. The output from running a
+covered work is covered by this License only if the output, given its
+content, constitutes a covered work. This License acknowledges your
+rights of fair use or other equivalent, as provided by copyright law.
+
+ You may make, run and propagate covered works that you do not
+convey, without conditions so long as your license otherwise remains
+in force. You may convey covered works to others for the sole purpose
+of having them make modifications exclusively for you, or provide you
+with facilities for running those works, provided that you comply with
+the terms of this License in conveying all material for which you do
+not control copyright. Those thus making or running the covered works
+for you must do so exclusively on your behalf, under your direction
+and control, on terms that prohibit them from making any copies of
+your copyrighted material outside their relationship with you.
+
+ Conveying under any other circumstances is permitted solely under
+the conditions stated below. Sublicensing is not allowed; section 10
+makes it unnecessary.
+
+ 3. Protecting Users' Legal Rights From Anti-Circumvention Law.
+
+ No covered work shall be deemed part of an effective technological
+measure under any applicable law fulfilling obligations under article
+11 of the WIPO copyright treaty adopted on 20 December 1996, or
+similar laws prohibiting or restricting circumvention of such
+measures.
+
+ When you convey a covered work, you waive any legal power to forbid
+circumvention of technological measures to the extent such circumvention
+is effected by exercising rights under this License with respect to
+the covered work, and you disclaim any intention to limit operation or
+modification of the work as a means of enforcing, against the work's
+users, your or third parties' legal rights to forbid circumvention of
+technological measures.
+
+ 4. Conveying Verbatim Copies.
+
+ You may convey verbatim copies of the Program's source code as you
+receive it, in any medium, provided that you conspicuously and
+appropriately publish on each copy an appropriate copyright notice;
+keep intact all notices stating that this License and any
+non-permissive terms added in accord with section 7 apply to the code;
+keep intact all notices of the absence of any warranty; and give all
+recipients a copy of this License along with the Program.
+
+ You may charge any price or no price for each copy that you convey,
+and you may offer support or warranty protection for a fee.
+
+ 5. Conveying Modified Source Versions.
+
+ You may convey a work based on the Program, or the modifications to
+produce it from the Program, in the form of source code under the
+terms of section 4, provided that you also meet all of these conditions:
+
+ a) The work must carry prominent notices stating that you modified
+ it, and giving a relevant date.
+
+ b) The work must carry prominent notices stating that it is
+ released under this License and any conditions added under section
+ 7. This requirement modifies the requirement in section 4 to
+ "keep intact all notices".
+
+ c) You must license the entire work, as a whole, under this
+ License to anyone who comes into possession of a copy. This
+ License will therefore apply, along with any applicable section 7
+ additional terms, to the whole of the work, and all its parts,
+ regardless of how they are packaged. This License gives no
+ permission to license the work in any other way, but it does not
+ invalidate such permission if you have separately received it.
+
+ d) If the work has interactive user interfaces, each must display
+ Appropriate Legal Notices; however, if the Program has interactive
+ interfaces that do not display Appropriate Legal Notices, your
+ work need not make them do so.
+
+ A compilation of a covered work with other separate and independent
+works, which are not by their nature extensions of the covered work,
+and which are not combined with it such as to form a larger program,
+in or on a volume of a storage or distribution medium, is called an
+"aggregate" if the compilation and its resulting copyright are not
+used to limit the access or legal rights of the compilation's users
+beyond what the individual works permit. Inclusion of a covered work
+in an aggregate does not cause this License to apply to the other
+parts of the aggregate.
+
+ 6. Conveying Non-Source Forms.
+
+ You may convey a covered work in object code form under the terms
+of sections 4 and 5, provided that you also convey the
+machine-readable Corresponding Source under the terms of this License,
+in one of these ways:
+
+ a) Convey the object code in, or embodied in, a physical product
+ (including a physical distribution medium), accompanied by the
+ Corresponding Source fixed on a durable physical medium
+ customarily used for software interchange.
+
+ b) Convey the object code in, or embodied in, a physical product
+ (including a physical distribution medium), accompanied by a
+ written offer, valid for at least three years and valid for as
+ long as you offer spare parts or customer support for that product
+ model, to give anyone who possesses the object code either (1) a
+ copy of the Corresponding Source for all the software in the
+ product that is covered by this License, on a durable physical
+ medium customarily used for software interchange, for a price no
+ more than your reasonable cost of physically performing this
+ conveying of source, or (2) access to copy the
+ Corresponding Source from a network server at no charge.
+
+ c) Convey individual copies of the object code with a copy of the
+ written offer to provide the Corresponding Source. This
+ alternative is allowed only occasionally and noncommercially, and
+ only if you received the object code with such an offer, in accord
+ with subsection 6b.
+
+ d) Convey the object code by offering access from a designated
+ place (gratis or for a charge), and offer equivalent access to the
+ Corresponding Source in the same way through the same place at no
+ further charge. You need not require recipients to copy the
+ Corresponding Source along with the object code. If the place to
+ copy the object code is a network server, the Corresponding Source
+ may be on a different server (operated by you or a third party)
+ that supports equivalent copying facilities, provided you maintain
+ clear directions next to the object code saying where to find the
+ Corresponding Source. Regardless of what server hosts the
+ Corresponding Source, you remain obligated to ensure that it is
+ available for as long as needed to satisfy these requirements.
+
+ e) Convey the object code using peer-to-peer transmission, provided
+ you inform other peers where the object code and Corresponding
+ Source of the work are being offered to the general public at no
+ charge under subsection 6d.
+
+ A separable portion of the object code, whose source code is excluded
+from the Corresponding Source as a System Library, need not be
+included in conveying the object code work.
+
+ A "User Product" is either (1) a "consumer product", which means any
+tangible personal property which is normally used for personal, family,
+or household purposes, or (2) anything designed or sold for incorporation
+into a dwelling. In determining whether a product is a consumer product,
+doubtful cases shall be resolved in favor of coverage. For a particular
+product received by a particular user, "normally used" refers to a
+typical or common use of that class of product, regardless of the status
+of the particular user or of the way in which the particular user
+actually uses, or expects or is expected to use, the product. A product
+is a consumer product regardless of whether the product has substantial
+commercial, industrial or non-consumer uses, unless such uses represent
+the only significant mode of use of the product.
+
+ "Installation Information" for a User Product means any methods,
+procedures, authorization keys, or other information required to install
+and execute modified versions of a covered work in that User Product from
+a modified version of its Corresponding Source. The information must
+suffice to ensure that the continued functioning of the modified object
+code is in no case prevented or interfered with solely because
+modification has been made.
+
+ If you convey an object code work under this section in, or with, or
+specifically for use in, a User Product, and the conveying occurs as
+part of a transaction in which the right of possession and use of the
+User Product is transferred to the recipient in perpetuity or for a
+fixed term (regardless of how the transaction is characterized), the
+Corresponding Source conveyed under this section must be accompanied
+by the Installation Information. But this requirement does not apply
+if neither you nor any third party retains the ability to install
+modified object code on the User Product (for example, the work has
+been installed in ROM).
+
+ The requirement to provide Installation Information does not include a
+requirement to continue to provide support service, warranty, or updates
+for a work that has been modified or installed by the recipient, or for
+the User Product in which it has been modified or installed. Access to a
+network may be denied when the modification itself materially and
+adversely affects the operation of the network or violates the rules and
+protocols for communication across the network.
+
+ Corresponding Source conveyed, and Installation Information provided,
+in accord with this section must be in a format that is publicly
+documented (and with an implementation available to the public in
+source code form), and must require no special password or key for
+unpacking, reading or copying.
+
+ 7. Additional Terms.
+
+ "Additional permissions" are terms that supplement the terms of this
+License by making exceptions from one or more of its conditions.
+Additional permissions that are applicable to the entire Program shall
+be treated as though they were included in this License, to the extent
+that they are valid under applicable law. If additional permissions
+apply only to part of the Program, that part may be used separately
+under those permissions, but the entire Program remains governed by
+this License without regard to the additional permissions.
+
+ When you convey a copy of a covered work, you may at your option
+remove any additional permissions from that copy, or from any part of
+it. (Additional permissions may be written to require their own
+removal in certain cases when you modify the work.) You may place
+additional permissions on material, added by you to a covered work,
+for which you have or can give appropriate copyright permission.
+
+ Notwithstanding any other provision of this License, for material you
+add to a covered work, you may (if authorized by the copyright holders of
+that material) supplement the terms of this License with terms:
+
+ a) Disclaiming warranty or limiting liability differently from the
+ terms of sections 15 and 16 of this License; or
+
+ b) Requiring preservation of specified reasonable legal notices or
+ author attributions in that material or in the Appropriate Legal
+ Notices displayed by works containing it; or
+
+ c) Prohibiting misrepresentation of the origin of that material, or
+ requiring that modified versions of such material be marked in
+ reasonable ways as different from the original version; or
+
+ d) Limiting the use for publicity purposes of names of licensors or
+ authors of the material; or
+
+ e) Declining to grant rights under trademark law for use of some
+ trade names, trademarks, or service marks; or
+
+ f) Requiring indemnification of licensors and authors of that
+ material by anyone who conveys the material (or modified versions of
+ it) with contractual assumptions of liability to the recipient, for
+ any liability that these contractual assumptions directly impose on
+ those licensors and authors.
+
+ All other non-permissive additional terms are considered "further
+restrictions" within the meaning of section 10. If the Program as you
+received it, or any part of it, contains a notice stating that it is
+governed by this License along with a term that is a further
+restriction, you may remove that term. If a license document contains
+a further restriction but permits relicensing or conveying under this
+License, you may add to a covered work material governed by the terms
+of that license document, provided that the further restriction does
+not survive such relicensing or conveying.
+
+ If you add terms to a covered work in accord with this section, you
+must place, in the relevant source files, a statement of the
+additional terms that apply to those files, or a notice indicating
+where to find the applicable terms.
+
+ Additional terms, permissive or non-permissive, may be stated in the
+form of a separately written license, or stated as exceptions;
+the above requirements apply either way.
+
+ 8. Termination.
+
+ You may not propagate or modify a covered work except as expressly
+provided under this License. Any attempt otherwise to propagate or
+modify it is void, and will automatically terminate your rights under
+this License (including any patent licenses granted under the third
+paragraph of section 11).
+
+ However, if you cease all violation of this License, then your
+license from a particular copyright holder is reinstated (a)
+provisionally, unless and until the copyright holder explicitly and
+finally terminates your license, and (b) permanently, if the copyright
+holder fails to notify you of the violation by some reasonable means
+prior to 60 days after the cessation.
+
+ Moreover, your license from a particular copyright holder is
+reinstated permanently if the copyright holder notifies you of the
+violation by some reasonable means, this is the first time you have
+received notice of violation of this License (for any work) from that
+copyright holder, and you cure the violation prior to 30 days after
+your receipt of the notice.
+
+ Termination of your rights under this section does not terminate the
+licenses of parties who have received copies or rights from you under
+this License. If your rights have been terminated and not permanently
+reinstated, you do not qualify to receive new licenses for the same
+material under section 10.
+
+ 9. Acceptance Not Required for Having Copies.
+
+ You are not required to accept this License in order to receive or
+run a copy of the Program. Ancillary propagation of a covered work
+occurring solely as a consequence of using peer-to-peer transmission
+to receive a copy likewise does not require acceptance. However,
+nothing other than this License grants you permission to propagate or
+modify any covered work. These actions infringe copyright if you do
+not accept this License. Therefore, by modifying or propagating a
+covered work, you indicate your acceptance of this License to do so.
+
+ 10. Automatic Licensing of Downstream Recipients.
+
+ Each time you convey a covered work, the recipient automatically
+receives a license from the original licensors, to run, modify and
+propagate that work, subject to this License. You are not responsible
+for enforcing compliance by third parties with this License.
+
+ An "entity transaction" is a transaction transferring control of an
+organization, or substantially all assets of one, or subdividing an
+organization, or merging organizations. If propagation of a covered
+work results from an entity transaction, each party to that
+transaction who receives a copy of the work also receives whatever
+licenses to the work the party's predecessor in interest had or could
+give under the previous paragraph, plus a right to possession of the
+Corresponding Source of the work from the predecessor in interest, if
+the predecessor has it or can get it with reasonable efforts.
+
+ You may not impose any further restrictions on the exercise of the
+rights granted or affirmed under this License. For example, you may
+not impose a license fee, royalty, or other charge for exercise of
+rights granted under this License, and you may not initiate litigation
+(including a cross-claim or counterclaim in a lawsuit) alleging that
+any patent claim is infringed by making, using, selling, offering for
+sale, or importing the Program or any portion of it.
+
+ 11. Patents.
+
+ A "contributor" is a copyright holder who authorizes use under this
+License of the Program or a work on which the Program is based. The
+work thus licensed is called the contributor's "contributor version".
+
+ A contributor's "essential patent claims" are all patent claims
+owned or controlled by the contributor, whether already acquired or
+hereafter acquired, that would be infringed by some manner, permitted
+by this License, of making, using, or selling its contributor version,
+but do not include claims that would be infringed only as a
+consequence of further modification of the contributor version. For
+purposes of this definition, "control" includes the right to grant
+patent sublicenses in a manner consistent with the requirements of
+this License.
+
+ Each contributor grants you a non-exclusive, worldwide, royalty-free
+patent license under the contributor's essential patent claims, to
+make, use, sell, offer for sale, import and otherwise run, modify and
+propagate the contents of its contributor version.
+
+ In the following three paragraphs, a "patent license" is any express
+agreement or commitment, however denominated, not to enforce a patent
+(such as an express permission to practice a patent or covenant not to
+sue for patent infringement). To "grant" such a patent license to a
+party means to make such an agreement or commitment not to enforce a
+patent against the party.
+
+ If you convey a covered work, knowingly relying on a patent license,
+and the Corresponding Source of the work is not available for anyone
+to copy, free of charge and under the terms of this License, through a
+publicly available network server or other readily accessible means,
+then you must either (1) cause the Corresponding Source to be so
+available, or (2) arrange to deprive yourself of the benefit of the
+patent license for this particular work, or (3) arrange, in a manner
+consistent with the requirements of this License, to extend the patent
+license to downstream recipients. "Knowingly relying" means you have
+actual knowledge that, but for the patent license, your conveying the
+covered work in a country, or your recipient's use of the covered work
+in a country, would infringe one or more identifiable patents in that
+country that you have reason to believe are valid.
+
+ If, pursuant to or in connection with a single transaction or
+arrangement, you convey, or propagate by procuring conveyance of, a
+covered work, and grant a patent license to some of the parties
+receiving the covered work authorizing them to use, propagate, modify
+or convey a specific copy of the covered work, then the patent license
+you grant is automatically extended to all recipients of the covered
+work and works based on it.
+
+ A patent license is "discriminatory" if it does not include within
+the scope of its coverage, prohibits the exercise of, or is
+conditioned on the non-exercise of one or more of the rights that are
+specifically granted under this License. You may not convey a covered
+work if you are a party to an arrangement with a third party that is
+in the business of distributing software, under which you make payment
+to the third party based on the extent of your activity of conveying
+the work, and under which the third party grants, to any of the
+parties who would receive the covered work from you, a discriminatory
+patent license (a) in connection with copies of the covered work
+conveyed by you (or copies made from those copies), or (b) primarily
+for and in connection with specific products or compilations that
+contain the covered work, unless you entered into that arrangement,
+or that patent license was granted, prior to 28 March 2007.
+
+ Nothing in this License shall be construed as excluding or limiting
+any implied license or other defenses to infringement that may
+otherwise be available to you under applicable patent law.
+
+ 12. No Surrender of Others' Freedom.
+
+ If conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot convey a
+covered work so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you may
+not convey it at all. For example, if you agree to terms that obligate you
+to collect a royalty for further conveying from those to whom you convey
+the Program, the only way you could satisfy both those terms and this
+License would be to refrain entirely from conveying the Program.
+
+ 13. Use with the GNU Affero General Public License.
+
+ Notwithstanding any other provision of this License, you have
+permission to link or combine any covered work with a work licensed
+under version 3 of the GNU Affero General Public License into a single
+combined work, and to convey the resulting work. The terms of this
+License will continue to apply to the part which is the covered work,
+but the special requirements of the GNU Affero General Public License,
+section 13, concerning interaction through a network will apply to the
+combination as such.
+
+ 14. Revised Versions of this License.
+
+ The Free Software Foundation may publish revised and/or new versions of
+the GNU General Public License from time to time. Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+ Each version is given a distinguishing version number. If the
+Program specifies that a certain numbered version of the GNU General
+Public License "or any later version" applies to it, you have the
+option of following the terms and conditions either of that numbered
+version or of any later version published by the Free Software
+Foundation. If the Program does not specify a version number of the
+GNU General Public License, you may choose any version ever published
+by the Free Software Foundation.
+
+ If the Program specifies that a proxy can decide which future
+versions of the GNU General Public License can be used, that proxy's
+public statement of acceptance of a version permanently authorizes you
+to choose that version for the Program.
+
+ Later license versions may give you additional or different
+permissions. However, no additional obligations are imposed on any
+author or copyright holder as a result of your choosing to follow a
+later version.
+
+ 15. Disclaimer of Warranty.
+
+ THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
+APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
+HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
+OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
+THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
+IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
+ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+ 16. Limitation of Liability.
+
+ IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
+THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
+GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
+USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
+DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
+PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
+EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGES.
+
+ 17. Interpretation of Sections 15 and 16.
+
+ If the disclaimer of warranty and limitation of liability provided
+above cannot be given local legal effect according to their terms,
+reviewing courts shall apply local law that most closely approximates
+an absolute waiver of all civil liability in connection with the
+Program, unless a warranty or assumption of liability accompanies a
+copy of the Program in return for a fee.
+
+ END OF TERMS AND CONDITIONS
diff --git a/src/ifccobie/COPYING.LESSER b/src/ifccobie/COPYING.LESSER
new file mode 100644
index 0000000000..0a041280bd
--- /dev/null
+++ b/src/ifccobie/COPYING.LESSER
@@ -0,0 +1,165 @@
+ GNU LESSER GENERAL PUBLIC LICENSE
+ Version 3, 29 June 2007
+
+ Copyright (C) 2007 Free Software Foundation, Inc.
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+
+ This version of the GNU Lesser General Public License incorporates
+the terms and conditions of version 3 of the GNU General Public
+License, supplemented by the additional permissions listed below.
+
+ 0. Additional Definitions.
+
+ As used herein, "this License" refers to version 3 of the GNU Lesser
+General Public License, and the "GNU GPL" refers to version 3 of the GNU
+General Public License.
+
+ "The Library" refers to a covered work governed by this License,
+other than an Application or a Combined Work as defined below.
+
+ An "Application" is any work that makes use of an interface provided
+by the Library, but which is not otherwise based on the Library.
+Defining a subclass of a class defined by the Library is deemed a mode
+of using an interface provided by the Library.
+
+ A "Combined Work" is a work produced by combining or linking an
+Application with the Library. The particular version of the Library
+with which the Combined Work was made is also called the "Linked
+Version".
+
+ The "Minimal Corresponding Source" for a Combined Work means the
+Corresponding Source for the Combined Work, excluding any source code
+for portions of the Combined Work that, considered in isolation, are
+based on the Application, and not on the Linked Version.
+
+ The "Corresponding Application Code" for a Combined Work means the
+object code and/or source code for the Application, including any data
+and utility programs needed for reproducing the Combined Work from the
+Application, but excluding the System Libraries of the Combined Work.
+
+ 1. Exception to Section 3 of the GNU GPL.
+
+ You may convey a covered work under sections 3 and 4 of this License
+without being bound by section 3 of the GNU GPL.
+
+ 2. Conveying Modified Versions.
+
+ If you modify a copy of the Library, and, in your modifications, a
+facility refers to a function or data to be supplied by an Application
+that uses the facility (other than as an argument passed when the
+facility is invoked), then you may convey a copy of the modified
+version:
+
+ a) under this License, provided that you make a good faith effort to
+ ensure that, in the event an Application does not supply the
+ function or data, the facility still operates, and performs
+ whatever part of its purpose remains meaningful, or
+
+ b) under the GNU GPL, with none of the additional permissions of
+ this License applicable to that copy.
+
+ 3. Object Code Incorporating Material from Library Header Files.
+
+ The object code form of an Application may incorporate material from
+a header file that is part of the Library. You may convey such object
+code under terms of your choice, provided that, if the incorporated
+material is not limited to numerical parameters, data structure
+layouts and accessors, or small macros, inline functions and templates
+(ten or fewer lines in length), you do both of the following:
+
+ a) Give prominent notice with each copy of the object code that the
+ Library is used in it and that the Library and its use are
+ covered by this License.
+
+ b) Accompany the object code with a copy of the GNU GPL and this license
+ document.
+
+ 4. Combined Works.
+
+ You may convey a Combined Work under terms of your choice that,
+taken together, effectively do not restrict modification of the
+portions of the Library contained in the Combined Work and reverse
+engineering for debugging such modifications, if you also do each of
+the following:
+
+ a) Give prominent notice with each copy of the Combined Work that
+ the Library is used in it and that the Library and its use are
+ covered by this License.
+
+ b) Accompany the Combined Work with a copy of the GNU GPL and this license
+ document.
+
+ c) For a Combined Work that displays copyright notices during
+ execution, include the copyright notice for the Library among
+ these notices, as well as a reference directing the user to the
+ copies of the GNU GPL and this license document.
+
+ d) Do one of the following:
+
+ 0) Convey the Minimal Corresponding Source under the terms of this
+ License, and the Corresponding Application Code in a form
+ suitable for, and under terms that permit, the user to
+ recombine or relink the Application with a modified version of
+ the Linked Version to produce a modified Combined Work, in the
+ manner specified by section 6 of the GNU GPL for conveying
+ Corresponding Source.
+
+ 1) Use a suitable shared library mechanism for linking with the
+ Library. A suitable mechanism is one that (a) uses at run time
+ a copy of the Library already present on the user's computer
+ system, and (b) will operate properly with a modified version
+ of the Library that is interface-compatible with the Linked
+ Version.
+
+ e) Provide Installation Information, but only if you would otherwise
+ be required to provide such information under section 6 of the
+ GNU GPL, and only to the extent that such information is
+ necessary to install and execute a modified version of the
+ Combined Work produced by recombining or relinking the
+ Application with a modified version of the Linked Version. (If
+ you use option 4d0, the Installation Information must accompany
+ the Minimal Corresponding Source and Corresponding Application
+ Code. If you use option 4d1, you must provide the Installation
+ Information in the manner specified by section 6 of the GNU GPL
+ for conveying Corresponding Source.)
+
+ 5. Combined Libraries.
+
+ You may place library facilities that are a work based on the
+Library side by side in a single library together with other library
+facilities that are not Applications and are not covered by this
+License, and convey such a combined library under terms of your
+choice, if you do both of the following:
+
+ a) Accompany the combined library with a copy of the same work based
+ on the Library, uncombined with any other library facilities,
+ conveyed under the terms of this License.
+
+ b) Give prominent notice with the combined library that part of it
+ is a work based on the Library, and explaining where to find the
+ accompanying uncombined form of the same work.
+
+ 6. Revised Versions of the GNU Lesser General Public License.
+
+ The Free Software Foundation may publish revised and/or new versions
+of the GNU Lesser General Public License from time to time. Such new
+versions will be similar in spirit to the present version, but may
+differ in detail to address new problems or concerns.
+
+ Each version is given a distinguishing version number. If the
+Library as you received it specifies that a certain numbered version
+of the GNU Lesser General Public License "or any later version"
+applies to it, you have the option of following the terms and
+conditions either of that published version or of any later version
+published by the Free Software Foundation. If the Library as you
+received it does not specify a version number of the GNU Lesser
+General Public License, you may choose any version of the GNU Lesser
+General Public License ever published by the Free Software Foundation.
+
+ If the Library as you received it specifies that a proxy can decide
+whether future versions of the GNU Lesser General Public License shall
+apply, that proxy's public statement of acceptance of any version is
+permanent authorization for you to choose that version for the
+Library.
diff --git a/src/ifccobie/cobie.py b/src/ifccobie/cobie.py
index 41ed46612d..9c42890e02 100755
--- a/src/ifccobie/cobie.py
+++ b/src/ifccobie/cobie.py
@@ -1,4 +1,23 @@
#!/usr/bin/env python3
+
+# IfcCOBie - Extract COBie data from IFC to spreadsheets
+# Copyright (C) 2019, 2020, 2021 Dion Moult
+#
+# This file is part of IfcCOBie.
+#
+# IfcCOBie is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# IfcCOBie is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public License
+# along with IfcCOBie. If not, see .
+
# This can be packaged with `pyinstaller --onefile --clean --icon=icon.ico bimtester.py`
import os
diff --git a/src/ifccobie/get_maintainable_assets.py b/src/ifccobie/get_maintainable_assets.py
index 1e71ac50d5..591a080088 100644
--- a/src/ifccobie/get_maintainable_assets.py
+++ b/src/ifccobie/get_maintainable_assets.py
@@ -1,3 +1,22 @@
+
+# IfcCOBie - Extract COBie data from IFC to spreadsheets
+# Copyright (C) 2019, 2020, 2021 Dion Moult
+#
+# This file is part of IfcCOBie.
+#
+# IfcCOBie is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# IfcCOBie is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public License
+# along with IfcCOBie. If not, see .
+
import json
import ifcopenshell
import ifcopenshell.util.selector
diff --git a/src/ifcconvert/IfcConvert.cpp b/src/ifcconvert/IfcConvert.cpp
index c9eee13e28..a6ab6e89b1 100644
--- a/src/ifcconvert/IfcConvert.cpp
+++ b/src/ifcconvert/IfcConvert.cpp
@@ -356,7 +356,7 @@ int main(int argc, char** argv) {
short precision;
double section_height;
std::string svg_scale, svg_center;
- std::string section_ref, elevation_ref;
+ std::string section_ref, elevation_ref, elevation_ref_guid;
// "none", "full" or "left"
std::string storey_height_display;
SvgSerializer::storey_height_display_types svg_storey_height_display = SvgSerializer::SH_NONE;
@@ -378,9 +378,11 @@ int main(int argc, char** argv) {
"When using --scale, specifies the location in the range [0 1]x[0 1] around which"
"to center the drawings. Example 0.5x0.5 (default).")
("section-ref", po::value(§ion_ref),
- "Element at which vertical cross sections should be created")
+ "Element at which cross sections should be created")
("elevation-ref", po::value(&elevation_ref),
- "Element at which vertical elevations should be created")
+ "Element at which drawings should be created")
+ ("elevation-ref-guid", po::value(&elevation_ref_guid),
+ "Element guids at which drawings should be created")
("auto-section",
"Creates SVG cross section drawings automatically based on model extents")
("auto-elevation",
@@ -399,6 +401,7 @@ int main(int argc, char** argv) {
("svg-project",
"Always enable hidden line rendering instead of only on elevations")
("svg-without-storeys", "Don't emit drawings for building storeys")
+ ("svg-no-css", "Don't emit CSS style declarations")
("door-arcs", "Draw door openings arcs for IfcDoor elements")
("section-height", po::value(§ion_height),
"Specifies the cut section height for SVG 2D geometry.")
@@ -755,7 +758,7 @@ int main(int argc, char** argv) {
std::uniform_int_distribution index_dist('A', 'Z');
{
std::string v = ".ifcopenshell.";
- output_temp_filename += path_t(v.begin(), v.end());
+ output_temp_filename = path_t(v.begin(), v.end());
}
for (int i = 0; i < 8; ++i) {
output_temp_filename.push_back(static_cast(index_dist(rng)));
@@ -1016,6 +1019,9 @@ int main(int argc, char** argv) {
if (vmap.count("elevation-ref")) {
static_cast(serializer.get())->setElevationRef(elevation_ref);
}
+ if (vmap.count("elevation-ref-guid")) {
+ static_cast(serializer.get())->setElevationRefGuid(elevation_ref_guid);
+ }
if (vmap.count("auto-section")) {
static_cast(serializer.get())->setAutoSection(true);
}
@@ -1027,6 +1033,7 @@ int main(int argc, char** argv) {
static_cast(serializer.get())->setPolygonal(vmap.count("svg-write-poly") > 0);
static_cast(serializer.get())->setAlwaysProject(vmap.count("svg-project") > 0);
static_cast(serializer.get())->setWithoutStoreys(vmap.count("svg-without-storeys") > 0);
+ static_cast(serializer.get())->setNoCSS(vmap.count("svg-no-css") > 0);
if (relative_center_x && relative_center_y) {
static_cast(serializer.get())->setDrawingCenter(*relative_center_x, *relative_center_y);
}
diff --git a/src/ifccsv/COPYING b/src/ifccsv/COPYING
new file mode 100644
index 0000000000..810fce6e9b
--- /dev/null
+++ b/src/ifccsv/COPYING
@@ -0,0 +1,621 @@
+ GNU GENERAL PUBLIC LICENSE
+ Version 3, 29 June 2007
+
+ Copyright (C) 2007 Free Software Foundation, Inc.
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+ Preamble
+
+ The GNU General Public License is a free, copyleft license for
+software and other kinds of works.
+
+ The licenses for most software and other practical works are designed
+to take away your freedom to share and change the works. By contrast,
+the GNU General Public License is intended to guarantee your freedom to
+share and change all versions of a program--to make sure it remains free
+software for all its users. We, the Free Software Foundation, use the
+GNU General Public License for most of our software; it applies also to
+any other work released this way by its authors. You can apply it to
+your programs, too.
+
+ When we speak of free software, we are referring to freedom, not
+price. Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+them if you wish), that you receive source code or can get it if you
+want it, that you can change the software or use pieces of it in new
+free programs, and that you know you can do these things.
+
+ To protect your rights, we need to prevent others from denying you
+these rights or asking you to surrender the rights. Therefore, you have
+certain responsibilities if you distribute copies of the software, or if
+you modify it: responsibilities to respect the freedom of others.
+
+ For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must pass on to the recipients the same
+freedoms that you received. You must make sure that they, too, receive
+or can get the source code. And you must show them these terms so they
+know their rights.
+
+ Developers that use the GNU GPL protect your rights with two steps:
+(1) assert copyright on the software, and (2) offer you this License
+giving you legal permission to copy, distribute and/or modify it.
+
+ For the developers' and authors' protection, the GPL clearly explains
+that there is no warranty for this free software. For both users' and
+authors' sake, the GPL requires that modified versions be marked as
+changed, so that their problems will not be attributed erroneously to
+authors of previous versions.
+
+ Some devices are designed to deny users access to install or run
+modified versions of the software inside them, although the manufacturer
+can do so. This is fundamentally incompatible with the aim of
+protecting users' freedom to change the software. The systematic
+pattern of such abuse occurs in the area of products for individuals to
+use, which is precisely where it is most unacceptable. Therefore, we
+have designed this version of the GPL to prohibit the practice for those
+products. If such problems arise substantially in other domains, we
+stand ready to extend this provision to those domains in future versions
+of the GPL, as needed to protect the freedom of users.
+
+ Finally, every program is threatened constantly by software patents.
+States should not allow patents to restrict development and use of
+software on general-purpose computers, but in those that do, we wish to
+avoid the special danger that patents applied to a free program could
+make it effectively proprietary. To prevent this, the GPL assures that
+patents cannot be used to render the program non-free.
+
+ The precise terms and conditions for copying, distribution and
+modification follow.
+
+ TERMS AND CONDITIONS
+
+ 0. Definitions.
+
+ "This License" refers to version 3 of the GNU General Public License.
+
+ "Copyright" also means copyright-like laws that apply to other kinds of
+works, such as semiconductor masks.
+
+ "The Program" refers to any copyrightable work licensed under this
+License. Each licensee is addressed as "you". "Licensees" and
+"recipients" may be individuals or organizations.
+
+ To "modify" a work means to copy from or adapt all or part of the work
+in a fashion requiring copyright permission, other than the making of an
+exact copy. The resulting work is called a "modified version" of the
+earlier work or a work "based on" the earlier work.
+
+ A "covered work" means either the unmodified Program or a work based
+on the Program.
+
+ To "propagate" a work means to do anything with it that, without
+permission, would make you directly or secondarily liable for
+infringement under applicable copyright law, except executing it on a
+computer or modifying a private copy. Propagation includes copying,
+distribution (with or without modification), making available to the
+public, and in some countries other activities as well.
+
+ To "convey" a work means any kind of propagation that enables other
+parties to make or receive copies. Mere interaction with a user through
+a computer network, with no transfer of a copy, is not conveying.
+
+ An interactive user interface displays "Appropriate Legal Notices"
+to the extent that it includes a convenient and prominently visible
+feature that (1) displays an appropriate copyright notice, and (2)
+tells the user that there is no warranty for the work (except to the
+extent that warranties are provided), that licensees may convey the
+work under this License, and how to view a copy of this License. If
+the interface presents a list of user commands or options, such as a
+menu, a prominent item in the list meets this criterion.
+
+ 1. Source Code.
+
+ The "source code" for a work means the preferred form of the work
+for making modifications to it. "Object code" means any non-source
+form of a work.
+
+ A "Standard Interface" means an interface that either is an official
+standard defined by a recognized standards body, or, in the case of
+interfaces specified for a particular programming language, one that
+is widely used among developers working in that language.
+
+ The "System Libraries" of an executable work include anything, other
+than the work as a whole, that (a) is included in the normal form of
+packaging a Major Component, but which is not part of that Major
+Component, and (b) serves only to enable use of the work with that
+Major Component, or to implement a Standard Interface for which an
+implementation is available to the public in source code form. A
+"Major Component", in this context, means a major essential component
+(kernel, window system, and so on) of the specific operating system
+(if any) on which the executable work runs, or a compiler used to
+produce the work, or an object code interpreter used to run it.
+
+ The "Corresponding Source" for a work in object code form means all
+the source code needed to generate, install, and (for an executable
+work) run the object code and to modify the work, including scripts to
+control those activities. However, it does not include the work's
+System Libraries, or general-purpose tools or generally available free
+programs which are used unmodified in performing those activities but
+which are not part of the work. For example, Corresponding Source
+includes interface definition files associated with source files for
+the work, and the source code for shared libraries and dynamically
+linked subprograms that the work is specifically designed to require,
+such as by intimate data communication or control flow between those
+subprograms and other parts of the work.
+
+ The Corresponding Source need not include anything that users
+can regenerate automatically from other parts of the Corresponding
+Source.
+
+ The Corresponding Source for a work in source code form is that
+same work.
+
+ 2. Basic Permissions.
+
+ All rights granted under this License are granted for the term of
+copyright on the Program, and are irrevocable provided the stated
+conditions are met. This License explicitly affirms your unlimited
+permission to run the unmodified Program. The output from running a
+covered work is covered by this License only if the output, given its
+content, constitutes a covered work. This License acknowledges your
+rights of fair use or other equivalent, as provided by copyright law.
+
+ You may make, run and propagate covered works that you do not
+convey, without conditions so long as your license otherwise remains
+in force. You may convey covered works to others for the sole purpose
+of having them make modifications exclusively for you, or provide you
+with facilities for running those works, provided that you comply with
+the terms of this License in conveying all material for which you do
+not control copyright. Those thus making or running the covered works
+for you must do so exclusively on your behalf, under your direction
+and control, on terms that prohibit them from making any copies of
+your copyrighted material outside their relationship with you.
+
+ Conveying under any other circumstances is permitted solely under
+the conditions stated below. Sublicensing is not allowed; section 10
+makes it unnecessary.
+
+ 3. Protecting Users' Legal Rights From Anti-Circumvention Law.
+
+ No covered work shall be deemed part of an effective technological
+measure under any applicable law fulfilling obligations under article
+11 of the WIPO copyright treaty adopted on 20 December 1996, or
+similar laws prohibiting or restricting circumvention of such
+measures.
+
+ When you convey a covered work, you waive any legal power to forbid
+circumvention of technological measures to the extent such circumvention
+is effected by exercising rights under this License with respect to
+the covered work, and you disclaim any intention to limit operation or
+modification of the work as a means of enforcing, against the work's
+users, your or third parties' legal rights to forbid circumvention of
+technological measures.
+
+ 4. Conveying Verbatim Copies.
+
+ You may convey verbatim copies of the Program's source code as you
+receive it, in any medium, provided that you conspicuously and
+appropriately publish on each copy an appropriate copyright notice;
+keep intact all notices stating that this License and any
+non-permissive terms added in accord with section 7 apply to the code;
+keep intact all notices of the absence of any warranty; and give all
+recipients a copy of this License along with the Program.
+
+ You may charge any price or no price for each copy that you convey,
+and you may offer support or warranty protection for a fee.
+
+ 5. Conveying Modified Source Versions.
+
+ You may convey a work based on the Program, or the modifications to
+produce it from the Program, in the form of source code under the
+terms of section 4, provided that you also meet all of these conditions:
+
+ a) The work must carry prominent notices stating that you modified
+ it, and giving a relevant date.
+
+ b) The work must carry prominent notices stating that it is
+ released under this License and any conditions added under section
+ 7. This requirement modifies the requirement in section 4 to
+ "keep intact all notices".
+
+ c) You must license the entire work, as a whole, under this
+ License to anyone who comes into possession of a copy. This
+ License will therefore apply, along with any applicable section 7
+ additional terms, to the whole of the work, and all its parts,
+ regardless of how they are packaged. This License gives no
+ permission to license the work in any other way, but it does not
+ invalidate such permission if you have separately received it.
+
+ d) If the work has interactive user interfaces, each must display
+ Appropriate Legal Notices; however, if the Program has interactive
+ interfaces that do not display Appropriate Legal Notices, your
+ work need not make them do so.
+
+ A compilation of a covered work with other separate and independent
+works, which are not by their nature extensions of the covered work,
+and which are not combined with it such as to form a larger program,
+in or on a volume of a storage or distribution medium, is called an
+"aggregate" if the compilation and its resulting copyright are not
+used to limit the access or legal rights of the compilation's users
+beyond what the individual works permit. Inclusion of a covered work
+in an aggregate does not cause this License to apply to the other
+parts of the aggregate.
+
+ 6. Conveying Non-Source Forms.
+
+ You may convey a covered work in object code form under the terms
+of sections 4 and 5, provided that you also convey the
+machine-readable Corresponding Source under the terms of this License,
+in one of these ways:
+
+ a) Convey the object code in, or embodied in, a physical product
+ (including a physical distribution medium), accompanied by the
+ Corresponding Source fixed on a durable physical medium
+ customarily used for software interchange.
+
+ b) Convey the object code in, or embodied in, a physical product
+ (including a physical distribution medium), accompanied by a
+ written offer, valid for at least three years and valid for as
+ long as you offer spare parts or customer support for that product
+ model, to give anyone who possesses the object code either (1) a
+ copy of the Corresponding Source for all the software in the
+ product that is covered by this License, on a durable physical
+ medium customarily used for software interchange, for a price no
+ more than your reasonable cost of physically performing this
+ conveying of source, or (2) access to copy the
+ Corresponding Source from a network server at no charge.
+
+ c) Convey individual copies of the object code with a copy of the
+ written offer to provide the Corresponding Source. This
+ alternative is allowed only occasionally and noncommercially, and
+ only if you received the object code with such an offer, in accord
+ with subsection 6b.
+
+ d) Convey the object code by offering access from a designated
+ place (gratis or for a charge), and offer equivalent access to the
+ Corresponding Source in the same way through the same place at no
+ further charge. You need not require recipients to copy the
+ Corresponding Source along with the object code. If the place to
+ copy the object code is a network server, the Corresponding Source
+ may be on a different server (operated by you or a third party)
+ that supports equivalent copying facilities, provided you maintain
+ clear directions next to the object code saying where to find the
+ Corresponding Source. Regardless of what server hosts the
+ Corresponding Source, you remain obligated to ensure that it is
+ available for as long as needed to satisfy these requirements.
+
+ e) Convey the object code using peer-to-peer transmission, provided
+ you inform other peers where the object code and Corresponding
+ Source of the work are being offered to the general public at no
+ charge under subsection 6d.
+
+ A separable portion of the object code, whose source code is excluded
+from the Corresponding Source as a System Library, need not be
+included in conveying the object code work.
+
+ A "User Product" is either (1) a "consumer product", which means any
+tangible personal property which is normally used for personal, family,
+or household purposes, or (2) anything designed or sold for incorporation
+into a dwelling. In determining whether a product is a consumer product,
+doubtful cases shall be resolved in favor of coverage. For a particular
+product received by a particular user, "normally used" refers to a
+typical or common use of that class of product, regardless of the status
+of the particular user or of the way in which the particular user
+actually uses, or expects or is expected to use, the product. A product
+is a consumer product regardless of whether the product has substantial
+commercial, industrial or non-consumer uses, unless such uses represent
+the only significant mode of use of the product.
+
+ "Installation Information" for a User Product means any methods,
+procedures, authorization keys, or other information required to install
+and execute modified versions of a covered work in that User Product from
+a modified version of its Corresponding Source. The information must
+suffice to ensure that the continued functioning of the modified object
+code is in no case prevented or interfered with solely because
+modification has been made.
+
+ If you convey an object code work under this section in, or with, or
+specifically for use in, a User Product, and the conveying occurs as
+part of a transaction in which the right of possession and use of the
+User Product is transferred to the recipient in perpetuity or for a
+fixed term (regardless of how the transaction is characterized), the
+Corresponding Source conveyed under this section must be accompanied
+by the Installation Information. But this requirement does not apply
+if neither you nor any third party retains the ability to install
+modified object code on the User Product (for example, the work has
+been installed in ROM).
+
+ The requirement to provide Installation Information does not include a
+requirement to continue to provide support service, warranty, or updates
+for a work that has been modified or installed by the recipient, or for
+the User Product in which it has been modified or installed. Access to a
+network may be denied when the modification itself materially and
+adversely affects the operation of the network or violates the rules and
+protocols for communication across the network.
+
+ Corresponding Source conveyed, and Installation Information provided,
+in accord with this section must be in a format that is publicly
+documented (and with an implementation available to the public in
+source code form), and must require no special password or key for
+unpacking, reading or copying.
+
+ 7. Additional Terms.
+
+ "Additional permissions" are terms that supplement the terms of this
+License by making exceptions from one or more of its conditions.
+Additional permissions that are applicable to the entire Program shall
+be treated as though they were included in this License, to the extent
+that they are valid under applicable law. If additional permissions
+apply only to part of the Program, that part may be used separately
+under those permissions, but the entire Program remains governed by
+this License without regard to the additional permissions.
+
+ When you convey a copy of a covered work, you may at your option
+remove any additional permissions from that copy, or from any part of
+it. (Additional permissions may be written to require their own
+removal in certain cases when you modify the work.) You may place
+additional permissions on material, added by you to a covered work,
+for which you have or can give appropriate copyright permission.
+
+ Notwithstanding any other provision of this License, for material you
+add to a covered work, you may (if authorized by the copyright holders of
+that material) supplement the terms of this License with terms:
+
+ a) Disclaiming warranty or limiting liability differently from the
+ terms of sections 15 and 16 of this License; or
+
+ b) Requiring preservation of specified reasonable legal notices or
+ author attributions in that material or in the Appropriate Legal
+ Notices displayed by works containing it; or
+
+ c) Prohibiting misrepresentation of the origin of that material, or
+ requiring that modified versions of such material be marked in
+ reasonable ways as different from the original version; or
+
+ d) Limiting the use for publicity purposes of names of licensors or
+ authors of the material; or
+
+ e) Declining to grant rights under trademark law for use of some
+ trade names, trademarks, or service marks; or
+
+ f) Requiring indemnification of licensors and authors of that
+ material by anyone who conveys the material (or modified versions of
+ it) with contractual assumptions of liability to the recipient, for
+ any liability that these contractual assumptions directly impose on
+ those licensors and authors.
+
+ All other non-permissive additional terms are considered "further
+restrictions" within the meaning of section 10. If the Program as you
+received it, or any part of it, contains a notice stating that it is
+governed by this License along with a term that is a further
+restriction, you may remove that term. If a license document contains
+a further restriction but permits relicensing or conveying under this
+License, you may add to a covered work material governed by the terms
+of that license document, provided that the further restriction does
+not survive such relicensing or conveying.
+
+ If you add terms to a covered work in accord with this section, you
+must place, in the relevant source files, a statement of the
+additional terms that apply to those files, or a notice indicating
+where to find the applicable terms.
+
+ Additional terms, permissive or non-permissive, may be stated in the
+form of a separately written license, or stated as exceptions;
+the above requirements apply either way.
+
+ 8. Termination.
+
+ You may not propagate or modify a covered work except as expressly
+provided under this License. Any attempt otherwise to propagate or
+modify it is void, and will automatically terminate your rights under
+this License (including any patent licenses granted under the third
+paragraph of section 11).
+
+ However, if you cease all violation of this License, then your
+license from a particular copyright holder is reinstated (a)
+provisionally, unless and until the copyright holder explicitly and
+finally terminates your license, and (b) permanently, if the copyright
+holder fails to notify you of the violation by some reasonable means
+prior to 60 days after the cessation.
+
+ Moreover, your license from a particular copyright holder is
+reinstated permanently if the copyright holder notifies you of the
+violation by some reasonable means, this is the first time you have
+received notice of violation of this License (for any work) from that
+copyright holder, and you cure the violation prior to 30 days after
+your receipt of the notice.
+
+ Termination of your rights under this section does not terminate the
+licenses of parties who have received copies or rights from you under
+this License. If your rights have been terminated and not permanently
+reinstated, you do not qualify to receive new licenses for the same
+material under section 10.
+
+ 9. Acceptance Not Required for Having Copies.
+
+ You are not required to accept this License in order to receive or
+run a copy of the Program. Ancillary propagation of a covered work
+occurring solely as a consequence of using peer-to-peer transmission
+to receive a copy likewise does not require acceptance. However,
+nothing other than this License grants you permission to propagate or
+modify any covered work. These actions infringe copyright if you do
+not accept this License. Therefore, by modifying or propagating a
+covered work, you indicate your acceptance of this License to do so.
+
+ 10. Automatic Licensing of Downstream Recipients.
+
+ Each time you convey a covered work, the recipient automatically
+receives a license from the original licensors, to run, modify and
+propagate that work, subject to this License. You are not responsible
+for enforcing compliance by third parties with this License.
+
+ An "entity transaction" is a transaction transferring control of an
+organization, or substantially all assets of one, or subdividing an
+organization, or merging organizations. If propagation of a covered
+work results from an entity transaction, each party to that
+transaction who receives a copy of the work also receives whatever
+licenses to the work the party's predecessor in interest had or could
+give under the previous paragraph, plus a right to possession of the
+Corresponding Source of the work from the predecessor in interest, if
+the predecessor has it or can get it with reasonable efforts.
+
+ You may not impose any further restrictions on the exercise of the
+rights granted or affirmed under this License. For example, you may
+not impose a license fee, royalty, or other charge for exercise of
+rights granted under this License, and you may not initiate litigation
+(including a cross-claim or counterclaim in a lawsuit) alleging that
+any patent claim is infringed by making, using, selling, offering for
+sale, or importing the Program or any portion of it.
+
+ 11. Patents.
+
+ A "contributor" is a copyright holder who authorizes use under this
+License of the Program or a work on which the Program is based. The
+work thus licensed is called the contributor's "contributor version".
+
+ A contributor's "essential patent claims" are all patent claims
+owned or controlled by the contributor, whether already acquired or
+hereafter acquired, that would be infringed by some manner, permitted
+by this License, of making, using, or selling its contributor version,
+but do not include claims that would be infringed only as a
+consequence of further modification of the contributor version. For
+purposes of this definition, "control" includes the right to grant
+patent sublicenses in a manner consistent with the requirements of
+this License.
+
+ Each contributor grants you a non-exclusive, worldwide, royalty-free
+patent license under the contributor's essential patent claims, to
+make, use, sell, offer for sale, import and otherwise run, modify and
+propagate the contents of its contributor version.
+
+ In the following three paragraphs, a "patent license" is any express
+agreement or commitment, however denominated, not to enforce a patent
+(such as an express permission to practice a patent or covenant not to
+sue for patent infringement). To "grant" such a patent license to a
+party means to make such an agreement or commitment not to enforce a
+patent against the party.
+
+ If you convey a covered work, knowingly relying on a patent license,
+and the Corresponding Source of the work is not available for anyone
+to copy, free of charge and under the terms of this License, through a
+publicly available network server or other readily accessible means,
+then you must either (1) cause the Corresponding Source to be so
+available, or (2) arrange to deprive yourself of the benefit of the
+patent license for this particular work, or (3) arrange, in a manner
+consistent with the requirements of this License, to extend the patent
+license to downstream recipients. "Knowingly relying" means you have
+actual knowledge that, but for the patent license, your conveying the
+covered work in a country, or your recipient's use of the covered work
+in a country, would infringe one or more identifiable patents in that
+country that you have reason to believe are valid.
+
+ If, pursuant to or in connection with a single transaction or
+arrangement, you convey, or propagate by procuring conveyance of, a
+covered work, and grant a patent license to some of the parties
+receiving the covered work authorizing them to use, propagate, modify
+or convey a specific copy of the covered work, then the patent license
+you grant is automatically extended to all recipients of the covered
+work and works based on it.
+
+ A patent license is "discriminatory" if it does not include within
+the scope of its coverage, prohibits the exercise of, or is
+conditioned on the non-exercise of one or more of the rights that are
+specifically granted under this License. You may not convey a covered
+work if you are a party to an arrangement with a third party that is
+in the business of distributing software, under which you make payment
+to the third party based on the extent of your activity of conveying
+the work, and under which the third party grants, to any of the
+parties who would receive the covered work from you, a discriminatory
+patent license (a) in connection with copies of the covered work
+conveyed by you (or copies made from those copies), or (b) primarily
+for and in connection with specific products or compilations that
+contain the covered work, unless you entered into that arrangement,
+or that patent license was granted, prior to 28 March 2007.
+
+ Nothing in this License shall be construed as excluding or limiting
+any implied license or other defenses to infringement that may
+otherwise be available to you under applicable patent law.
+
+ 12. No Surrender of Others' Freedom.
+
+ If conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot convey a
+covered work so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you may
+not convey it at all. For example, if you agree to terms that obligate you
+to collect a royalty for further conveying from those to whom you convey
+the Program, the only way you could satisfy both those terms and this
+License would be to refrain entirely from conveying the Program.
+
+ 13. Use with the GNU Affero General Public License.
+
+ Notwithstanding any other provision of this License, you have
+permission to link or combine any covered work with a work licensed
+under version 3 of the GNU Affero General Public License into a single
+combined work, and to convey the resulting work. The terms of this
+License will continue to apply to the part which is the covered work,
+but the special requirements of the GNU Affero General Public License,
+section 13, concerning interaction through a network will apply to the
+combination as such.
+
+ 14. Revised Versions of this License.
+
+ The Free Software Foundation may publish revised and/or new versions of
+the GNU General Public License from time to time. Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+ Each version is given a distinguishing version number. If the
+Program specifies that a certain numbered version of the GNU General
+Public License "or any later version" applies to it, you have the
+option of following the terms and conditions either of that numbered
+version or of any later version published by the Free Software
+Foundation. If the Program does not specify a version number of the
+GNU General Public License, you may choose any version ever published
+by the Free Software Foundation.
+
+ If the Program specifies that a proxy can decide which future
+versions of the GNU General Public License can be used, that proxy's
+public statement of acceptance of a version permanently authorizes you
+to choose that version for the Program.
+
+ Later license versions may give you additional or different
+permissions. However, no additional obligations are imposed on any
+author or copyright holder as a result of your choosing to follow a
+later version.
+
+ 15. Disclaimer of Warranty.
+
+ THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
+APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
+HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
+OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
+THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
+IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
+ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+ 16. Limitation of Liability.
+
+ IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
+THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
+GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
+USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
+DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
+PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
+EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGES.
+
+ 17. Interpretation of Sections 15 and 16.
+
+ If the disclaimer of warranty and limitation of liability provided
+above cannot be given local legal effect according to their terms,
+reviewing courts shall apply local law that most closely approximates
+an absolute waiver of all civil liability in connection with the
+Program, unless a warranty or assumption of liability accompanies a
+copy of the Program in return for a fee.
+
+ END OF TERMS AND CONDITIONS
diff --git a/src/ifccsv/COPYING.LESSER b/src/ifccsv/COPYING.LESSER
new file mode 100644
index 0000000000..0a041280bd
--- /dev/null
+++ b/src/ifccsv/COPYING.LESSER
@@ -0,0 +1,165 @@
+ GNU LESSER GENERAL PUBLIC LICENSE
+ Version 3, 29 June 2007
+
+ Copyright (C) 2007 Free Software Foundation, Inc.
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+
+ This version of the GNU Lesser General Public License incorporates
+the terms and conditions of version 3 of the GNU General Public
+License, supplemented by the additional permissions listed below.
+
+ 0. Additional Definitions.
+
+ As used herein, "this License" refers to version 3 of the GNU Lesser
+General Public License, and the "GNU GPL" refers to version 3 of the GNU
+General Public License.
+
+ "The Library" refers to a covered work governed by this License,
+other than an Application or a Combined Work as defined below.
+
+ An "Application" is any work that makes use of an interface provided
+by the Library, but which is not otherwise based on the Library.
+Defining a subclass of a class defined by the Library is deemed a mode
+of using an interface provided by the Library.
+
+ A "Combined Work" is a work produced by combining or linking an
+Application with the Library. The particular version of the Library
+with which the Combined Work was made is also called the "Linked
+Version".
+
+ The "Minimal Corresponding Source" for a Combined Work means the
+Corresponding Source for the Combined Work, excluding any source code
+for portions of the Combined Work that, considered in isolation, are
+based on the Application, and not on the Linked Version.
+
+ The "Corresponding Application Code" for a Combined Work means the
+object code and/or source code for the Application, including any data
+and utility programs needed for reproducing the Combined Work from the
+Application, but excluding the System Libraries of the Combined Work.
+
+ 1. Exception to Section 3 of the GNU GPL.
+
+ You may convey a covered work under sections 3 and 4 of this License
+without being bound by section 3 of the GNU GPL.
+
+ 2. Conveying Modified Versions.
+
+ If you modify a copy of the Library, and, in your modifications, a
+facility refers to a function or data to be supplied by an Application
+that uses the facility (other than as an argument passed when the
+facility is invoked), then you may convey a copy of the modified
+version:
+
+ a) under this License, provided that you make a good faith effort to
+ ensure that, in the event an Application does not supply the
+ function or data, the facility still operates, and performs
+ whatever part of its purpose remains meaningful, or
+
+ b) under the GNU GPL, with none of the additional permissions of
+ this License applicable to that copy.
+
+ 3. Object Code Incorporating Material from Library Header Files.
+
+ The object code form of an Application may incorporate material from
+a header file that is part of the Library. You may convey such object
+code under terms of your choice, provided that, if the incorporated
+material is not limited to numerical parameters, data structure
+layouts and accessors, or small macros, inline functions and templates
+(ten or fewer lines in length), you do both of the following:
+
+ a) Give prominent notice with each copy of the object code that the
+ Library is used in it and that the Library and its use are
+ covered by this License.
+
+ b) Accompany the object code with a copy of the GNU GPL and this license
+ document.
+
+ 4. Combined Works.
+
+ You may convey a Combined Work under terms of your choice that,
+taken together, effectively do not restrict modification of the
+portions of the Library contained in the Combined Work and reverse
+engineering for debugging such modifications, if you also do each of
+the following:
+
+ a) Give prominent notice with each copy of the Combined Work that
+ the Library is used in it and that the Library and its use are
+ covered by this License.
+
+ b) Accompany the Combined Work with a copy of the GNU GPL and this license
+ document.
+
+ c) For a Combined Work that displays copyright notices during
+ execution, include the copyright notice for the Library among
+ these notices, as well as a reference directing the user to the
+ copies of the GNU GPL and this license document.
+
+ d) Do one of the following:
+
+ 0) Convey the Minimal Corresponding Source under the terms of this
+ License, and the Corresponding Application Code in a form
+ suitable for, and under terms that permit, the user to
+ recombine or relink the Application with a modified version of
+ the Linked Version to produce a modified Combined Work, in the
+ manner specified by section 6 of the GNU GPL for conveying
+ Corresponding Source.
+
+ 1) Use a suitable shared library mechanism for linking with the
+ Library. A suitable mechanism is one that (a) uses at run time
+ a copy of the Library already present on the user's computer
+ system, and (b) will operate properly with a modified version
+ of the Library that is interface-compatible with the Linked
+ Version.
+
+ e) Provide Installation Information, but only if you would otherwise
+ be required to provide such information under section 6 of the
+ GNU GPL, and only to the extent that such information is
+ necessary to install and execute a modified version of the
+ Combined Work produced by recombining or relinking the
+ Application with a modified version of the Linked Version. (If
+ you use option 4d0, the Installation Information must accompany
+ the Minimal Corresponding Source and Corresponding Application
+ Code. If you use option 4d1, you must provide the Installation
+ Information in the manner specified by section 6 of the GNU GPL
+ for conveying Corresponding Source.)
+
+ 5. Combined Libraries.
+
+ You may place library facilities that are a work based on the
+Library side by side in a single library together with other library
+facilities that are not Applications and are not covered by this
+License, and convey such a combined library under terms of your
+choice, if you do both of the following:
+
+ a) Accompany the combined library with a copy of the same work based
+ on the Library, uncombined with any other library facilities,
+ conveyed under the terms of this License.
+
+ b) Give prominent notice with the combined library that part of it
+ is a work based on the Library, and explaining where to find the
+ accompanying uncombined form of the same work.
+
+ 6. Revised Versions of the GNU Lesser General Public License.
+
+ The Free Software Foundation may publish revised and/or new versions
+of the GNU Lesser General Public License from time to time. Such new
+versions will be similar in spirit to the present version, but may
+differ in detail to address new problems or concerns.
+
+ Each version is given a distinguishing version number. If the
+Library as you received it specifies that a certain numbered version
+of the GNU Lesser General Public License "or any later version"
+applies to it, you have the option of following the terms and
+conditions either of that published version or of any later version
+published by the Free Software Foundation. If the Library as you
+received it does not specify a version number of the GNU Lesser
+General Public License, you may choose any version of the GNU Lesser
+General Public License ever published by the Free Software Foundation.
+
+ If the Library as you received it specifies that a proxy can decide
+whether future versions of the GNU Lesser General Public License shall
+apply, that proxy's public statement of acceptance of any version is
+permanent authorization for you to choose that version for the
+Library.
diff --git a/src/ifccsv/ifccsv.py b/src/ifccsv/ifccsv.py
index 0f9d2aa4b8..5106d5c7c2 100755
--- a/src/ifccsv/ifccsv.py
+++ b/src/ifccsv/ifccsv.py
@@ -1,4 +1,23 @@
#!/usr/bin/env python3
+
+# IfcCSV - A utility to interact with IFC data through CSV.
+# Copyright (C) 2020, 2021 Dion Moult
+#
+# This file is part of IfcCSV.
+#
+# IfcCSV is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# IfcCSV is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public License
+# along with IfcCSV. If not, see .
+
# This can be packaged with `pyinstaller --onefile --clean --icon=icon.ico ifccsv.py`
import ifcopenshell
diff --git a/src/ifcdiff/COPYING b/src/ifcdiff/COPYING
new file mode 100644
index 0000000000..810fce6e9b
--- /dev/null
+++ b/src/ifcdiff/COPYING
@@ -0,0 +1,621 @@
+ GNU GENERAL PUBLIC LICENSE
+ Version 3, 29 June 2007
+
+ Copyright (C) 2007 Free Software Foundation, Inc.
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+ Preamble
+
+ The GNU General Public License is a free, copyleft license for
+software and other kinds of works.
+
+ The licenses for most software and other practical works are designed
+to take away your freedom to share and change the works. By contrast,
+the GNU General Public License is intended to guarantee your freedom to
+share and change all versions of a program--to make sure it remains free
+software for all its users. We, the Free Software Foundation, use the
+GNU General Public License for most of our software; it applies also to
+any other work released this way by its authors. You can apply it to
+your programs, too.
+
+ When we speak of free software, we are referring to freedom, not
+price. Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+them if you wish), that you receive source code or can get it if you
+want it, that you can change the software or use pieces of it in new
+free programs, and that you know you can do these things.
+
+ To protect your rights, we need to prevent others from denying you
+these rights or asking you to surrender the rights. Therefore, you have
+certain responsibilities if you distribute copies of the software, or if
+you modify it: responsibilities to respect the freedom of others.
+
+ For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must pass on to the recipients the same
+freedoms that you received. You must make sure that they, too, receive
+or can get the source code. And you must show them these terms so they
+know their rights.
+
+ Developers that use the GNU GPL protect your rights with two steps:
+(1) assert copyright on the software, and (2) offer you this License
+giving you legal permission to copy, distribute and/or modify it.
+
+ For the developers' and authors' protection, the GPL clearly explains
+that there is no warranty for this free software. For both users' and
+authors' sake, the GPL requires that modified versions be marked as
+changed, so that their problems will not be attributed erroneously to
+authors of previous versions.
+
+ Some devices are designed to deny users access to install or run
+modified versions of the software inside them, although the manufacturer
+can do so. This is fundamentally incompatible with the aim of
+protecting users' freedom to change the software. The systematic
+pattern of such abuse occurs in the area of products for individuals to
+use, which is precisely where it is most unacceptable. Therefore, we
+have designed this version of the GPL to prohibit the practice for those
+products. If such problems arise substantially in other domains, we
+stand ready to extend this provision to those domains in future versions
+of the GPL, as needed to protect the freedom of users.
+
+ Finally, every program is threatened constantly by software patents.
+States should not allow patents to restrict development and use of
+software on general-purpose computers, but in those that do, we wish to
+avoid the special danger that patents applied to a free program could
+make it effectively proprietary. To prevent this, the GPL assures that
+patents cannot be used to render the program non-free.
+
+ The precise terms and conditions for copying, distribution and
+modification follow.
+
+ TERMS AND CONDITIONS
+
+ 0. Definitions.
+
+ "This License" refers to version 3 of the GNU General Public License.
+
+ "Copyright" also means copyright-like laws that apply to other kinds of
+works, such as semiconductor masks.
+
+ "The Program" refers to any copyrightable work licensed under this
+License. Each licensee is addressed as "you". "Licensees" and
+"recipients" may be individuals or organizations.
+
+ To "modify" a work means to copy from or adapt all or part of the work
+in a fashion requiring copyright permission, other than the making of an
+exact copy. The resulting work is called a "modified version" of the
+earlier work or a work "based on" the earlier work.
+
+ A "covered work" means either the unmodified Program or a work based
+on the Program.
+
+ To "propagate" a work means to do anything with it that, without
+permission, would make you directly or secondarily liable for
+infringement under applicable copyright law, except executing it on a
+computer or modifying a private copy. Propagation includes copying,
+distribution (with or without modification), making available to the
+public, and in some countries other activities as well.
+
+ To "convey" a work means any kind of propagation that enables other
+parties to make or receive copies. Mere interaction with a user through
+a computer network, with no transfer of a copy, is not conveying.
+
+ An interactive user interface displays "Appropriate Legal Notices"
+to the extent that it includes a convenient and prominently visible
+feature that (1) displays an appropriate copyright notice, and (2)
+tells the user that there is no warranty for the work (except to the
+extent that warranties are provided), that licensees may convey the
+work under this License, and how to view a copy of this License. If
+the interface presents a list of user commands or options, such as a
+menu, a prominent item in the list meets this criterion.
+
+ 1. Source Code.
+
+ The "source code" for a work means the preferred form of the work
+for making modifications to it. "Object code" means any non-source
+form of a work.
+
+ A "Standard Interface" means an interface that either is an official
+standard defined by a recognized standards body, or, in the case of
+interfaces specified for a particular programming language, one that
+is widely used among developers working in that language.
+
+ The "System Libraries" of an executable work include anything, other
+than the work as a whole, that (a) is included in the normal form of
+packaging a Major Component, but which is not part of that Major
+Component, and (b) serves only to enable use of the work with that
+Major Component, or to implement a Standard Interface for which an
+implementation is available to the public in source code form. A
+"Major Component", in this context, means a major essential component
+(kernel, window system, and so on) of the specific operating system
+(if any) on which the executable work runs, or a compiler used to
+produce the work, or an object code interpreter used to run it.
+
+ The "Corresponding Source" for a work in object code form means all
+the source code needed to generate, install, and (for an executable
+work) run the object code and to modify the work, including scripts to
+control those activities. However, it does not include the work's
+System Libraries, or general-purpose tools or generally available free
+programs which are used unmodified in performing those activities but
+which are not part of the work. For example, Corresponding Source
+includes interface definition files associated with source files for
+the work, and the source code for shared libraries and dynamically
+linked subprograms that the work is specifically designed to require,
+such as by intimate data communication or control flow between those
+subprograms and other parts of the work.
+
+ The Corresponding Source need not include anything that users
+can regenerate automatically from other parts of the Corresponding
+Source.
+
+ The Corresponding Source for a work in source code form is that
+same work.
+
+ 2. Basic Permissions.
+
+ All rights granted under this License are granted for the term of
+copyright on the Program, and are irrevocable provided the stated
+conditions are met. This License explicitly affirms your unlimited
+permission to run the unmodified Program. The output from running a
+covered work is covered by this License only if the output, given its
+content, constitutes a covered work. This License acknowledges your
+rights of fair use or other equivalent, as provided by copyright law.
+
+ You may make, run and propagate covered works that you do not
+convey, without conditions so long as your license otherwise remains
+in force. You may convey covered works to others for the sole purpose
+of having them make modifications exclusively for you, or provide you
+with facilities for running those works, provided that you comply with
+the terms of this License in conveying all material for which you do
+not control copyright. Those thus making or running the covered works
+for you must do so exclusively on your behalf, under your direction
+and control, on terms that prohibit them from making any copies of
+your copyrighted material outside their relationship with you.
+
+ Conveying under any other circumstances is permitted solely under
+the conditions stated below. Sublicensing is not allowed; section 10
+makes it unnecessary.
+
+ 3. Protecting Users' Legal Rights From Anti-Circumvention Law.
+
+ No covered work shall be deemed part of an effective technological
+measure under any applicable law fulfilling obligations under article
+11 of the WIPO copyright treaty adopted on 20 December 1996, or
+similar laws prohibiting or restricting circumvention of such
+measures.
+
+ When you convey a covered work, you waive any legal power to forbid
+circumvention of technological measures to the extent such circumvention
+is effected by exercising rights under this License with respect to
+the covered work, and you disclaim any intention to limit operation or
+modification of the work as a means of enforcing, against the work's
+users, your or third parties' legal rights to forbid circumvention of
+technological measures.
+
+ 4. Conveying Verbatim Copies.
+
+ You may convey verbatim copies of the Program's source code as you
+receive it, in any medium, provided that you conspicuously and
+appropriately publish on each copy an appropriate copyright notice;
+keep intact all notices stating that this License and any
+non-permissive terms added in accord with section 7 apply to the code;
+keep intact all notices of the absence of any warranty; and give all
+recipients a copy of this License along with the Program.
+
+ You may charge any price or no price for each copy that you convey,
+and you may offer support or warranty protection for a fee.
+
+ 5. Conveying Modified Source Versions.
+
+ You may convey a work based on the Program, or the modifications to
+produce it from the Program, in the form of source code under the
+terms of section 4, provided that you also meet all of these conditions:
+
+ a) The work must carry prominent notices stating that you modified
+ it, and giving a relevant date.
+
+ b) The work must carry prominent notices stating that it is
+ released under this License and any conditions added under section
+ 7. This requirement modifies the requirement in section 4 to
+ "keep intact all notices".
+
+ c) You must license the entire work, as a whole, under this
+ License to anyone who comes into possession of a copy. This
+ License will therefore apply, along with any applicable section 7
+ additional terms, to the whole of the work, and all its parts,
+ regardless of how they are packaged. This License gives no
+ permission to license the work in any other way, but it does not
+ invalidate such permission if you have separately received it.
+
+ d) If the work has interactive user interfaces, each must display
+ Appropriate Legal Notices; however, if the Program has interactive
+ interfaces that do not display Appropriate Legal Notices, your
+ work need not make them do so.
+
+ A compilation of a covered work with other separate and independent
+works, which are not by their nature extensions of the covered work,
+and which are not combined with it such as to form a larger program,
+in or on a volume of a storage or distribution medium, is called an
+"aggregate" if the compilation and its resulting copyright are not
+used to limit the access or legal rights of the compilation's users
+beyond what the individual works permit. Inclusion of a covered work
+in an aggregate does not cause this License to apply to the other
+parts of the aggregate.
+
+ 6. Conveying Non-Source Forms.
+
+ You may convey a covered work in object code form under the terms
+of sections 4 and 5, provided that you also convey the
+machine-readable Corresponding Source under the terms of this License,
+in one of these ways:
+
+ a) Convey the object code in, or embodied in, a physical product
+ (including a physical distribution medium), accompanied by the
+ Corresponding Source fixed on a durable physical medium
+ customarily used for software interchange.
+
+ b) Convey the object code in, or embodied in, a physical product
+ (including a physical distribution medium), accompanied by a
+ written offer, valid for at least three years and valid for as
+ long as you offer spare parts or customer support for that product
+ model, to give anyone who possesses the object code either (1) a
+ copy of the Corresponding Source for all the software in the
+ product that is covered by this License, on a durable physical
+ medium customarily used for software interchange, for a price no
+ more than your reasonable cost of physically performing this
+ conveying of source, or (2) access to copy the
+ Corresponding Source from a network server at no charge.
+
+ c) Convey individual copies of the object code with a copy of the
+ written offer to provide the Corresponding Source. This
+ alternative is allowed only occasionally and noncommercially, and
+ only if you received the object code with such an offer, in accord
+ with subsection 6b.
+
+ d) Convey the object code by offering access from a designated
+ place (gratis or for a charge), and offer equivalent access to the
+ Corresponding Source in the same way through the same place at no
+ further charge. You need not require recipients to copy the
+ Corresponding Source along with the object code. If the place to
+ copy the object code is a network server, the Corresponding Source
+ may be on a different server (operated by you or a third party)
+ that supports equivalent copying facilities, provided you maintain
+ clear directions next to the object code saying where to find the
+ Corresponding Source. Regardless of what server hosts the
+ Corresponding Source, you remain obligated to ensure that it is
+ available for as long as needed to satisfy these requirements.
+
+ e) Convey the object code using peer-to-peer transmission, provided
+ you inform other peers where the object code and Corresponding
+ Source of the work are being offered to the general public at no
+ charge under subsection 6d.
+
+ A separable portion of the object code, whose source code is excluded
+from the Corresponding Source as a System Library, need not be
+included in conveying the object code work.
+
+ A "User Product" is either (1) a "consumer product", which means any
+tangible personal property which is normally used for personal, family,
+or household purposes, or (2) anything designed or sold for incorporation
+into a dwelling. In determining whether a product is a consumer product,
+doubtful cases shall be resolved in favor of coverage. For a particular
+product received by a particular user, "normally used" refers to a
+typical or common use of that class of product, regardless of the status
+of the particular user or of the way in which the particular user
+actually uses, or expects or is expected to use, the product. A product
+is a consumer product regardless of whether the product has substantial
+commercial, industrial or non-consumer uses, unless such uses represent
+the only significant mode of use of the product.
+
+ "Installation Information" for a User Product means any methods,
+procedures, authorization keys, or other information required to install
+and execute modified versions of a covered work in that User Product from
+a modified version of its Corresponding Source. The information must
+suffice to ensure that the continued functioning of the modified object
+code is in no case prevented or interfered with solely because
+modification has been made.
+
+ If you convey an object code work under this section in, or with, or
+specifically for use in, a User Product, and the conveying occurs as
+part of a transaction in which the right of possession and use of the
+User Product is transferred to the recipient in perpetuity or for a
+fixed term (regardless of how the transaction is characterized), the
+Corresponding Source conveyed under this section must be accompanied
+by the Installation Information. But this requirement does not apply
+if neither you nor any third party retains the ability to install
+modified object code on the User Product (for example, the work has
+been installed in ROM).
+
+ The requirement to provide Installation Information does not include a
+requirement to continue to provide support service, warranty, or updates
+for a work that has been modified or installed by the recipient, or for
+the User Product in which it has been modified or installed. Access to a
+network may be denied when the modification itself materially and
+adversely affects the operation of the network or violates the rules and
+protocols for communication across the network.
+
+ Corresponding Source conveyed, and Installation Information provided,
+in accord with this section must be in a format that is publicly
+documented (and with an implementation available to the public in
+source code form), and must require no special password or key for
+unpacking, reading or copying.
+
+ 7. Additional Terms.
+
+ "Additional permissions" are terms that supplement the terms of this
+License by making exceptions from one or more of its conditions.
+Additional permissions that are applicable to the entire Program shall
+be treated as though they were included in this License, to the extent
+that they are valid under applicable law. If additional permissions
+apply only to part of the Program, that part may be used separately
+under those permissions, but the entire Program remains governed by
+this License without regard to the additional permissions.
+
+ When you convey a copy of a covered work, you may at your option
+remove any additional permissions from that copy, or from any part of
+it. (Additional permissions may be written to require their own
+removal in certain cases when you modify the work.) You may place
+additional permissions on material, added by you to a covered work,
+for which you have or can give appropriate copyright permission.
+
+ Notwithstanding any other provision of this License, for material you
+add to a covered work, you may (if authorized by the copyright holders of
+that material) supplement the terms of this License with terms:
+
+ a) Disclaiming warranty or limiting liability differently from the
+ terms of sections 15 and 16 of this License; or
+
+ b) Requiring preservation of specified reasonable legal notices or
+ author attributions in that material or in the Appropriate Legal
+ Notices displayed by works containing it; or
+
+ c) Prohibiting misrepresentation of the origin of that material, or
+ requiring that modified versions of such material be marked in
+ reasonable ways as different from the original version; or
+
+ d) Limiting the use for publicity purposes of names of licensors or
+ authors of the material; or
+
+ e) Declining to grant rights under trademark law for use of some
+ trade names, trademarks, or service marks; or
+
+ f) Requiring indemnification of licensors and authors of that
+ material by anyone who conveys the material (or modified versions of
+ it) with contractual assumptions of liability to the recipient, for
+ any liability that these contractual assumptions directly impose on
+ those licensors and authors.
+
+ All other non-permissive additional terms are considered "further
+restrictions" within the meaning of section 10. If the Program as you
+received it, or any part of it, contains a notice stating that it is
+governed by this License along with a term that is a further
+restriction, you may remove that term. If a license document contains
+a further restriction but permits relicensing or conveying under this
+License, you may add to a covered work material governed by the terms
+of that license document, provided that the further restriction does
+not survive such relicensing or conveying.
+
+ If you add terms to a covered work in accord with this section, you
+must place, in the relevant source files, a statement of the
+additional terms that apply to those files, or a notice indicating
+where to find the applicable terms.
+
+ Additional terms, permissive or non-permissive, may be stated in the
+form of a separately written license, or stated as exceptions;
+the above requirements apply either way.
+
+ 8. Termination.
+
+ You may not propagate or modify a covered work except as expressly
+provided under this License. Any attempt otherwise to propagate or
+modify it is void, and will automatically terminate your rights under
+this License (including any patent licenses granted under the third
+paragraph of section 11).
+
+ However, if you cease all violation of this License, then your
+license from a particular copyright holder is reinstated (a)
+provisionally, unless and until the copyright holder explicitly and
+finally terminates your license, and (b) permanently, if the copyright
+holder fails to notify you of the violation by some reasonable means
+prior to 60 days after the cessation.
+
+ Moreover, your license from a particular copyright holder is
+reinstated permanently if the copyright holder notifies you of the
+violation by some reasonable means, this is the first time you have
+received notice of violation of this License (for any work) from that
+copyright holder, and you cure the violation prior to 30 days after
+your receipt of the notice.
+
+ Termination of your rights under this section does not terminate the
+licenses of parties who have received copies or rights from you under
+this License. If your rights have been terminated and not permanently
+reinstated, you do not qualify to receive new licenses for the same
+material under section 10.
+
+ 9. Acceptance Not Required for Having Copies.
+
+ You are not required to accept this License in order to receive or
+run a copy of the Program. Ancillary propagation of a covered work
+occurring solely as a consequence of using peer-to-peer transmission
+to receive a copy likewise does not require acceptance. However,
+nothing other than this License grants you permission to propagate or
+modify any covered work. These actions infringe copyright if you do
+not accept this License. Therefore, by modifying or propagating a
+covered work, you indicate your acceptance of this License to do so.
+
+ 10. Automatic Licensing of Downstream Recipients.
+
+ Each time you convey a covered work, the recipient automatically
+receives a license from the original licensors, to run, modify and
+propagate that work, subject to this License. You are not responsible
+for enforcing compliance by third parties with this License.
+
+ An "entity transaction" is a transaction transferring control of an
+organization, or substantially all assets of one, or subdividing an
+organization, or merging organizations. If propagation of a covered
+work results from an entity transaction, each party to that
+transaction who receives a copy of the work also receives whatever
+licenses to the work the party's predecessor in interest had or could
+give under the previous paragraph, plus a right to possession of the
+Corresponding Source of the work from the predecessor in interest, if
+the predecessor has it or can get it with reasonable efforts.
+
+ You may not impose any further restrictions on the exercise of the
+rights granted or affirmed under this License. For example, you may
+not impose a license fee, royalty, or other charge for exercise of
+rights granted under this License, and you may not initiate litigation
+(including a cross-claim or counterclaim in a lawsuit) alleging that
+any patent claim is infringed by making, using, selling, offering for
+sale, or importing the Program or any portion of it.
+
+ 11. Patents.
+
+ A "contributor" is a copyright holder who authorizes use under this
+License of the Program or a work on which the Program is based. The
+work thus licensed is called the contributor's "contributor version".
+
+ A contributor's "essential patent claims" are all patent claims
+owned or controlled by the contributor, whether already acquired or
+hereafter acquired, that would be infringed by some manner, permitted
+by this License, of making, using, or selling its contributor version,
+but do not include claims that would be infringed only as a
+consequence of further modification of the contributor version. For
+purposes of this definition, "control" includes the right to grant
+patent sublicenses in a manner consistent with the requirements of
+this License.
+
+ Each contributor grants you a non-exclusive, worldwide, royalty-free
+patent license under the contributor's essential patent claims, to
+make, use, sell, offer for sale, import and otherwise run, modify and
+propagate the contents of its contributor version.
+
+ In the following three paragraphs, a "patent license" is any express
+agreement or commitment, however denominated, not to enforce a patent
+(such as an express permission to practice a patent or covenant not to
+sue for patent infringement). To "grant" such a patent license to a
+party means to make such an agreement or commitment not to enforce a
+patent against the party.
+
+ If you convey a covered work, knowingly relying on a patent license,
+and the Corresponding Source of the work is not available for anyone
+to copy, free of charge and under the terms of this License, through a
+publicly available network server or other readily accessible means,
+then you must either (1) cause the Corresponding Source to be so
+available, or (2) arrange to deprive yourself of the benefit of the
+patent license for this particular work, or (3) arrange, in a manner
+consistent with the requirements of this License, to extend the patent
+license to downstream recipients. "Knowingly relying" means you have
+actual knowledge that, but for the patent license, your conveying the
+covered work in a country, or your recipient's use of the covered work
+in a country, would infringe one or more identifiable patents in that
+country that you have reason to believe are valid.
+
+ If, pursuant to or in connection with a single transaction or
+arrangement, you convey, or propagate by procuring conveyance of, a
+covered work, and grant a patent license to some of the parties
+receiving the covered work authorizing them to use, propagate, modify
+or convey a specific copy of the covered work, then the patent license
+you grant is automatically extended to all recipients of the covered
+work and works based on it.
+
+ A patent license is "discriminatory" if it does not include within
+the scope of its coverage, prohibits the exercise of, or is
+conditioned on the non-exercise of one or more of the rights that are
+specifically granted under this License. You may not convey a covered
+work if you are a party to an arrangement with a third party that is
+in the business of distributing software, under which you make payment
+to the third party based on the extent of your activity of conveying
+the work, and under which the third party grants, to any of the
+parties who would receive the covered work from you, a discriminatory
+patent license (a) in connection with copies of the covered work
+conveyed by you (or copies made from those copies), or (b) primarily
+for and in connection with specific products or compilations that
+contain the covered work, unless you entered into that arrangement,
+or that patent license was granted, prior to 28 March 2007.
+
+ Nothing in this License shall be construed as excluding or limiting
+any implied license or other defenses to infringement that may
+otherwise be available to you under applicable patent law.
+
+ 12. No Surrender of Others' Freedom.
+
+ If conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot convey a
+covered work so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you may
+not convey it at all. For example, if you agree to terms that obligate you
+to collect a royalty for further conveying from those to whom you convey
+the Program, the only way you could satisfy both those terms and this
+License would be to refrain entirely from conveying the Program.
+
+ 13. Use with the GNU Affero General Public License.
+
+ Notwithstanding any other provision of this License, you have
+permission to link or combine any covered work with a work licensed
+under version 3 of the GNU Affero General Public License into a single
+combined work, and to convey the resulting work. The terms of this
+License will continue to apply to the part which is the covered work,
+but the special requirements of the GNU Affero General Public License,
+section 13, concerning interaction through a network will apply to the
+combination as such.
+
+ 14. Revised Versions of this License.
+
+ The Free Software Foundation may publish revised and/or new versions of
+the GNU General Public License from time to time. Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+ Each version is given a distinguishing version number. If the
+Program specifies that a certain numbered version of the GNU General
+Public License "or any later version" applies to it, you have the
+option of following the terms and conditions either of that numbered
+version or of any later version published by the Free Software
+Foundation. If the Program does not specify a version number of the
+GNU General Public License, you may choose any version ever published
+by the Free Software Foundation.
+
+ If the Program specifies that a proxy can decide which future
+versions of the GNU General Public License can be used, that proxy's
+public statement of acceptance of a version permanently authorizes you
+to choose that version for the Program.
+
+ Later license versions may give you additional or different
+permissions. However, no additional obligations are imposed on any
+author or copyright holder as a result of your choosing to follow a
+later version.
+
+ 15. Disclaimer of Warranty.
+
+ THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
+APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
+HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
+OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
+THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
+IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
+ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+ 16. Limitation of Liability.
+
+ IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
+THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
+GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
+USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
+DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
+PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
+EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGES.
+
+ 17. Interpretation of Sections 15 and 16.
+
+ If the disclaimer of warranty and limitation of liability provided
+above cannot be given local legal effect according to their terms,
+reviewing courts shall apply local law that most closely approximates
+an absolute waiver of all civil liability in connection with the
+Program, unless a warranty or assumption of liability accompanies a
+copy of the Program in return for a fee.
+
+ END OF TERMS AND CONDITIONS
diff --git a/src/ifcdiff/COPYING.LESSER b/src/ifcdiff/COPYING.LESSER
new file mode 100644
index 0000000000..0a041280bd
--- /dev/null
+++ b/src/ifcdiff/COPYING.LESSER
@@ -0,0 +1,165 @@
+ GNU LESSER GENERAL PUBLIC LICENSE
+ Version 3, 29 June 2007
+
+ Copyright (C) 2007 Free Software Foundation, Inc.
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+
+ This version of the GNU Lesser General Public License incorporates
+the terms and conditions of version 3 of the GNU General Public
+License, supplemented by the additional permissions listed below.
+
+ 0. Additional Definitions.
+
+ As used herein, "this License" refers to version 3 of the GNU Lesser
+General Public License, and the "GNU GPL" refers to version 3 of the GNU
+General Public License.
+
+ "The Library" refers to a covered work governed by this License,
+other than an Application or a Combined Work as defined below.
+
+ An "Application" is any work that makes use of an interface provided
+by the Library, but which is not otherwise based on the Library.
+Defining a subclass of a class defined by the Library is deemed a mode
+of using an interface provided by the Library.
+
+ A "Combined Work" is a work produced by combining or linking an
+Application with the Library. The particular version of the Library
+with which the Combined Work was made is also called the "Linked
+Version".
+
+ The "Minimal Corresponding Source" for a Combined Work means the
+Corresponding Source for the Combined Work, excluding any source code
+for portions of the Combined Work that, considered in isolation, are
+based on the Application, and not on the Linked Version.
+
+ The "Corresponding Application Code" for a Combined Work means the
+object code and/or source code for the Application, including any data
+and utility programs needed for reproducing the Combined Work from the
+Application, but excluding the System Libraries of the Combined Work.
+
+ 1. Exception to Section 3 of the GNU GPL.
+
+ You may convey a covered work under sections 3 and 4 of this License
+without being bound by section 3 of the GNU GPL.
+
+ 2. Conveying Modified Versions.
+
+ If you modify a copy of the Library, and, in your modifications, a
+facility refers to a function or data to be supplied by an Application
+that uses the facility (other than as an argument passed when the
+facility is invoked), then you may convey a copy of the modified
+version:
+
+ a) under this License, provided that you make a good faith effort to
+ ensure that, in the event an Application does not supply the
+ function or data, the facility still operates, and performs
+ whatever part of its purpose remains meaningful, or
+
+ b) under the GNU GPL, with none of the additional permissions of
+ this License applicable to that copy.
+
+ 3. Object Code Incorporating Material from Library Header Files.
+
+ The object code form of an Application may incorporate material from
+a header file that is part of the Library. You may convey such object
+code under terms of your choice, provided that, if the incorporated
+material is not limited to numerical parameters, data structure
+layouts and accessors, or small macros, inline functions and templates
+(ten or fewer lines in length), you do both of the following:
+
+ a) Give prominent notice with each copy of the object code that the
+ Library is used in it and that the Library and its use are
+ covered by this License.
+
+ b) Accompany the object code with a copy of the GNU GPL and this license
+ document.
+
+ 4. Combined Works.
+
+ You may convey a Combined Work under terms of your choice that,
+taken together, effectively do not restrict modification of the
+portions of the Library contained in the Combined Work and reverse
+engineering for debugging such modifications, if you also do each of
+the following:
+
+ a) Give prominent notice with each copy of the Combined Work that
+ the Library is used in it and that the Library and its use are
+ covered by this License.
+
+ b) Accompany the Combined Work with a copy of the GNU GPL and this license
+ document.
+
+ c) For a Combined Work that displays copyright notices during
+ execution, include the copyright notice for the Library among
+ these notices, as well as a reference directing the user to the
+ copies of the GNU GPL and this license document.
+
+ d) Do one of the following:
+
+ 0) Convey the Minimal Corresponding Source under the terms of this
+ License, and the Corresponding Application Code in a form
+ suitable for, and under terms that permit, the user to
+ recombine or relink the Application with a modified version of
+ the Linked Version to produce a modified Combined Work, in the
+ manner specified by section 6 of the GNU GPL for conveying
+ Corresponding Source.
+
+ 1) Use a suitable shared library mechanism for linking with the
+ Library. A suitable mechanism is one that (a) uses at run time
+ a copy of the Library already present on the user's computer
+ system, and (b) will operate properly with a modified version
+ of the Library that is interface-compatible with the Linked
+ Version.
+
+ e) Provide Installation Information, but only if you would otherwise
+ be required to provide such information under section 6 of the
+ GNU GPL, and only to the extent that such information is
+ necessary to install and execute a modified version of the
+ Combined Work produced by recombining or relinking the
+ Application with a modified version of the Linked Version. (If
+ you use option 4d0, the Installation Information must accompany
+ the Minimal Corresponding Source and Corresponding Application
+ Code. If you use option 4d1, you must provide the Installation
+ Information in the manner specified by section 6 of the GNU GPL
+ for conveying Corresponding Source.)
+
+ 5. Combined Libraries.
+
+ You may place library facilities that are a work based on the
+Library side by side in a single library together with other library
+facilities that are not Applications and are not covered by this
+License, and convey such a combined library under terms of your
+choice, if you do both of the following:
+
+ a) Accompany the combined library with a copy of the same work based
+ on the Library, uncombined with any other library facilities,
+ conveyed under the terms of this License.
+
+ b) Give prominent notice with the combined library that part of it
+ is a work based on the Library, and explaining where to find the
+ accompanying uncombined form of the same work.
+
+ 6. Revised Versions of the GNU Lesser General Public License.
+
+ The Free Software Foundation may publish revised and/or new versions
+of the GNU Lesser General Public License from time to time. Such new
+versions will be similar in spirit to the present version, but may
+differ in detail to address new problems or concerns.
+
+ Each version is given a distinguishing version number. If the
+Library as you received it specifies that a certain numbered version
+of the GNU Lesser General Public License "or any later version"
+applies to it, you have the option of following the terms and
+conditions either of that published version or of any later version
+published by the Free Software Foundation. If the Library as you
+received it does not specify a version number of the GNU Lesser
+General Public License, you may choose any version of the GNU Lesser
+General Public License ever published by the Free Software Foundation.
+
+ If the Library as you received it specifies that a proxy can decide
+whether future versions of the GNU Lesser General Public License shall
+apply, that proxy's public statement of acceptance of any version is
+permanent authorization for you to choose that version for the
+Library.
diff --git a/src/ifcdiff/ifcdiff.py b/src/ifcdiff/ifcdiff.py
index d6af516af2..294b32d179 100755
--- a/src/ifcdiff/ifcdiff.py
+++ b/src/ifcdiff/ifcdiff.py
@@ -1,4 +1,23 @@
#!/usr/bin/env python3
+
+# IfcDiff - Compare IFCs
+# Copyright (C) 2020, 2021 Dion Moult
+#
+# This file is part of IfcDiff.
+#
+# IfcDiff is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# IfcDiff is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public License
+# along with IfcDiff. If not, see .
+
# This can be packaged with `pyinstaller --onefile --clean --icon=icon.ico ifcdiff.py`
import ifcopenshell
diff --git a/src/ifcfm/COPYING b/src/ifcfm/COPYING
new file mode 100644
index 0000000000..810fce6e9b
--- /dev/null
+++ b/src/ifcfm/COPYING
@@ -0,0 +1,621 @@
+ GNU GENERAL PUBLIC LICENSE
+ Version 3, 29 June 2007
+
+ Copyright (C) 2007 Free Software Foundation, Inc.
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+ Preamble
+
+ The GNU General Public License is a free, copyleft license for
+software and other kinds of works.
+
+ The licenses for most software and other practical works are designed
+to take away your freedom to share and change the works. By contrast,
+the GNU General Public License is intended to guarantee your freedom to
+share and change all versions of a program--to make sure it remains free
+software for all its users. We, the Free Software Foundation, use the
+GNU General Public License for most of our software; it applies also to
+any other work released this way by its authors. You can apply it to
+your programs, too.
+
+ When we speak of free software, we are referring to freedom, not
+price. Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+them if you wish), that you receive source code or can get it if you
+want it, that you can change the software or use pieces of it in new
+free programs, and that you know you can do these things.
+
+ To protect your rights, we need to prevent others from denying you
+these rights or asking you to surrender the rights. Therefore, you have
+certain responsibilities if you distribute copies of the software, or if
+you modify it: responsibilities to respect the freedom of others.
+
+ For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must pass on to the recipients the same
+freedoms that you received. You must make sure that they, too, receive
+or can get the source code. And you must show them these terms so they
+know their rights.
+
+ Developers that use the GNU GPL protect your rights with two steps:
+(1) assert copyright on the software, and (2) offer you this License
+giving you legal permission to copy, distribute and/or modify it.
+
+ For the developers' and authors' protection, the GPL clearly explains
+that there is no warranty for this free software. For both users' and
+authors' sake, the GPL requires that modified versions be marked as
+changed, so that their problems will not be attributed erroneously to
+authors of previous versions.
+
+ Some devices are designed to deny users access to install or run
+modified versions of the software inside them, although the manufacturer
+can do so. This is fundamentally incompatible with the aim of
+protecting users' freedom to change the software. The systematic
+pattern of such abuse occurs in the area of products for individuals to
+use, which is precisely where it is most unacceptable. Therefore, we
+have designed this version of the GPL to prohibit the practice for those
+products. If such problems arise substantially in other domains, we
+stand ready to extend this provision to those domains in future versions
+of the GPL, as needed to protect the freedom of users.
+
+ Finally, every program is threatened constantly by software patents.
+States should not allow patents to restrict development and use of
+software on general-purpose computers, but in those that do, we wish to
+avoid the special danger that patents applied to a free program could
+make it effectively proprietary. To prevent this, the GPL assures that
+patents cannot be used to render the program non-free.
+
+ The precise terms and conditions for copying, distribution and
+modification follow.
+
+ TERMS AND CONDITIONS
+
+ 0. Definitions.
+
+ "This License" refers to version 3 of the GNU General Public License.
+
+ "Copyright" also means copyright-like laws that apply to other kinds of
+works, such as semiconductor masks.
+
+ "The Program" refers to any copyrightable work licensed under this
+License. Each licensee is addressed as "you". "Licensees" and
+"recipients" may be individuals or organizations.
+
+ To "modify" a work means to copy from or adapt all or part of the work
+in a fashion requiring copyright permission, other than the making of an
+exact copy. The resulting work is called a "modified version" of the
+earlier work or a work "based on" the earlier work.
+
+ A "covered work" means either the unmodified Program or a work based
+on the Program.
+
+ To "propagate" a work means to do anything with it that, without
+permission, would make you directly or secondarily liable for
+infringement under applicable copyright law, except executing it on a
+computer or modifying a private copy. Propagation includes copying,
+distribution (with or without modification), making available to the
+public, and in some countries other activities as well.
+
+ To "convey" a work means any kind of propagation that enables other
+parties to make or receive copies. Mere interaction with a user through
+a computer network, with no transfer of a copy, is not conveying.
+
+ An interactive user interface displays "Appropriate Legal Notices"
+to the extent that it includes a convenient and prominently visible
+feature that (1) displays an appropriate copyright notice, and (2)
+tells the user that there is no warranty for the work (except to the
+extent that warranties are provided), that licensees may convey the
+work under this License, and how to view a copy of this License. If
+the interface presents a list of user commands or options, such as a
+menu, a prominent item in the list meets this criterion.
+
+ 1. Source Code.
+
+ The "source code" for a work means the preferred form of the work
+for making modifications to it. "Object code" means any non-source
+form of a work.
+
+ A "Standard Interface" means an interface that either is an official
+standard defined by a recognized standards body, or, in the case of
+interfaces specified for a particular programming language, one that
+is widely used among developers working in that language.
+
+ The "System Libraries" of an executable work include anything, other
+than the work as a whole, that (a) is included in the normal form of
+packaging a Major Component, but which is not part of that Major
+Component, and (b) serves only to enable use of the work with that
+Major Component, or to implement a Standard Interface for which an
+implementation is available to the public in source code form. A
+"Major Component", in this context, means a major essential component
+(kernel, window system, and so on) of the specific operating system
+(if any) on which the executable work runs, or a compiler used to
+produce the work, or an object code interpreter used to run it.
+
+ The "Corresponding Source" for a work in object code form means all
+the source code needed to generate, install, and (for an executable
+work) run the object code and to modify the work, including scripts to
+control those activities. However, it does not include the work's
+System Libraries, or general-purpose tools or generally available free
+programs which are used unmodified in performing those activities but
+which are not part of the work. For example, Corresponding Source
+includes interface definition files associated with source files for
+the work, and the source code for shared libraries and dynamically
+linked subprograms that the work is specifically designed to require,
+such as by intimate data communication or control flow between those
+subprograms and other parts of the work.
+
+ The Corresponding Source need not include anything that users
+can regenerate automatically from other parts of the Corresponding
+Source.
+
+ The Corresponding Source for a work in source code form is that
+same work.
+
+ 2. Basic Permissions.
+
+ All rights granted under this License are granted for the term of
+copyright on the Program, and are irrevocable provided the stated
+conditions are met. This License explicitly affirms your unlimited
+permission to run the unmodified Program. The output from running a
+covered work is covered by this License only if the output, given its
+content, constitutes a covered work. This License acknowledges your
+rights of fair use or other equivalent, as provided by copyright law.
+
+ You may make, run and propagate covered works that you do not
+convey, without conditions so long as your license otherwise remains
+in force. You may convey covered works to others for the sole purpose
+of having them make modifications exclusively for you, or provide you
+with facilities for running those works, provided that you comply with
+the terms of this License in conveying all material for which you do
+not control copyright. Those thus making or running the covered works
+for you must do so exclusively on your behalf, under your direction
+and control, on terms that prohibit them from making any copies of
+your copyrighted material outside their relationship with you.
+
+ Conveying under any other circumstances is permitted solely under
+the conditions stated below. Sublicensing is not allowed; section 10
+makes it unnecessary.
+
+ 3. Protecting Users' Legal Rights From Anti-Circumvention Law.
+
+ No covered work shall be deemed part of an effective technological
+measure under any applicable law fulfilling obligations under article
+11 of the WIPO copyright treaty adopted on 20 December 1996, or
+similar laws prohibiting or restricting circumvention of such
+measures.
+
+ When you convey a covered work, you waive any legal power to forbid
+circumvention of technological measures to the extent such circumvention
+is effected by exercising rights under this License with respect to
+the covered work, and you disclaim any intention to limit operation or
+modification of the work as a means of enforcing, against the work's
+users, your or third parties' legal rights to forbid circumvention of
+technological measures.
+
+ 4. Conveying Verbatim Copies.
+
+ You may convey verbatim copies of the Program's source code as you
+receive it, in any medium, provided that you conspicuously and
+appropriately publish on each copy an appropriate copyright notice;
+keep intact all notices stating that this License and any
+non-permissive terms added in accord with section 7 apply to the code;
+keep intact all notices of the absence of any warranty; and give all
+recipients a copy of this License along with the Program.
+
+ You may charge any price or no price for each copy that you convey,
+and you may offer support or warranty protection for a fee.
+
+ 5. Conveying Modified Source Versions.
+
+ You may convey a work based on the Program, or the modifications to
+produce it from the Program, in the form of source code under the
+terms of section 4, provided that you also meet all of these conditions:
+
+ a) The work must carry prominent notices stating that you modified
+ it, and giving a relevant date.
+
+ b) The work must carry prominent notices stating that it is
+ released under this License and any conditions added under section
+ 7. This requirement modifies the requirement in section 4 to
+ "keep intact all notices".
+
+ c) You must license the entire work, as a whole, under this
+ License to anyone who comes into possession of a copy. This
+ License will therefore apply, along with any applicable section 7
+ additional terms, to the whole of the work, and all its parts,
+ regardless of how they are packaged. This License gives no
+ permission to license the work in any other way, but it does not
+ invalidate such permission if you have separately received it.
+
+ d) If the work has interactive user interfaces, each must display
+ Appropriate Legal Notices; however, if the Program has interactive
+ interfaces that do not display Appropriate Legal Notices, your
+ work need not make them do so.
+
+ A compilation of a covered work with other separate and independent
+works, which are not by their nature extensions of the covered work,
+and which are not combined with it such as to form a larger program,
+in or on a volume of a storage or distribution medium, is called an
+"aggregate" if the compilation and its resulting copyright are not
+used to limit the access or legal rights of the compilation's users
+beyond what the individual works permit. Inclusion of a covered work
+in an aggregate does not cause this License to apply to the other
+parts of the aggregate.
+
+ 6. Conveying Non-Source Forms.
+
+ You may convey a covered work in object code form under the terms
+of sections 4 and 5, provided that you also convey the
+machine-readable Corresponding Source under the terms of this License,
+in one of these ways:
+
+ a) Convey the object code in, or embodied in, a physical product
+ (including a physical distribution medium), accompanied by the
+ Corresponding Source fixed on a durable physical medium
+ customarily used for software interchange.
+
+ b) Convey the object code in, or embodied in, a physical product
+ (including a physical distribution medium), accompanied by a
+ written offer, valid for at least three years and valid for as
+ long as you offer spare parts or customer support for that product
+ model, to give anyone who possesses the object code either (1) a
+ copy of the Corresponding Source for all the software in the
+ product that is covered by this License, on a durable physical
+ medium customarily used for software interchange, for a price no
+ more than your reasonable cost of physically performing this
+ conveying of source, or (2) access to copy the
+ Corresponding Source from a network server at no charge.
+
+ c) Convey individual copies of the object code with a copy of the
+ written offer to provide the Corresponding Source. This
+ alternative is allowed only occasionally and noncommercially, and
+ only if you received the object code with such an offer, in accord
+ with subsection 6b.
+
+ d) Convey the object code by offering access from a designated
+ place (gratis or for a charge), and offer equivalent access to the
+ Corresponding Source in the same way through the same place at no
+ further charge. You need not require recipients to copy the
+ Corresponding Source along with the object code. If the place to
+ copy the object code is a network server, the Corresponding Source
+ may be on a different server (operated by you or a third party)
+ that supports equivalent copying facilities, provided you maintain
+ clear directions next to the object code saying where to find the
+ Corresponding Source. Regardless of what server hosts the
+ Corresponding Source, you remain obligated to ensure that it is
+ available for as long as needed to satisfy these requirements.
+
+ e) Convey the object code using peer-to-peer transmission, provided
+ you inform other peers where the object code and Corresponding
+ Source of the work are being offered to the general public at no
+ charge under subsection 6d.
+
+ A separable portion of the object code, whose source code is excluded
+from the Corresponding Source as a System Library, need not be
+included in conveying the object code work.
+
+ A "User Product" is either (1) a "consumer product", which means any
+tangible personal property which is normally used for personal, family,
+or household purposes, or (2) anything designed or sold for incorporation
+into a dwelling. In determining whether a product is a consumer product,
+doubtful cases shall be resolved in favor of coverage. For a particular
+product received by a particular user, "normally used" refers to a
+typical or common use of that class of product, regardless of the status
+of the particular user or of the way in which the particular user
+actually uses, or expects or is expected to use, the product. A product
+is a consumer product regardless of whether the product has substantial
+commercial, industrial or non-consumer uses, unless such uses represent
+the only significant mode of use of the product.
+
+ "Installation Information" for a User Product means any methods,
+procedures, authorization keys, or other information required to install
+and execute modified versions of a covered work in that User Product from
+a modified version of its Corresponding Source. The information must
+suffice to ensure that the continued functioning of the modified object
+code is in no case prevented or interfered with solely because
+modification has been made.
+
+ If you convey an object code work under this section in, or with, or
+specifically for use in, a User Product, and the conveying occurs as
+part of a transaction in which the right of possession and use of the
+User Product is transferred to the recipient in perpetuity or for a
+fixed term (regardless of how the transaction is characterized), the
+Corresponding Source conveyed under this section must be accompanied
+by the Installation Information. But this requirement does not apply
+if neither you nor any third party retains the ability to install
+modified object code on the User Product (for example, the work has
+been installed in ROM).
+
+ The requirement to provide Installation Information does not include a
+requirement to continue to provide support service, warranty, or updates
+for a work that has been modified or installed by the recipient, or for
+the User Product in which it has been modified or installed. Access to a
+network may be denied when the modification itself materially and
+adversely affects the operation of the network or violates the rules and
+protocols for communication across the network.
+
+ Corresponding Source conveyed, and Installation Information provided,
+in accord with this section must be in a format that is publicly
+documented (and with an implementation available to the public in
+source code form), and must require no special password or key for
+unpacking, reading or copying.
+
+ 7. Additional Terms.
+
+ "Additional permissions" are terms that supplement the terms of this
+License by making exceptions from one or more of its conditions.
+Additional permissions that are applicable to the entire Program shall
+be treated as though they were included in this License, to the extent
+that they are valid under applicable law. If additional permissions
+apply only to part of the Program, that part may be used separately
+under those permissions, but the entire Program remains governed by
+this License without regard to the additional permissions.
+
+ When you convey a copy of a covered work, you may at your option
+remove any additional permissions from that copy, or from any part of
+it. (Additional permissions may be written to require their own
+removal in certain cases when you modify the work.) You may place
+additional permissions on material, added by you to a covered work,
+for which you have or can give appropriate copyright permission.
+
+ Notwithstanding any other provision of this License, for material you
+add to a covered work, you may (if authorized by the copyright holders of
+that material) supplement the terms of this License with terms:
+
+ a) Disclaiming warranty or limiting liability differently from the
+ terms of sections 15 and 16 of this License; or
+
+ b) Requiring preservation of specified reasonable legal notices or
+ author attributions in that material or in the Appropriate Legal
+ Notices displayed by works containing it; or
+
+ c) Prohibiting misrepresentation of the origin of that material, or
+ requiring that modified versions of such material be marked in
+ reasonable ways as different from the original version; or
+
+ d) Limiting the use for publicity purposes of names of licensors or
+ authors of the material; or
+
+ e) Declining to grant rights under trademark law for use of some
+ trade names, trademarks, or service marks; or
+
+ f) Requiring indemnification of licensors and authors of that
+ material by anyone who conveys the material (or modified versions of
+ it) with contractual assumptions of liability to the recipient, for
+ any liability that these contractual assumptions directly impose on
+ those licensors and authors.
+
+ All other non-permissive additional terms are considered "further
+restrictions" within the meaning of section 10. If the Program as you
+received it, or any part of it, contains a notice stating that it is
+governed by this License along with a term that is a further
+restriction, you may remove that term. If a license document contains
+a further restriction but permits relicensing or conveying under this
+License, you may add to a covered work material governed by the terms
+of that license document, provided that the further restriction does
+not survive such relicensing or conveying.
+
+ If you add terms to a covered work in accord with this section, you
+must place, in the relevant source files, a statement of the
+additional terms that apply to those files, or a notice indicating
+where to find the applicable terms.
+
+ Additional terms, permissive or non-permissive, may be stated in the
+form of a separately written license, or stated as exceptions;
+the above requirements apply either way.
+
+ 8. Termination.
+
+ You may not propagate or modify a covered work except as expressly
+provided under this License. Any attempt otherwise to propagate or
+modify it is void, and will automatically terminate your rights under
+this License (including any patent licenses granted under the third
+paragraph of section 11).
+
+ However, if you cease all violation of this License, then your
+license from a particular copyright holder is reinstated (a)
+provisionally, unless and until the copyright holder explicitly and
+finally terminates your license, and (b) permanently, if the copyright
+holder fails to notify you of the violation by some reasonable means
+prior to 60 days after the cessation.
+
+ Moreover, your license from a particular copyright holder is
+reinstated permanently if the copyright holder notifies you of the
+violation by some reasonable means, this is the first time you have
+received notice of violation of this License (for any work) from that
+copyright holder, and you cure the violation prior to 30 days after
+your receipt of the notice.
+
+ Termination of your rights under this section does not terminate the
+licenses of parties who have received copies or rights from you under
+this License. If your rights have been terminated and not permanently
+reinstated, you do not qualify to receive new licenses for the same
+material under section 10.
+
+ 9. Acceptance Not Required for Having Copies.
+
+ You are not required to accept this License in order to receive or
+run a copy of the Program. Ancillary propagation of a covered work
+occurring solely as a consequence of using peer-to-peer transmission
+to receive a copy likewise does not require acceptance. However,
+nothing other than this License grants you permission to propagate or
+modify any covered work. These actions infringe copyright if you do
+not accept this License. Therefore, by modifying or propagating a
+covered work, you indicate your acceptance of this License to do so.
+
+ 10. Automatic Licensing of Downstream Recipients.
+
+ Each time you convey a covered work, the recipient automatically
+receives a license from the original licensors, to run, modify and
+propagate that work, subject to this License. You are not responsible
+for enforcing compliance by third parties with this License.
+
+ An "entity transaction" is a transaction transferring control of an
+organization, or substantially all assets of one, or subdividing an
+organization, or merging organizations. If propagation of a covered
+work results from an entity transaction, each party to that
+transaction who receives a copy of the work also receives whatever
+licenses to the work the party's predecessor in interest had or could
+give under the previous paragraph, plus a right to possession of the
+Corresponding Source of the work from the predecessor in interest, if
+the predecessor has it or can get it with reasonable efforts.
+
+ You may not impose any further restrictions on the exercise of the
+rights granted or affirmed under this License. For example, you may
+not impose a license fee, royalty, or other charge for exercise of
+rights granted under this License, and you may not initiate litigation
+(including a cross-claim or counterclaim in a lawsuit) alleging that
+any patent claim is infringed by making, using, selling, offering for
+sale, or importing the Program or any portion of it.
+
+ 11. Patents.
+
+ A "contributor" is a copyright holder who authorizes use under this
+License of the Program or a work on which the Program is based. The
+work thus licensed is called the contributor's "contributor version".
+
+ A contributor's "essential patent claims" are all patent claims
+owned or controlled by the contributor, whether already acquired or
+hereafter acquired, that would be infringed by some manner, permitted
+by this License, of making, using, or selling its contributor version,
+but do not include claims that would be infringed only as a
+consequence of further modification of the contributor version. For
+purposes of this definition, "control" includes the right to grant
+patent sublicenses in a manner consistent with the requirements of
+this License.
+
+ Each contributor grants you a non-exclusive, worldwide, royalty-free
+patent license under the contributor's essential patent claims, to
+make, use, sell, offer for sale, import and otherwise run, modify and
+propagate the contents of its contributor version.
+
+ In the following three paragraphs, a "patent license" is any express
+agreement or commitment, however denominated, not to enforce a patent
+(such as an express permission to practice a patent or covenant not to
+sue for patent infringement). To "grant" such a patent license to a
+party means to make such an agreement or commitment not to enforce a
+patent against the party.
+
+ If you convey a covered work, knowingly relying on a patent license,
+and the Corresponding Source of the work is not available for anyone
+to copy, free of charge and under the terms of this License, through a
+publicly available network server or other readily accessible means,
+then you must either (1) cause the Corresponding Source to be so
+available, or (2) arrange to deprive yourself of the benefit of the
+patent license for this particular work, or (3) arrange, in a manner
+consistent with the requirements of this License, to extend the patent
+license to downstream recipients. "Knowingly relying" means you have
+actual knowledge that, but for the patent license, your conveying the
+covered work in a country, or your recipient's use of the covered work
+in a country, would infringe one or more identifiable patents in that
+country that you have reason to believe are valid.
+
+ If, pursuant to or in connection with a single transaction or
+arrangement, you convey, or propagate by procuring conveyance of, a
+covered work, and grant a patent license to some of the parties
+receiving the covered work authorizing them to use, propagate, modify
+or convey a specific copy of the covered work, then the patent license
+you grant is automatically extended to all recipients of the covered
+work and works based on it.
+
+ A patent license is "discriminatory" if it does not include within
+the scope of its coverage, prohibits the exercise of, or is
+conditioned on the non-exercise of one or more of the rights that are
+specifically granted under this License. You may not convey a covered
+work if you are a party to an arrangement with a third party that is
+in the business of distributing software, under which you make payment
+to the third party based on the extent of your activity of conveying
+the work, and under which the third party grants, to any of the
+parties who would receive the covered work from you, a discriminatory
+patent license (a) in connection with copies of the covered work
+conveyed by you (or copies made from those copies), or (b) primarily
+for and in connection with specific products or compilations that
+contain the covered work, unless you entered into that arrangement,
+or that patent license was granted, prior to 28 March 2007.
+
+ Nothing in this License shall be construed as excluding or limiting
+any implied license or other defenses to infringement that may
+otherwise be available to you under applicable patent law.
+
+ 12. No Surrender of Others' Freedom.
+
+ If conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot convey a
+covered work so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you may
+not convey it at all. For example, if you agree to terms that obligate you
+to collect a royalty for further conveying from those to whom you convey
+the Program, the only way you could satisfy both those terms and this
+License would be to refrain entirely from conveying the Program.
+
+ 13. Use with the GNU Affero General Public License.
+
+ Notwithstanding any other provision of this License, you have
+permission to link or combine any covered work with a work licensed
+under version 3 of the GNU Affero General Public License into a single
+combined work, and to convey the resulting work. The terms of this
+License will continue to apply to the part which is the covered work,
+but the special requirements of the GNU Affero General Public License,
+section 13, concerning interaction through a network will apply to the
+combination as such.
+
+ 14. Revised Versions of this License.
+
+ The Free Software Foundation may publish revised and/or new versions of
+the GNU General Public License from time to time. Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+ Each version is given a distinguishing version number. If the
+Program specifies that a certain numbered version of the GNU General
+Public License "or any later version" applies to it, you have the
+option of following the terms and conditions either of that numbered
+version or of any later version published by the Free Software
+Foundation. If the Program does not specify a version number of the
+GNU General Public License, you may choose any version ever published
+by the Free Software Foundation.
+
+ If the Program specifies that a proxy can decide which future
+versions of the GNU General Public License can be used, that proxy's
+public statement of acceptance of a version permanently authorizes you
+to choose that version for the Program.
+
+ Later license versions may give you additional or different
+permissions. However, no additional obligations are imposed on any
+author or copyright holder as a result of your choosing to follow a
+later version.
+
+ 15. Disclaimer of Warranty.
+
+ THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
+APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
+HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
+OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
+THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
+IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
+ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+ 16. Limitation of Liability.
+
+ IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
+THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
+GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
+USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
+DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
+PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
+EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGES.
+
+ 17. Interpretation of Sections 15 and 16.
+
+ If the disclaimer of warranty and limitation of liability provided
+above cannot be given local legal effect according to their terms,
+reviewing courts shall apply local law that most closely approximates
+an absolute waiver of all civil liability in connection with the
+Program, unless a warranty or assumption of liability accompanies a
+copy of the Program in return for a fee.
+
+ END OF TERMS AND CONDITIONS
diff --git a/src/ifcfm/COPYING.LESSER b/src/ifcfm/COPYING.LESSER
new file mode 100644
index 0000000000..0a041280bd
--- /dev/null
+++ b/src/ifcfm/COPYING.LESSER
@@ -0,0 +1,165 @@
+ GNU LESSER GENERAL PUBLIC LICENSE
+ Version 3, 29 June 2007
+
+ Copyright (C) 2007 Free Software Foundation, Inc.
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+
+ This version of the GNU Lesser General Public License incorporates
+the terms and conditions of version 3 of the GNU General Public
+License, supplemented by the additional permissions listed below.
+
+ 0. Additional Definitions.
+
+ As used herein, "this License" refers to version 3 of the GNU Lesser
+General Public License, and the "GNU GPL" refers to version 3 of the GNU
+General Public License.
+
+ "The Library" refers to a covered work governed by this License,
+other than an Application or a Combined Work as defined below.
+
+ An "Application" is any work that makes use of an interface provided
+by the Library, but which is not otherwise based on the Library.
+Defining a subclass of a class defined by the Library is deemed a mode
+of using an interface provided by the Library.
+
+ A "Combined Work" is a work produced by combining or linking an
+Application with the Library. The particular version of the Library
+with which the Combined Work was made is also called the "Linked
+Version".
+
+ The "Minimal Corresponding Source" for a Combined Work means the
+Corresponding Source for the Combined Work, excluding any source code
+for portions of the Combined Work that, considered in isolation, are
+based on the Application, and not on the Linked Version.
+
+ The "Corresponding Application Code" for a Combined Work means the
+object code and/or source code for the Application, including any data
+and utility programs needed for reproducing the Combined Work from the
+Application, but excluding the System Libraries of the Combined Work.
+
+ 1. Exception to Section 3 of the GNU GPL.
+
+ You may convey a covered work under sections 3 and 4 of this License
+without being bound by section 3 of the GNU GPL.
+
+ 2. Conveying Modified Versions.
+
+ If you modify a copy of the Library, and, in your modifications, a
+facility refers to a function or data to be supplied by an Application
+that uses the facility (other than as an argument passed when the
+facility is invoked), then you may convey a copy of the modified
+version:
+
+ a) under this License, provided that you make a good faith effort to
+ ensure that, in the event an Application does not supply the
+ function or data, the facility still operates, and performs
+ whatever part of its purpose remains meaningful, or
+
+ b) under the GNU GPL, with none of the additional permissions of
+ this License applicable to that copy.
+
+ 3. Object Code Incorporating Material from Library Header Files.
+
+ The object code form of an Application may incorporate material from
+a header file that is part of the Library. You may convey such object
+code under terms of your choice, provided that, if the incorporated
+material is not limited to numerical parameters, data structure
+layouts and accessors, or small macros, inline functions and templates
+(ten or fewer lines in length), you do both of the following:
+
+ a) Give prominent notice with each copy of the object code that the
+ Library is used in it and that the Library and its use are
+ covered by this License.
+
+ b) Accompany the object code with a copy of the GNU GPL and this license
+ document.
+
+ 4. Combined Works.
+
+ You may convey a Combined Work under terms of your choice that,
+taken together, effectively do not restrict modification of the
+portions of the Library contained in the Combined Work and reverse
+engineering for debugging such modifications, if you also do each of
+the following:
+
+ a) Give prominent notice with each copy of the Combined Work that
+ the Library is used in it and that the Library and its use are
+ covered by this License.
+
+ b) Accompany the Combined Work with a copy of the GNU GPL and this license
+ document.
+
+ c) For a Combined Work that displays copyright notices during
+ execution, include the copyright notice for the Library among
+ these notices, as well as a reference directing the user to the
+ copies of the GNU GPL and this license document.
+
+ d) Do one of the following:
+
+ 0) Convey the Minimal Corresponding Source under the terms of this
+ License, and the Corresponding Application Code in a form
+ suitable for, and under terms that permit, the user to
+ recombine or relink the Application with a modified version of
+ the Linked Version to produce a modified Combined Work, in the
+ manner specified by section 6 of the GNU GPL for conveying
+ Corresponding Source.
+
+ 1) Use a suitable shared library mechanism for linking with the
+ Library. A suitable mechanism is one that (a) uses at run time
+ a copy of the Library already present on the user's computer
+ system, and (b) will operate properly with a modified version
+ of the Library that is interface-compatible with the Linked
+ Version.
+
+ e) Provide Installation Information, but only if you would otherwise
+ be required to provide such information under section 6 of the
+ GNU GPL, and only to the extent that such information is
+ necessary to install and execute a modified version of the
+ Combined Work produced by recombining or relinking the
+ Application with a modified version of the Linked Version. (If
+ you use option 4d0, the Installation Information must accompany
+ the Minimal Corresponding Source and Corresponding Application
+ Code. If you use option 4d1, you must provide the Installation
+ Information in the manner specified by section 6 of the GNU GPL
+ for conveying Corresponding Source.)
+
+ 5. Combined Libraries.
+
+ You may place library facilities that are a work based on the
+Library side by side in a single library together with other library
+facilities that are not Applications and are not covered by this
+License, and convey such a combined library under terms of your
+choice, if you do both of the following:
+
+ a) Accompany the combined library with a copy of the same work based
+ on the Library, uncombined with any other library facilities,
+ conveyed under the terms of this License.
+
+ b) Give prominent notice with the combined library that part of it
+ is a work based on the Library, and explaining where to find the
+ accompanying uncombined form of the same work.
+
+ 6. Revised Versions of the GNU Lesser General Public License.
+
+ The Free Software Foundation may publish revised and/or new versions
+of the GNU Lesser General Public License from time to time. Such new
+versions will be similar in spirit to the present version, but may
+differ in detail to address new problems or concerns.
+
+ Each version is given a distinguishing version number. If the
+Library as you received it specifies that a certain numbered version
+of the GNU Lesser General Public License "or any later version"
+applies to it, you have the option of following the terms and
+conditions either of that published version or of any later version
+published by the Free Software Foundation. If the Library as you
+received it does not specify a version number of the GNU Lesser
+General Public License, you may choose any version of the GNU Lesser
+General Public License ever published by the Free Software Foundation.
+
+ If the Library as you received it specifies that a proxy can decide
+whether future versions of the GNU Lesser General Public License shall
+apply, that proxy's public statement of acceptance of any version is
+permanent authorization for you to choose that version for the
+Library.
diff --git a/src/ifcfm/README.md b/src/ifcfm/README.md
new file mode 100644
index 0000000000..a24ed0ce13
--- /dev/null
+++ b/src/ifcfm/README.md
@@ -0,0 +1,8 @@
+# IfcFM
+
+IfcFM is a library that handles the extraction and analysis of IFC data for the
+purposes of facility management.
+
+It is currently a prototype and will supersede the IfcCOBie library. It is
+planned to support workflows related to the old COBie standard, as well as
+upcoming IFC Facility Management related MVDs.
diff --git a/src/ifcfm/ifcfm/parser.py b/src/ifcfm/ifcfm/parser.py
new file mode 100644
index 0000000000..69a27815dc
--- /dev/null
+++ b/src/ifcfm/ifcfm/parser.py
@@ -0,0 +1,399 @@
+
+# IfcFM - IFC for facility management
+# Copyright (C) 2021 Dion Moult
+#
+# This file is part of IfcFM.
+#
+# IfcFM is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# IfcFM is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public License
+# along with IfcFM. If not, see .
+
+import datetime
+import ifcopenshell
+import ifcopenshell.util.fm
+import ifcopenshell.util.selector
+import ifcopenshell.util.date
+import ifcopenshell.util.schema
+
+
+class Parser:
+ def __init__(self, logger):
+ self.logger = logger
+ self.file = None
+ self.sheets = [
+ "contacts",
+ "facilities",
+ "floors",
+ "spaces",
+ "zones",
+ "types",
+ "components",
+ "systems",
+ "assemblies",
+ "connections",
+ "spares",
+ "resources",
+ "jobs",
+ "impacts",
+ "documents",
+ "attributes",
+ "coordinates",
+ "issues",
+ ]
+ for sheet in self.sheets:
+ setattr(self, sheet, {})
+ self.picklists = {
+ "Category-Role": [],
+ "Category-Facility": [],
+ "FloorType": [],
+ "Category-Space": [],
+ "ZoneType": [],
+ "Category-Product": [],
+ "AssetType": [],
+ "DurationUnit": ["day"], # See note about hardcoded day below
+ "Category-Element": [],
+ "SpareType": [],
+ "ApprovalBy": [],
+ "StageType": [],
+ "objType": [],
+ }
+ self.default_date = (datetime.datetime(1970, 1, 1) + datetime.timedelta(seconds=-2177452801)).isoformat()
+
+ def parse(self, files):
+ self.files = files
+ # self.file = ifcopenshell.open(file)
+ # self.type_assets = self.selector.parse(self.file, type_query)
+ # self.component_assets = self.selector.parse(self.file, component_query)
+
+ self.get_contacts()
+ self.get_facilities()
+ self.get_floors()
+ self.get_spaces()
+ self.get_zones()
+ self.get_types()
+ self.get_components()
+ self.get_systems()
+ # self.get_assemblies()
+ # self.get_connections()
+ # self.get_spares()
+ # self.get_resources()
+ # self.get_jobs()
+ # self.get_impacts()
+ self.get_documents()
+ # self.get_attributes()
+ # self.get_coordinates()
+ # self.get_issues()
+
+ def get_contacts(self):
+ for element in self.files["arch"].by_type("IfcOrganization"):
+ if "IfcApplication" in [e.is_a() for e in self.files["arch"].get_inverse(element)]:
+ continue
+ name = element.Name
+ self.contacts[name] = self.get_organisation(element)
+
+ def get_organisation(self, element):
+ return {
+ "Name": element.Name,
+ "Category": self.get_organisation_category(element),
+ "Email": self.get_organisation_address(element, "ElectronicMailAddresses"),
+ "Phone": self.get_organisation_address(element, "TelephoneNumbers"),
+ "Department": self.get_organisation_address(element, "InternalLocation"),
+ "Street": self.get_organisation_address(element, "AddressLines"),
+ "PostalBox": self.get_organisation_address(element, "PostalBox"),
+ "Town": self.get_organisation_address(element, "Town"),
+ "StateRegion": self.get_organisation_address(element, "Region"),
+ "PostalCode": self.get_organisation_address(element, "PostalCode"),
+ "Country": self.get_organisation_address(element, "Country"),
+ "CompanyURL": self.get_organisation_address(element, "WWWHomePageURL"),
+ }
+
+ def get_organisation_category(self, element):
+ for role in element.Roles or []:
+ if role.UserDefinedRole:
+ return role.UserDefinedRole
+
+ def get_organisation_address(self, element, name):
+ for address in element.Addresses or []:
+ if hasattr(address, name) and getattr(address, name, None):
+ result = getattr(address, name)
+ if isinstance(result, tuple):
+ return result[0]
+ return result
+
+ def get_facilities(self):
+ element = self.files["arch"].by_type("IfcBuilding")[0]
+ self.facilities[element.Name] = {
+ "Name": element.Name,
+ "AuthorOrganizationName": element.OwnerHistory.OwningUser.TheOrganization.Name,
+ "AuthorDate": ifcopenshell.util.date.ifc2datetime(
+ self.files["arch"].by_type("IfcProject")[0].OwnerHistory.CreationDate
+ ).isoformat(),
+ "Category": self.get_classification(element),
+ "ProjectName": element.Decomposes[0].RelatingObject.Decomposes[0].RelatingObject.Name,
+ "SiteName": element.Decomposes[0].RelatingObject.Name,
+ "LinearUnits": "millimeters",
+ "AreaUnits": "square meters",
+ "AreaMeasurement": "TODO",
+ "Phase": element.Decomposes[0].RelatingObject.Decomposes[0].RelatingObject.Phase,
+ "ModelSoftware": element.OwnerHistory.OwningApplication.ApplicationFullName,
+ "ModelProjectID": self.files["arch"].by_type("IfcProject")[0].GlobalId,
+ "ModelSiteID": element.Decomposes[0].RelatingObject.GlobalId,
+ "ModelBuildingID": element.GlobalId,
+ }
+
+ def get_classification(self, element):
+ rel = [r for r in element.HasAssociations or [] if r.is_a("IfcRelAssociatesClassification")]
+ if rel:
+ classification = rel[0].RelatingClassification
+ if getattr(classification, "Identification", None) and getattr(classification, "Name", None):
+ return "{}:{}".format(classification.Identification, classification.Name)
+ elif getattr(classification, "ItemReference", None) and getattr(classification, "Name", None):
+ return "{}:{}".format(classification.ItemReference, classification.Name)
+
+ def get_floors(self):
+ storeys = self.files["arch"].by_type("IfcBuildingStorey")
+ self.floors["Site"] = {
+ "Name": "Site",
+ "AuthorOrganizationName": storeys[0].OwnerHistory.OwningUser.TheOrganization.Name,
+ "AuthorDate": datetime.datetime.now().replace(microsecond=0).isoformat(),
+ "Category": "Site",
+ "ModelSoftware": "IfcFM",
+ "ModelObject": "IfcExternalSpatialElement",
+ "ModelID": ifcopenshell.guid.new(), # TODO
+ "Elevation": None,
+ }
+ for element in storeys:
+ self.get_floor(element)
+
+ def get_floor(self, element):
+ name = element.Name
+ elevation = element.ObjectPlacement.RelativePlacement.Location.Coordinates[2]
+ self.floors[name] = {
+ "Name": name,
+ "AuthorOrganizationName": element.OwnerHistory.OwningUser.TheOrganization.Name,
+ "AuthorDate": ifcopenshell.util.date.ifc2datetime(element.OwnerHistory.CreationDate).isoformat(),
+ "Category": "Level",
+ "ModelSoftware": element.OwnerHistory.OwningApplication.ApplicationFullName,
+ "ModelObject": element.is_a(),
+ "ModelID": element.GlobalId,
+ "Elevation": elevation,
+ }
+
+ def get_spaces(self):
+ primary_keys = []
+ for element in self.files["arch"].by_type("IfcSpace"):
+ name = element.Name
+ primary_keys.append(name)
+ # TODO: not correct mapping
+ psets = ifcopenshell.util.element.get_psets(element)
+
+ category = None
+ if "Data" in psets and "COBie.Space.Category" in psets["Data"]:
+ category = psets["Data"]["COBie.Space.Category"].replace(" : ", ":")
+
+ usable_height = None
+ if "Data" in psets and "COBie.Space.Category" in psets["Data"]:
+ usable_height = round(psets["Data"]["COBie.Space.UsableHeight"], 2) or None
+
+ area_gross = None
+ if "Data" in psets and "COBie.Space.GrossArea" in psets["Data"]:
+ area_gross = round(psets["Data"]["COBie.Space.GrossArea"], 2) or None
+
+ area_net = None
+ if "Data" in psets and "COBie.Space.NetArea" in psets["Data"]:
+ area_net = round(psets["Data"]["COBie.Space.NetArea"], 2) or None
+
+ self.spaces[name] = {
+ "Name": name,
+ "AuthorOrganizationName": element.OwnerHistory.OwningUser.TheOrganization.Name,
+ "AuthorDate": ifcopenshell.util.date.ifc2datetime(element.OwnerHistory.CreationDate).isoformat(),
+ "Category": category,
+ "LevelName": element.Decomposes[0].RelatingObject.Name,
+ "Description": element.LongName,
+ "ModelSoftware": element.OwnerHistory.OwningApplication.ApplicationFullName,
+ "ModelID": element.GlobalId,
+ "BuildingRoomNumber": None,
+ "UsableHeight": usable_height,
+ "AreaGross": area_gross,
+ "AreaNet": area_net,
+ }
+
+ def get_zones(self):
+ for element in self.files["arch"].by_type("IfcZone"):
+ for rel in element.IsGroupedBy:
+ for space in rel.RelatedObjects:
+ if not space.is_a("IfcSpace"):
+ continue
+ self.zones[element.Name + space.Name] = {
+ "Name": element.Name,
+ "AuthorOrganizationName": element.OwnerHistory.OwningUser.TheOrganization.Name,
+ "AuthorDate": ifcopenshell.util.date.ifc2datetime(
+ element.OwnerHistory.CreationDate
+ ).isoformat(),
+ "Category": "Occupancy",
+ "SpaceName": space.Name,
+ "ModelSoftware": element.OwnerHistory.OwningApplication.ApplicationFullName,
+ "ModelID": element.GlobalId,
+ "ParentZoneName": None,
+ }
+
+ def get_systems(self):
+ for discipline, ifc in self.files.items():
+ # if discipline == "arch":
+ # continue
+ for element in ifc.by_type("IfcSystem"):
+ name = element.Name
+ self.systems[name] = {
+ "Name": name,
+ "AuthorOrganizationName": element.OwnerHistory.OwningUser.TheOrganization.Name,
+ "AuthorDate": ifcopenshell.util.date.ifc2datetime(element.OwnerHistory.CreationDate).isoformat(),
+ "Category": None,
+ "ModelSoftware": element.OwnerHistory.OwningApplication.ApplicationFullName,
+ "ModelID": element.GlobalId,
+ "ParentSystemName": None,
+ }
+
+ def get_types(self):
+ for discipline, ifc in self.files.items():
+ self.get_types_from_file(discipline)
+
+ def get_types_from_file(self, ifc_file):
+ primary_keys = []
+ for element in ifcopenshell.util.fm.get_fmhem_types(self.files[ifc_file]):
+ name = element.Name
+ primary_keys.append(name)
+
+ psets = ifcopenshell.util.element.get_psets(element)
+
+ # Hack
+ category = None
+ if ifc_file == "arch":
+ #if "Data" in psets and "COBie.Type.Category" in psets["Data"]:
+ # if ":" in psets["Data"]["COBie.Type.Category"]:
+ # category = psets["Data"]["COBie.Type.Category"].replace(" : ", ":")
+ if "Data" in psets and "Classification.Uniclass.Pr.Number" in psets["Data"]:
+ category = f"{psets['Data']['Classification.Uniclass.Pr.Number']}:{psets['Data']['Classification.Uniclass.Pr.Description']}"
+ elif ifc_file == "hyd":
+ if "Data" in psets and "Classification.Uniclass.Pr.Number" in psets["Data"]:
+ category = f"{psets['Data']['Classification.Uniclass.Pr.Number']}:{psets['Data']['Classification.Uniclass.Pr.Description']}"
+
+ self.types[name] = {
+ "Name": name,
+ "AuthorOrganizationName": element.OwnerHistory.OwningUser.TheOrganization.Name,
+ "AuthorDate": ifcopenshell.util.date.ifc2datetime(element.OwnerHistory.CreationDate).isoformat(),
+ "Category": category,
+ "ProcurementMethod": None,
+ "Description": element.Description,
+ "ManufacturerOrganizationName": None,
+ "SupplierOrganizationName": None,
+ "ModelNumber": None,
+ "WarrantyOrganizationName": None,
+ "WarrantyDuration": None,
+ "ModelSoftware": element.OwnerHistory.OwningApplication.ApplicationFullName,
+ "ModelObject": element.is_a(),
+ "ModelID": element.GlobalId,
+ "SpecificationSection": None,
+ "SubmittalID": None,
+ "ProductURL": None,
+ }
+
+ def get_components(self):
+ for discipline, ifc in self.files.items():
+ self.get_components_from_file(discipline)
+
+ def get_components_from_file(self, ifc_file):
+ for element_type in ifcopenshell.util.fm.get_fmhem_types(self.files[ifc_file]):
+ for element in element_type.ObjectTypeOf[0].RelatedObjects:
+ name = element.Name
+
+ system = None
+ for rel in element.HasAssignments:
+ if rel.is_a("IfcRelAssignsToGroup") and rel.RelatingGroup.is_a("IfcSystem"):
+ system = rel.RelatingGroup.Name
+
+ space_name = None
+
+ # Nasty hack
+ if ifc_file == "arch":
+ psets = ifcopenshell.util.element.get_psets(element)
+ if "Data" in psets and "COBie.Component.Space" in psets["Data"]:
+ space_name = psets["Data"]["COBie.Component.Space"]
+ if space_name not in self.spaces:
+ space_name = None
+ else:
+ space = element.ContainedInStructure[0].RelatingStructure
+ if space.is_a("IfcSpace"):
+ space_name = space.Name
+
+ self.components[name] = {
+ "Name": name,
+ "AuthorOrganizationName": element.OwnerHistory.OwningUser.TheOrganization.Name,
+ "AuthorDate": ifcopenshell.util.date.ifc2datetime(element.OwnerHistory.CreationDate).isoformat(),
+ "TypeName": element_type.Name,
+ "SpaceName": space_name,
+ "InstallationDate": None,
+ "WarrantyStartDate": None,
+ "ModelSoftware": element.OwnerHistory.OwningApplication.ApplicationFullName,
+ "ModelObject": element.is_a(),
+ "ModelID": element.GlobalId,
+ "InstalledModelNumber": None,
+ "SerialNumber": None,
+ "BarCode": None,
+ "TagNumber": None,
+ "OwnerAssetID": None,
+ "SystemName": system,
+ "FluidHotFeedName": None,
+ "FluidColdFeedName": None,
+ "ElectricPanelName": None,
+ "ElectricCircuitName": None,
+ "ControlledByName": None,
+ "InterlockedWithName": None,
+ "PartOfAssemblyName": None,
+ }
+
+ def get_documents(self):
+ for rel in self.files["arch"].by_type("IfcRelAssociatesDocument"):
+ element = rel.RelatingDocument
+ for related_object in rel.RelatedObjects:
+ name = element.Name
+ worksheet_row = related_object.Name
+ if self.files["arch"].schema == "IFC2X3":
+ submittal_id = element.ItemReference
+ referenced_document = element.ReferenceToDocument[0]
+ author_date = None
+ if referenced_document.CreationTime:
+ author_date = ifcopenshell.util.date.ifc2datetime(referenced_document.CreationTime).isoformat()
+ else:
+ submittal_id = element.Identification
+ referenced_document = element.ReferencedDocument
+ author_date = referenced_document.CreationTime
+
+ worksheet_name = None
+ if related_object.is_a("IfcSpace"):
+ worksheet_name = "Space"
+ elif related_object.is_a("IfcTypeObject"):
+ worksheet_name = "Type"
+
+ self.documents[element.Name + worksheet_name + worksheet_row] = {
+ "Name": name,
+ "AuthorOrganizationName": referenced_document.DocumentOwner.Name,
+ "AuthorDate": author_date,
+ "Category": referenced_document.Purpose,
+ "WorksheetName": worksheet_name,
+ "WorksheetRow": worksheet_row,
+ "Revision": referenced_document.Revision,
+ "Location": referenced_document.Name,
+ "Description": referenced_document.Description,
+ "SpecificationSection": None,
+ "SubmittalID": submittal_id,
+ "SourceURL": None,
+ }
diff --git a/src/ifcfm/ifcfm/writer.py b/src/ifcfm/ifcfm/writer.py
new file mode 100644
index 0000000000..803a6cc9b1
--- /dev/null
+++ b/src/ifcfm/ifcfm/writer.py
@@ -0,0 +1,600 @@
+
+# IfcFM - IFC for facility management
+# Copyright (C) 2021 Dion Moult
+#
+# This file is part of IfcFM.
+#
+# IfcFM is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# IfcFM is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public License
+# along with IfcFM. If not, see .
+
+import csv
+
+try:
+ from xlsxwriter import Workbook
+except:
+ pass # No XLSX support
+
+try:
+ from odf.opendocument import OpenDocumentSpreadsheet
+ from odf.style import Style, TableCellProperties
+ from odf.table import Table, TableRow, TableCell
+ from odf.text import P
+except:
+ pass # No ODF support
+
+
+# https://stackoverflow.com/questions/1143671/how-to-sort-objects-by-multiple-keys-in-python
+
+from operator import itemgetter as i
+from functools import cmp_to_key
+
+
+def cmp(x, y):
+ """
+ Replacement for built-in function cmp that was removed in Python 3
+
+ Compare the two objects x and y and return an integer according to
+ the outcome. The return value is negative if x < y, zero if x == y
+ and strictly positive if x > y.
+
+ https://portingguide.readthedocs.io/en/latest/comparisons.html#the-cmp-function
+ """
+
+ try:
+ return (x > y) - (x < y)
+ except:
+ return 0
+
+
+def multikeysort(items, columns):
+ comparers = [((i(col[1:].strip()), -1) if col.startswith("-") else (i(col.strip()), 1)) for col in columns]
+
+ def comparer(left, right):
+ comparer_iter = (cmp(fn(left), fn(right)) * mult for fn, mult in comparers)
+ return next((result for result in comparer_iter if result), 0)
+
+ return sorted(items, key=cmp_to_key(comparer))
+
+
+class Writer:
+ def __init__(self, parser, filename=None):
+ self.filename = filename
+ self.parser = parser
+ self.sheets = []
+ self.sheet_data = {}
+ self.colours = {
+ "r": "fdff8e", # Required
+ "i": "fdcd94", # Internal reference
+ "e": "cd95ff", # External reference
+ "o": "cdffc8", # Optional
+ "s": "c0c0c0", # Secondary information
+ "p": "9ccaff", # Project specific
+ "n": "000000", # Not used
+ }
+ self.colours = {
+ "r": "dc8774", # Required
+ "i": "eda786", # Internal reference
+ "e": "96c7d0", # External reference
+ "o": "ddb873", # Optional or edd889
+ "s": "dddddd", # Secondary information
+ "p": "b8dd73", # Project specific
+ "n": "000000", # Not used
+ }
+
+ def write(self):
+ self.sheets = [
+ "Contact",
+ "Facility",
+ "Floor",
+ "Space",
+ "Zone",
+ "Type",
+ "Component",
+ "System",
+ # "Assembly",
+ # "Connection",
+ # "Spare",
+ # "Resource",
+ # "Job",
+ # "Impact",
+ "Document",
+ # "Attribute",
+ # "Coordinate",
+ # "Issue",
+ ]
+ self.write_data(
+ "Contact",
+ self.parser.contacts,
+ [
+ "Name",
+ "Category",
+ "Email",
+ "Phone",
+ "Department",
+ "Street",
+ "PostalBox",
+ "Town",
+ "StateRegion",
+ "PostalCode",
+ "Country",
+ "CompanyURL",
+ ],
+ "rirrrrrrrrrr",
+ ["Name"],
+ )
+ self.write_data(
+ "Facility",
+ self.parser.facilities,
+ [
+ "Name",
+ "AuthorOrganizationName",
+ "AuthorDate",
+ "Category",
+ "ProjectName",
+ "SiteName",
+ "LinearUnits",
+ "AreaUnits",
+ "AreaMeasurement",
+ "Phase",
+ "ModelSoftware",
+ "ModelProjectID",
+ "ModelSiteID",
+ "ModelBuildingID",
+ ],
+ "ririrrrrrreeee",
+ ["Name"],
+ )
+ self.write_data(
+ "Floor",
+ self.parser.floors,
+ [
+ "Name",
+ "AuthorOrganizationName",
+ "AuthorDate",
+ "Category",
+ "ModelSoftware",
+ "ModelObject",
+ "ModelID",
+ "Elevation",
+ ],
+ "ririeeer",
+ ["Elevation"],
+ )
+ self.write_data(
+ "Space",
+ self.parser.spaces,
+ [
+ "Name",
+ "AuthorOrganizationName",
+ "AuthorDate",
+ "Category",
+ "LevelName",
+ "Description",
+ "ModelSoftware",
+ "ModelID",
+ "BuildingRoomNumber",
+ "UsableHeight",
+ "AreaGross",
+ "AreaNet",
+ ],
+ "ririireerrrr",
+ ["LevelName", "Name"],
+ )
+ self.write_data(
+ "Zone",
+ self.parser.zones,
+ [
+ "Name",
+ "AuthorOrganizationName",
+ "AuthorDate",
+ "Category",
+ "SpaceName",
+ "ModelSoftware",
+ "ModelID",
+ "ParentZoneName",
+ ],
+ "ririieei",
+ ["Name", "SpaceName"],
+ )
+ self.write_data(
+ "Type",
+ self.parser.types,
+ [
+ "Name",
+ "AuthorOrganizationName",
+ "AuthorDate",
+ "Category",
+ "ProcurementMethod",
+ "Description",
+ "ManufacturerOrganizationName",
+ "SupplierOrganizationName",
+ "ModelNumber",
+ "WarrantyOrganizationName",
+ "WarrantyDuration",
+ "ModelSoftware",
+ "ModelObject",
+ "ModelID",
+ "SpecificationSection",
+ "SubmittalID",
+ "ProductURL",
+ ],
+ "ririiriirireeerrr",
+ ["ModelObject", "Name"],
+ )
+ self.write_data(
+ "Component",
+ self.parser.components,
+ [
+ "Name",
+ "AuthorOrganizationName",
+ "AuthorDate",
+ "TypeName",
+ "SpaceName",
+ "InstallationDate",
+ "WarrantyStartDate",
+ "ModelSoftware",
+ "ModelObject",
+ "ModelID",
+ "InstalledModelNumber",
+ "SerialNumber",
+ "BarCode",
+ "TagNumber",
+ "OwnerAssetID",
+ "SystemName",
+ "FluidHotFeedName",
+ "FluidColdFeedName",
+ "ElectricPanelName",
+ "ElectricCircuitName",
+ "ControlledByName",
+ "InterlockedWithName",
+ "PartOfAssemblyName",
+ ],
+ "ririirreeerrrrriiiiiiii",
+ ["ModelObject", "Name"],
+ )
+ self.write_data(
+ "System",
+ self.parser.systems,
+ [
+ "Name",
+ "AuthorOrganizationName",
+ "AuthorDate",
+ "Category",
+ "ModelSoftware",
+ "ModelID",
+ "ParentSystemName",
+ ],
+ "ririeei",
+ ["Name"],
+ )
+ # self.write_data(
+ # "Assembly",
+ # self.parser.assemblies,
+ # "Name",
+ # [
+ # "Name",
+ # "CreatedBy",
+ # "CreatedOn",
+ # "SheetName",
+ # "ParentName",
+ # "ChildNames",
+ # "AssemblyType",
+ # "ExtSystem",
+ # "ExtObject",
+ # "ExtIdentifier",
+ # "Description",
+ # ],
+ # "rirrrrreeeo",
+ # self.parser.custom_data["assemblies"],
+ # )
+ # self.write_data(
+ # "Connection",
+ # self.parser.connections,
+ # "Name",
+ # [
+ # "Name",
+ # "CreatedBy",
+ # "CreatedOn",
+ # "ConnectionType",
+ # "SheetName",
+ # "RowName1",
+ # "RowName2",
+ # "RealizingElement",
+ # "PortName1",
+ # "PortName2",
+ # "ExtSystem",
+ # "ExtObject",
+ # "ExtIdentifier",
+ # "Description",
+ # ],
+ # "ririiiiiiieeeo",
+ # self.parser.custom_data["connections"],
+ # )
+ # self.write_data(
+ # "Spare",
+ # self.parser.spares,
+ # "Name",
+ # [
+ # "Name",
+ # "CreatedBy",
+ # "CreatedOn",
+ # "Category",
+ # "TypeName",
+ # "Suppliers",
+ # "ExtSystem",
+ # "ExtObject",
+ # "ExtIdentifier",
+ # "Description",
+ # "SetNumber",
+ # "PartNumber",
+ # ],
+ # "ririiieeeooo",
+ # self.parser.custom_data["spares"],
+ # )
+ # self.write_data(
+ # "Resource",
+ # self.parser.resources,
+ # "Name",
+ # [
+ # "Name",
+ # "CreatedBy",
+ # "CreatedOn",
+ # "Category",
+ # "ExtSystem",
+ # "ExtObject",
+ # "ExtIdentifier",
+ # "Description",
+ # ],
+ # "ririeeeo",
+ # self.parser.custom_data["resources"],
+ # )
+ # self.write_data(
+ # "Job",
+ # self.parser.jobs,
+ # "Name",
+ # [
+ # "Name",
+ # "CreatedBy",
+ # "CreatedOn",
+ # "Category",
+ # "Status",
+ # "TypeName",
+ # "Description",
+ # "Duration",
+ # "DurationUnit",
+ # "Start",
+ # "TaskStartUnit",
+ # "Frequency",
+ # "FrequencyUnit",
+ # "ExtSystem",
+ # "ExtObject",
+ # "ExtIdentifier",
+ # "TaskNumber",
+ # "Priors",
+ # "ResourceNames",
+ # ],
+ # "ririiirriririeeeoii",
+ # self.parser.custom_data["jobs"],
+ # )
+ # self.write_data(
+ # "Impact",
+ # self.parser.impacts,
+ # "Name",
+ # [
+ # "Name",
+ # "CreatedBy",
+ # "CreatedOn",
+ # "ImpactType",
+ # "ImpactStage",
+ # "SheetName",
+ # "RowName",
+ # "Value",
+ # "Unit",
+ # "LeadInTime",
+ # "Duration",
+ # "LeadOutTime",
+ # "ExtSystem",
+ # "ExtObject",
+ # "ExtIdentifier",
+ # "Description",
+ # ],
+ # "ririiiirioooeeeo",
+ # self.parser.custom_data["impacts"],
+ # )
+ self.write_data(
+ "Document",
+ self.parser.documents,
+ [
+ "Name",
+ "AuthorOrganizationName",
+ "AuthorDate",
+ "Category",
+ "WorksheetName",
+ "WorksheetRow",
+ "Revision",
+ "Location",
+ "Description",
+ "SpecificationSection",
+ "SubmittalID",
+ "SourceURL",
+ ],
+ "ririiirrrrer",
+ ["Name"],
+ )
+ # self.write_data(
+ # "Attribute",
+ # self.parser.attributes,
+ # "Name",
+ # [
+ # "Name",
+ # "CreatedBy",
+ # "CreatedOn",
+ # "Category",
+ # "SheetName",
+ # "RowName",
+ # "Value",
+ # "Unit",
+ # "ExtSystem",
+ # "ExtObject",
+ # "ExtIdentifier",
+ # "Description",
+ # "AllowedValues",
+ # ],
+ # "ririiirreeeoo",
+ # )
+ # self.write_data(
+ # "Coordinate",
+ # self.parser.coordinates,
+ # "Name",
+ # [
+ # "Name",
+ # "CreatedBy",
+ # "CreatedOn",
+ # "Category",
+ # "SheetName",
+ # "RowName",
+ # "CoordinateXAxis",
+ # "CoordinateYAxis",
+ # "CoordinateZAxis",
+ # "ExtSystem",
+ # "ExtObject",
+ # "ExtIdentifier",
+ # "ClockwiseRotation",
+ # "ElevationalRotation",
+ # "YawRotation",
+ # ],
+ # "ririiooooeeeooo",
+ # )
+ # self.write_data(
+ # "Issue",
+ # self.parser.issues,
+ # "Name",
+ # [
+ # "Name",
+ # "CreatedBy",
+ # "CreatedOn",
+ # "Type",
+ # "Risk",
+ # "Chance",
+ # "Impact",
+ # "SheetName1",
+ # "RowName1",
+ # "SheetName2",
+ # "RowName2",
+ # "Description",
+ # "Owner",
+ # "Mitigation",
+ # "ExtSystem",
+ # "ExtObject",
+ # "ExtIdentifier",
+ # ],
+ # "ririooooooooooeee",
+ # )
+
+ def write_data(self, sheet, data, fieldnames, colours, sort_fields, custom_data={}):
+ self.sheet_data[sheet] = {"headers": fieldnames + list(custom_data.keys()), "colours": colours, "rows": []}
+ for row in multikeysort(list(data.values()), sort_fields):
+ values = []
+ for fieldname in fieldnames:
+ values.append(row[fieldname])
+ for fieldname in custom_data.keys():
+ values.append(row[fieldname])
+ self.sheet_data[sheet]["rows"].append(values)
+
+
+class CsvWriter(Writer):
+ def write(self):
+ super().write()
+ for sheet, data in self.sheet_data.items():
+ with open(os.path.join(self.filename, "{}.csv".format(sheet)), "w", newline="", encoding="utf-8") as file:
+ writer = csv.writer(file)
+ writer.writerow(data["headers"])
+ for row in data["rows"]:
+ writer.writerow(row)
+
+
+class XlsWriter(Writer):
+ def write(self):
+ super().write()
+ self.workbook = Workbook(self.filename + ".xlsx")
+
+ self.cell_formats = {}
+ for key, value in self.colours.items():
+ self.cell_formats[key] = self.workbook.add_format()
+ self.cell_formats[key].set_bg_color(value)
+
+ for sheet in self.sheets:
+ self.write_worksheet(sheet)
+ self.workbook.close()
+
+ def write_worksheet(self, name):
+ worksheet = self.workbook.add_worksheet(name)
+ r = 0
+ c = 0
+ for header in self.sheet_data[name]["headers"]:
+ cell = worksheet.write(r, c, header, self.cell_formats["s"])
+ c += 1
+ c = 0
+ r += 1
+ for row in self.sheet_data[name]["rows"]:
+ c = 0
+ for col in row:
+ if c >= len(self.sheet_data[name]["colours"]):
+ cell_format = "p"
+ else:
+ cell_format = self.sheet_data[name]["colours"][c]
+ cell = worksheet.write(r, c, col, self.cell_formats[cell_format])
+ c += 1
+ r += 1
+
+
+class OdsWriter(Writer):
+ def write(self):
+ super().write()
+ self.doc = OpenDocumentSpreadsheet()
+
+ self.cell_formats = {}
+ for key, value in self.colours.items():
+ style = Style(name=key, family="table-cell")
+ style.addElement(TableCellProperties(backgroundcolor="#" + value))
+ self.doc.automaticstyles.addElement(style)
+ self.cell_formats[key] = style
+
+ for sheet in self.sheets:
+ self.write_table(sheet)
+ self.doc.save(self.filename, True)
+
+ def write_table(self, name):
+ table = Table(name=name)
+ tr = TableRow()
+ for header in self.sheet_data[name]["headers"]:
+ tc = TableCell(valuetype="string", stylename="s")
+ tc.addElement(P(text=header))
+ tr.addElement(tc)
+ table.addElement(tr)
+ for row in self.sheet_data[name]["rows"]:
+ tr = TableRow()
+ c = 0
+ for col in row:
+ if c >= len(self.sheet_data[name]["colours"]):
+ cell_format = "p"
+ else:
+ cell_format = self.sheet_data[name]["colours"][c]
+ tc = TableCell(valuetype="string", stylename=cell_format)
+ if col is None:
+ col = "NULL"
+ tc.addElement(P(text=col))
+ tr.addElement(tc)
+ c += 1
+ table.addElement(tr)
+ self.doc.spreadsheet.addElement(table)
diff --git a/src/ifcgeom/IfcGeom.h b/src/ifcgeom/IfcGeom.h
index 4c8dda70f9..7ed7306046 100644
--- a/src/ifcgeom/IfcGeom.h
+++ b/src/ifcgeom/IfcGeom.h
@@ -488,7 +488,7 @@ public:
prs_styles.push_back(style_l);
}
}
-#if defined SCHEMA_HAS_IfcStyleAssignmentSelect or defined SCHEMA_HAS_IfcPresentationStyleAssignment
+#if defined(SCHEMA_HAS_IfcStyleAssignmentSelect) || defined(SCHEMA_HAS_IfcPresentationStyleAssignment)
}
#endif
diff --git a/src/ifcgeom/IfcGeomTree.h b/src/ifcgeom/IfcGeomTree.h
index 08039ba590..e0e836fdcd 100644
--- a/src/ifcgeom/IfcGeomTree.h
+++ b/src/ifcgeom/IfcGeomTree.h
@@ -305,13 +305,19 @@ namespace IfcGeom {
void add_file(IfcGeom::Iterator& it) {
if (it.initialize()) {
do {
- IfcGeom::BRepElement* elem = (IfcGeom::BRepElement*)it.get();
- auto compound = elem->geometry().as_compound();
- compound.Move(elem->transformation().data());
- add((IfcUtil::IfcBaseEntity*)it.file()->instance_by_id(elem->id()), compound);
+ add_element(dynamic_cast(it.get()));
} while (it.next());
}
}
+
+ void add_element(IfcGeom::BRepElement* elem) {
+ if (!elem) {
+ return;
+ }
+ auto compound = elem->geometry().as_compound();
+ compound.Move(elem->transformation().data());
+ add(elem->product(), compound);
+ }
};
}
diff --git a/src/ifcgeom_schema_agnostic/IfcGeomIterator.h b/src/ifcgeom_schema_agnostic/IfcGeomIterator.h
index db35d45156..1ce8a47922 100644
--- a/src/ifcgeom_schema_agnostic/IfcGeomIterator.h
+++ b/src/ifcgeom_schema_agnostic/IfcGeomIterator.h
@@ -45,7 +45,7 @@
* *
* IfcGeom::Iterator::get() *
* returns a pointer to the current IfcGeom::Element *
- * *
+ * *
* IfcGeom::Iterator::next() *
* returns true iff a following entity is available for a successive call to *
* IfcGeom::Iterator::get() *
@@ -69,8 +69,8 @@
#endif
namespace IfcGeom {
-
- class Iterator {
+
+ class IFC_GEOM_API Iterator {
private:
Iterator(const Iterator&); // N/I
Iterator& operator=(const Iterator&); // N/I
diff --git a/src/ifcgeom_schema_agnostic/IteratorImplementation.cpp b/src/ifcgeom_schema_agnostic/IteratorImplementation.cpp
index 2ab16b8e78..1bea4fc73d 100644
--- a/src/ifcgeom_schema_agnostic/IteratorImplementation.cpp
+++ b/src/ifcgeom_schema_agnostic/IteratorImplementation.cpp
@@ -2,7 +2,7 @@
#include
-IteratorFactoryImplementation& iterator_implementations() {
+IFC_GEOM_API IteratorFactoryImplementation& iterator_implementations() {
static IteratorFactoryImplementation impl;
return impl;
}
@@ -34,19 +34,19 @@ extern void init_IteratorImplementation_Ifc4x3_rc2(IteratorFactoryImplementation
IteratorFactoryImplementation::IteratorFactoryImplementation() {
#ifdef HAS_SCHEMA_2x3
init_IteratorImplementation_Ifc2x3(this);
-#endif
+#endif
#ifdef HAS_SCHEMA_4
init_IteratorImplementation_Ifc4(this);
-#endif
+#endif
#ifdef HAS_SCHEMA_4x1
init_IteratorImplementation_Ifc4x1(this);
-#endif
+#endif
#ifdef HAS_SCHEMA_4x2
init_IteratorImplementation_Ifc4x2(this);
-#endif
+#endif
#ifdef HAS_SCHEMA_4x3_rc1
init_IteratorImplementation_Ifc4x3_rc1(this);
-#endif
+#endif
#ifdef HAS_SCHEMA_4x3_rc2
init_IteratorImplementation_Ifc4x3_rc2(this);
#endif
diff --git a/src/ifcgeom_schema_agnostic/IteratorImplementation.h b/src/ifcgeom_schema_agnostic/IteratorImplementation.h
index 8a0681bbb7..35293cd59b 100644
--- a/src/ifcgeom_schema_agnostic/IteratorImplementation.h
+++ b/src/ifcgeom_schema_agnostic/IteratorImplementation.h
@@ -22,7 +22,7 @@ namespace IfcGeom {
typedef boost::function4&, int> iterator_fn;
-class IteratorFactoryImplementation : public std::map {
+class IFC_GEOM_API IteratorFactoryImplementation : public std::map {
public:
IteratorFactoryImplementation();
void bind(const std::string& schema_name, iterator_fn fn);
@@ -52,4 +52,4 @@ namespace IfcGeom {
}
-#endif
\ No newline at end of file
+#endif
diff --git a/src/ifcopenshell-python/ifcopenshell/api/__init__.py b/src/ifcopenshell-python/ifcopenshell/api/__init__.py
index 8343b71e8f..e0e7e15503 100644
--- a/src/ifcopenshell-python/ifcopenshell/api/__init__.py
+++ b/src/ifcopenshell-python/ifcopenshell/api/__init__.py
@@ -97,3 +97,53 @@ def remove_post_listener(usecase_path, name, callback):
def remove_all_listeners():
pre_listeners.clear()
post_listeners.clear()
+
+
+def extract_docs(module, usecase):
+ import typing
+ import inspect
+ import collections
+
+ results = []
+
+ inputs = collections.OrderedDict()
+
+ function_init = getattr(getattr(ifcopenshell.api, module), usecase).Usecase.__init__
+ function_execute = getattr(getattr(ifcopenshell.api, module), usecase).Usecase.execute
+
+ node_data = {"module": module, "usecase": usecase}
+
+ signature = inspect.signature(function_init)
+ for name, parameter in signature.parameters.items():
+ if name == "self":
+ continue
+ inputs[name] = {"name": name}
+ if isinstance(parameter.default, (str, float, int, bool)):
+ inputs[name]["default"] = parameter.default
+
+ type_hints = typing.get_type_hints(function_init)
+ for name, socket_data in inputs.items():
+ type_hint = type_hints[name]
+ if isinstance(type_hint, typing._UnionGenericAlias):
+ inputs[name]["type"] = [t.__name__ for t in typing.get_args(type_hint)]
+ else:
+ inputs[name]["type"] = type_hint.__name__
+
+ description = ""
+ for i, line in enumerate(function_init.__doc__.split("\n")):
+ line = line.strip()
+ if i == 0:
+ node_data["name"] = line
+ elif line.startswith(":return:"):
+ node_data["output"] = {"name": line.split(":")[2].strip(), "description": line.split(":")[3].strip()}
+ elif line.startswith(":param"):
+ param_name = line.split(":")[1].strip().replace("param ", "")
+ inputs[param_name]["description"] = line.split(":")[2].strip()
+ elif i >= 2:
+ description += line
+
+ if "output" in node_data:
+ node_data["output"]["type"] = typing.get_type_hints(function_execute)["return"].__name__
+ node_data["description"] = description.strip()
+ node_data["inputs"] = inputs
+ return node_data
diff --git a/src/ifcopenshell-python/ifcopenshell/api/cost/data.py b/src/ifcopenshell-python/ifcopenshell/api/cost/data.py
index 9d01cdcbdc..3e08f7ad47 100644
--- a/src/ifcopenshell-python/ifcopenshell/api/cost/data.py
+++ b/src/ifcopenshell-python/ifcopenshell/api/cost/data.py
@@ -1,4 +1,5 @@
import ifcopenshell.util.date
+import ifcopenshell.util.unit
class Data:
@@ -7,6 +8,7 @@ class Data:
cost_items = {}
physical_quantities = {}
cost_values = {}
+ categories = []
@classmethod
def purge(cls):
@@ -15,6 +17,11 @@ class Data:
cls.cost_items = {}
cls.physical_quantities = {}
cls.cost_values = {}
+ cls.categories = []
+
+ @classmethod
+ def set_categories(cls, categories):
+ cls.categories = categories
@classmethod
def load(cls, file):
@@ -63,20 +70,32 @@ class Data:
del quantity_data["Unit"]
cls.physical_quantities[quantity.id()] = quantity_data
data["CostQuantities"].append(quantity.id())
+ data["Unit"] = None
+ data["UnitSymbol"] = "?"
+ if cost_item.CostQuantities:
+ quantity = cost_item.CostQuantities[0]
+ unit = ifcopenshell.util.unit.get_property_unit(quantity, cls.file)
+ if unit:
+ data["Unit"] = unit.id()
+ data["UnitSymbol"] = ifcopenshell.util.unit.get_unit_symbol(unit)
+ else:
+ data["Unit"] = None
+ data["UnitSymbol"] = None
@classmethod
def load_cost_item_values(cls, cost_item, data):
data["CostValues"] = []
data["TotalCostValue"] = 0.0
data["TotalAppliedValue"] = 0.0
+ data["CategoryValues"] = {}
for cost_value in cost_item.CostValues or []:
- cls.load_cost_item_value(cost_item, cost_value)
+ cls.load_cost_item_value(data, cost_item, cost_value)
data["CostValues"].append(cost_value.id())
data["TotalAppliedValue"] += cls.cost_values[cost_value.id()]["AppliedValue"]
data["TotalCostValue"] = data["TotalCostQuantity"] * data["TotalAppliedValue"]
@classmethod
- def load_cost_item_value(cls, cost_item, cost_value):
+ def load_cost_item_value(cls, cost_item_data, cost_item, cost_value):
value_data = cost_value.get_info()
del value_data["AppliedValue"]
del value_data["UnitBasis"]
@@ -86,9 +105,14 @@ class Data:
value_data["FixedUntilDate"] = ifcopenshell.util.date.ifc2datetime(value_data["FixedUntilDate"])
value_data["Components"] = [c.id() for c in value_data["Components"] or []]
value_data["AppliedValue"] = cls.calculate_applied_value(cost_item, cost_value)
+
+ if cost_value.Category not in [None, "*"]:
+ cost_item_data["CategoryValues"].setdefault(cost_value.Category, 0)
+ cost_item_data["CategoryValues"][cost_value.Category] += value_data["AppliedValue"]
+
cls.cost_values[cost_value.id()] = value_data
for component in cost_value.Components or []:
- cls.load_cost_item_value(cost_item, component)
+ cls.load_cost_item_value(cost_item_data, cost_item, component)
@classmethod
def calculate_applied_value(cls, cost_item, cost_value, category_filter=None):
diff --git a/src/ifcopenshell-python/ifcopenshell/api/cost/edit_cost_value.py b/src/ifcopenshell-python/ifcopenshell/api/cost/edit_cost_value.py
index b80a9ff01e..219dc00e0b 100644
--- a/src/ifcopenshell-python/ifcopenshell/api/cost/edit_cost_value.py
+++ b/src/ifcopenshell-python/ifcopenshell/api/cost/edit_cost_value.py
@@ -9,5 +9,5 @@ class Usecase:
for name, value in self.settings["attributes"].items():
if name == "AppliedValue" and value is not None:
# TODO: support all applied value select types
- value = self.file.createIfcReal(value)
+ value = self.file.createIfcMonetaryMeasure(value)
setattr(self.settings["cost_value"], name, value)
diff --git a/src/ifcopenshell-python/ifcopenshell/api/geometry/add_representation.py b/src/ifcopenshell-python/ifcopenshell/api/geometry/add_representation.py
index 53be859417..1b5c6684a3 100644
--- a/src/ifcopenshell-python/ifcopenshell/api/geometry/add_representation.py
+++ b/src/ifcopenshell-python/ifcopenshell/api/geometry/add_representation.py
@@ -22,8 +22,6 @@ class Usecase:
"unit_scale": None, # A scale factor to apply for all vectors in case the unit is different
"should_force_faceted_brep": False, # If we should force faceted breps for meshes
"should_force_triangulation": False, # If we should force triangulation for meshes
- "is_wireframe": False, # If the geometry is a wireframe
- "is_curve": False, # If the geometry is a Blender curve
"is_point_cloud": False, # If the geometry is a point cloud
# Possible IFC representation classes:
# IfcExtrudedAreaSolid/IfcRectangleProfileDef
@@ -204,14 +202,14 @@ class Usecase:
)
def create_variable_representation(self):
- if self.settings["is_wireframe"]:
- return self.create_wireframe_representation()
- elif self.settings["is_curve"]:
+ if isinstance(self.settings["geometry"], bpy.types.Curve):
+ return self.create_curve3d_representation()
+ elif isinstance(self.settings["geometry"], bpy.types.Camera):
+ return self.create_camera_block_representation()
+ elif not len(self.settings["geometry"].polygons):
return self.create_curve3d_representation()
elif self.settings["is_point_cloud"]:
return self.create_point_cloud_representation()
- elif isinstance(self.settings["geometry"], bpy.types.Camera):
- return self.create_camera_block_representation()
elif self.settings["ifc_representation_class"] == "IfcExtrudedAreaSolid/IfcRectangleProfileDef":
return self.create_rectangle_extrusion_representation()
elif self.settings["ifc_representation_class"] == "IfcExtrudedAreaSolid/IfcCircleProfileDef":
diff --git a/src/ifcopenshell-python/ifcopenshell/api/geometry/edit_object_placement.py b/src/ifcopenshell-python/ifcopenshell/api/geometry/edit_object_placement.py
index bd1191f4c6..1400a768b3 100644
--- a/src/ifcopenshell-python/ifcopenshell/api/geometry/edit_object_placement.py
+++ b/src/ifcopenshell-python/ifcopenshell/api/geometry/edit_object_placement.py
@@ -1,5 +1,6 @@
import numpy as np
import ifcopenshell.api
+import ifcopenshell.util.unit
import ifcopenshell.util.element
import ifcopenshell.util.placement
@@ -37,12 +38,10 @@ class Usecase:
placement_rel_to = relating_object.ObjectPlacement if hasattr(relating_object, "ObjectPlacement") else None
placement = self.file.createIfcLocalPlacement(placement_rel_to, self.get_relative_placement(placement_rel_to))
- if self.settings["product"].ObjectPlacement:
- old_placement = self.settings["product"].ObjectPlacement
+ old_placement = self.settings["product"].ObjectPlacement
+ if old_placement and len(self.file.get_inverse(old_placement)) == 1:
old_placement.PlacementRelTo = None
self.settings["product"].ObjectPlacement = None
- for inverse in self.file.get_inverse(old_placement):
- ifcopenshell.util.element.replace_attribute(inverse, old_placement, placement)
ifcopenshell.util.element.remove_deep(self.file, old_placement)
self.settings["product"].ObjectPlacement = placement
diff --git a/src/ifcopenshell-python/ifcopenshell/api/material/add_material.py b/src/ifcopenshell-python/ifcopenshell/api/material/add_material.py
index 50927d3aa9..7c9e17aece 100644
--- a/src/ifcopenshell-python/ifcopenshell/api/material/add_material.py
+++ b/src/ifcopenshell-python/ifcopenshell/api/material/add_material.py
@@ -1,6 +1,3 @@
-import ifcopenshell
-
-
class Usecase:
def __init__(self, file, **settings):
self.file = file
diff --git a/src/ifcopenshell-python/ifcopenshell/api/material/assign_material.py b/src/ifcopenshell-python/ifcopenshell/api/material/assign_material.py
index 2405d63f5a..4c0377c4c8 100644
--- a/src/ifcopenshell-python/ifcopenshell/api/material/assign_material.py
+++ b/src/ifcopenshell-python/ifcopenshell/api/material/assign_material.py
@@ -16,13 +16,13 @@ class Usecase:
if material:
ifcopenshell.api.run("material.unassign_material", self.file, product=self.settings["product"])
if self.settings["type"] == "IfcMaterial":
- self.assign_ifc_material()
+ return self.assign_ifc_material()
elif self.settings["type"] == "IfcMaterialConstituentSet":
material_set = self.file.create_entity(self.settings["type"])
- self.create_material_association(material_set)
+ return self.create_material_association(material_set)
elif self.settings["type"] == "IfcMaterialLayerSet":
material_set = self.file.create_entity(self.settings["type"])
- self.create_material_association(material_set)
+ return self.create_material_association(material_set)
elif self.settings["type"] == "IfcMaterialLayerSetUsage":
element_type = ifcopenshell.util.element.get_type(self.settings["product"])
if element_type:
@@ -34,10 +34,10 @@ class Usecase:
else:
material_set = self.file.create_entity("IfcMaterialLayerSet")
material_set_usage = self.create_layer_set_usage(material_set)
- self.create_material_association(material_set_usage)
+ return self.create_material_association(material_set_usage)
elif self.settings["type"] == "IfcMaterialProfileSet":
material_set = self.file.create_entity(self.settings["type"])
- self.create_material_association(material_set)
+ return self.create_material_association(material_set)
elif self.settings["type"] == "IfcMaterialProfileSetUsage":
element_type = ifcopenshell.util.element.get_type(self.settings["product"])
if element_type:
@@ -51,11 +51,11 @@ class Usecase:
self.update_representation_profile(material_set)
material_set_usage = self.create_profile_set_usage(material_set)
- self.create_material_association(material_set_usage)
+ return self.create_material_association(material_set_usage)
elif self.settings["type"] == "IfcMaterialList":
material_set = self.file.create_entity(self.settings["type"])
material_set.Materials = [self.settings["material"]]
- self.create_material_association(material_set)
+ return self.create_material_association(material_set)
def update_representation_profile(self, material_set):
profile = material_set.CompositeProfile
@@ -93,6 +93,7 @@ class Usecase:
related_objects = list(rel.RelatedObjects)
related_objects.append(self.settings["product"])
rel.RelatedObjects = related_objects
+ return rel
def create_material_association(self, relating_material):
return self.file.create_entity(
diff --git a/src/ifcopenshell-python/ifcopenshell/api/material/copy_material.py b/src/ifcopenshell-python/ifcopenshell/api/material/copy_material.py
new file mode 100644
index 0000000000..977d4964a0
--- /dev/null
+++ b/src/ifcopenshell-python/ifcopenshell/api/material/copy_material.py
@@ -0,0 +1,30 @@
+import ifcopenshell
+import ifcopenshell.util.element
+
+
+class Usecase:
+ def __init__(self, file, **settings):
+ self.file = file
+ self.settings = {"material": None, "element": None}
+ for key, value in settings.items():
+ self.settings[key] = value
+
+ def execute(self):
+ ifcopenshell.api.run("material.unassign_material", self.file, product=self.settings["element"])
+ if self.settings["material"].is_a("IfcMaterial"):
+ ifcopenshell.api.run(
+ "material.assign_material",
+ self.file,
+ product=self.settings["element"],
+ type="IfcMaterial",
+ material=self.settings["material"],
+ )
+ # No other material type can be copied right now.
+ # 1. Material lists and constituents may have shape aspects and I
+ # haven't implemented it yet.
+ # 2. Material layer and profile sets implicitly define parametric
+ # geometry and we have no way of guaranteeing that this constraint is
+ # satisfied.
+ # 3. Material set usages follow an unofficial constraint that all
+ # instances must have a usage of their type's material set. We cannot
+ # guarantee that constraint.
diff --git a/src/ifcopenshell-python/ifcopenshell/api/material/edit_layer_usage.py b/src/ifcopenshell-python/ifcopenshell/api/material/edit_layer_usage.py
new file mode 100644
index 0000000000..6902672574
--- /dev/null
+++ b/src/ifcopenshell-python/ifcopenshell/api/material/edit_layer_usage.py
@@ -0,0 +1,10 @@
+class Usecase:
+ def __init__(self, file, **settings):
+ self.file = file
+ self.settings = {"usage": None, "attributes": {}}
+ for key, value in settings.items():
+ self.settings[key] = value
+
+ def execute(self):
+ for name, value in self.settings["attributes"].items():
+ setattr(self.settings["usage"], name, value)
diff --git a/src/ifcopenshell-python/ifcopenshell/api/material/unassign_material.py b/src/ifcopenshell-python/ifcopenshell/api/material/unassign_material.py
index 09c625a900..d01f3a78f8 100644
--- a/src/ifcopenshell-python/ifcopenshell/api/material/unassign_material.py
+++ b/src/ifcopenshell-python/ifcopenshell/api/material/unassign_material.py
@@ -1,4 +1,5 @@
import ifcopenshell
+import ifcopenshell.util.element
class Usecase:
@@ -9,11 +10,26 @@ class Usecase:
self.settings[key] = value
def execute(self):
+ if self.settings["product"].is_a("IfcTypeObject"):
+ material = ifcopenshell.util.element.get_material(self.settings["product"])
+ if material.is_a() in ["IfcMaterialLayerSet", "IfcMaterialProfileSet"]:
+ for inverse in self.file.get_inverse(material):
+ if self.file.schema == "IFC2X3":
+ if not inverse.is_a("IfcMaterialLayerSetUsage"):
+ continue
+ for inverse2 in self.file.get_inverse(inverse):
+ if inverse2.is_a("IfcRelAssociatesMaterial"):
+ self.file.remove(inverse2)
+ else:
+ if not inverse.is_a("IfcMaterialUsageDefinition"):
+ continue
+ for rel in inverse.AssociatedTo:
+ self.file.remove(rel)
+ self.file.remove(inverse)
+
for rel in self.settings["product"].HasAssociations:
if rel.is_a("IfcRelAssociatesMaterial"):
- if rel.RelatingMaterial.is_a("IfcMaterialLayerSetUsage") or rel.RelatingMaterial.is_a(
- "IfcMaterialProfileSetUsage"
- ):
+ if rel.RelatingMaterial.is_a() in ["IfcMaterialLayerSetUsage", "IfcMaterialProfileSetUsage"]:
self.file.remove(rel.RelatingMaterial)
if len(rel.RelatedObjects) == 1:
self.file.remove(rel)
diff --git a/src/ifcopenshell-python/ifcopenshell/api/owner/add_address.py b/src/ifcopenshell-python/ifcopenshell/api/owner/add_address.py
index 14d2a48fac..4c00df396b 100644
--- a/src/ifcopenshell-python/ifcopenshell/api/owner/add_address.py
+++ b/src/ifcopenshell-python/ifcopenshell/api/owner/add_address.py
@@ -6,6 +6,8 @@ class Usecase:
self.settings[key] = value
def execute(self):
+ address = self.file.create_entity(self.settings["ifc_class"], "OFFICE")
addresses = list(self.settings["assigned_object"].Addresses) if self.settings["assigned_object"].Addresses else []
- addresses.append(self.file.create_entity(self.settings["ifc_class"], "OFFICE"))
+ addresses.append(address)
self.settings["assigned_object"].Addresses = addresses
+ return address
diff --git a/src/ifcopenshell-python/ifcopenshell/api/owner/add_role.py b/src/ifcopenshell-python/ifcopenshell/api/owner/add_role.py
index a934f927bb..c08a3899db 100644
--- a/src/ifcopenshell-python/ifcopenshell/api/owner/add_role.py
+++ b/src/ifcopenshell-python/ifcopenshell/api/owner/add_role.py
@@ -6,6 +6,8 @@ class Usecase:
self.settings[key] = value
def execute(self):
+ element = self.file.createIfcActorRole("ARCHITECT")
roles = list(self.settings["assigned_object"].Roles) if self.settings["assigned_object"].Roles else []
- roles.append(self.file.createIfcActorRole("ARCHITECT"))
+ roles.append(element)
self.settings["assigned_object"].Roles = roles
+ return element
diff --git a/src/ifcopenshell-python/ifcopenshell/api/project/append_asset.py b/src/ifcopenshell-python/ifcopenshell/api/project/append_asset.py
index 76c2bd7e81..b0ea4066b8 100644
--- a/src/ifcopenshell-python/ifcopenshell/api/project/append_asset.py
+++ b/src/ifcopenshell-python/ifcopenshell/api/project/append_asset.py
@@ -13,8 +13,32 @@ class Usecase:
self.added_elements = set()
if self.settings["element"].is_a("IfcTypeProduct"):
return self.append_type_product()
+ elif self.settings["element"].is_a("IfcMaterial"):
+ return self.append_material()
+ elif self.settings["element"].is_a("IfcCostSchedule"):
+ return self.append_cost_schedule()
+
+ def is_already_appended(self):
+ try:
+ self.file.by_guid(self.settings["element"].GlobalId)
+ return True
+ except:
+ return False
+
+ def append_material(self):
+ if [e for e in self.file.by_type("IfcMaterial") if e.Name == self.settings["element"].Name]:
+ return
+ return self.file.add(self.settings["element"])
+
+ def append_cost_schedule(self):
+ if self.is_already_appended():
+ return
+ self.whitelisted_inverse_attributes = {"IfcCostSchedule": ["Controls"], "IfcCostItem": ["IsNestedBy"]}
+ return self.add_element(self.settings["element"])
def append_type_product(self):
+ if self.is_already_appended():
+ return
self.whitelisted_inverse_attributes = {
"IfcObjectDefinition": ["HasAssociations"],
"IfcMaterialDefinition": ["HasExternalReferences", "HasProperties"],
diff --git a/src/ifcopenshell-python/ifcopenshell/api/project/assign_declaration.py b/src/ifcopenshell-python/ifcopenshell/api/project/assign_declaration.py
index ec476df3f2..19a6eab048 100644
--- a/src/ifcopenshell-python/ifcopenshell/api/project/assign_declaration.py
+++ b/src/ifcopenshell-python/ifcopenshell/api/project/assign_declaration.py
@@ -17,6 +17,9 @@ class Usecase:
if self.settings["relating_context"].Declares:
declares = self.settings["relating_context"].Declares[0]
+ if not hasattr(self.settings["definition"], "HasContext"):
+ return
+
has_context = None
if self.settings["definition"].HasContext:
has_context = self.settings["definition"].HasContext[0]
diff --git a/src/ifcopenshell-python/ifcopenshell/api/project/create_file.py b/src/ifcopenshell-python/ifcopenshell/api/project/create_file.py
index a353db9d51..e8bee98ae1 100644
--- a/src/ifcopenshell-python/ifcopenshell/api/project/create_file.py
+++ b/src/ifcopenshell-python/ifcopenshell/api/project/create_file.py
@@ -3,14 +3,18 @@ import ifcopenshell
class Usecase:
- def __init__(self, **settings):
- self.settings = {"version": "IFC4"}
- for key, value in settings.items():
- self.settings[key] = value
+ def __init__(self, version: str = "IFC4"):
+ """Create File
- def execute(self):
+ Create a new IFC file object
+
+ :param version: The schema version of the IFC file. Choose from "IFC2X3" or "IFC4".
+ :return: file: The created IFC file object.
+ """
+ self.settings = {"version": version}
+
+ def execute(self) -> ifcopenshell.file:
self.file = ifcopenshell.file(schema=self.settings["version"])
- # TODO: add all metadata, pending bug #747
self.file.wrapped_data.header.file_name.name = "/dev/null" # Hehehe
self.file.wrapped_data.header.file_name.time_stamp = (
datetime.datetime.utcnow()
@@ -22,5 +26,5 @@ class Usecase:
self.file.wrapped_data.header.file_name.preprocessor_version = "IfcOpenShell {}".format(ifcopenshell.version)
self.file.wrapped_data.header.file_name.originating_system = "IfcOpenShell {}".format(ifcopenshell.version)
self.file.wrapped_data.header.file_name.authorization = "Nobody"
- self.file.wrapped_data.header.file_description.description = ('ViewDefinition[DesignTransferView]',)
+ self.file.wrapped_data.header.file_description.description = ("ViewDefinition[DesignTransferView]",)
return self.file
diff --git a/src/ifcopenshell-python/ifcopenshell/api/pset/data.py b/src/ifcopenshell-python/ifcopenshell/api/pset/data.py
index 0ea2bc6f21..0800938da4 100644
--- a/src/ifcopenshell-python/ifcopenshell/api/pset/data.py
+++ b/src/ifcopenshell-python/ifcopenshell/api/pset/data.py
@@ -22,7 +22,7 @@ class Data:
return
product = file.by_id(product_id)
cls.products[product_id] = {"psets": set(), "qtos": set()}
- if product.is_a("IfcElementType"):
+ if product.is_a("IfcTypeObject"):
cls.add_type_product_psets(product, product_id)
elif product.is_a("IfcMaterialDefinition"):
cls.add_material_psets(product, product_id)
diff --git a/src/ifcopenshell-python/ifcopenshell/api/pset/edit_pset.py b/src/ifcopenshell-python/ifcopenshell/api/pset/edit_pset.py
index 7507708917..dc4d2f6c35 100644
--- a/src/ifcopenshell-python/ifcopenshell/api/pset/edit_pset.py
+++ b/src/ifcopenshell-python/ifcopenshell/api/pset/edit_pset.py
@@ -5,7 +5,7 @@ import ifcopenshell.util.pset
class Usecase:
def __init__(self, file, **settings):
self.file = file
- self.settings = {"pset": None, "name": None, "properties": {}}
+ self.settings = {"pset": None, "name": None, "properties": {}, "pset_template": None}
for key, value in settings.items():
self.settings[key] = value
@@ -21,9 +21,12 @@ class Usecase:
self.settings["pset"].Name = self.settings["name"]
def load_pset_template(self):
- # TODO: add IFC2X3 PsetQto template support
- self.psetqto = ifcopenshell.util.pset.get_template("IFC4")
- self.pset_template = self.psetqto.get_by_name(self.settings["pset"].Name)
+ if self.settings["pset_template"]:
+ self.pset_template = self.settings["pset_template"]
+ else:
+ # TODO: add IFC2X3 PsetQto template support
+ self.psetqto = ifcopenshell.util.pset.get_template("IFC4")
+ self.pset_template = self.psetqto.get_by_name(self.settings["pset"].Name)
def update_existing_properties(self):
for prop in self.get_properties():
diff --git a/src/ifcopenshell-python/ifcopenshell/api/resource/add_resource.py b/src/ifcopenshell-python/ifcopenshell/api/resource/add_resource.py
index 3ef741ae6c..63c9be21c7 100644
--- a/src/ifcopenshell-python/ifcopenshell/api/resource/add_resource.py
+++ b/src/ifcopenshell-python/ifcopenshell/api/resource/add_resource.py
@@ -19,7 +19,7 @@ class Usecase:
self.file,
ifc_class=self.settings["ifc_class"],
predefined_type=self.settings["predefined_type"],
- name=self.settings["name"],
+ name=self.settings["name"] or "Unammed",
)
# TODO: this is an ambiguity by buildingSMART: Can we nest an IfcCrewResource under an IfcCrewResource ?
# https://forums.buildingsmart.org/t/what-are-allowed-to-be-root-level-construction-resources/3550
diff --git a/src/ifcopenshell-python/ifcopenshell/api/resource/add_resource_time.py b/src/ifcopenshell-python/ifcopenshell/api/resource/add_resource_time.py
new file mode 100644
index 0000000000..fa2553b723
--- /dev/null
+++ b/src/ifcopenshell-python/ifcopenshell/api/resource/add_resource_time.py
@@ -0,0 +1,15 @@
+import ifcopenshell.util.date
+
+class Usecase:
+ def __init__(self, file, **settings):
+ self.file = file
+ self.settings = {
+ "resource": None,
+ }
+ for key, value in settings.items():
+ self.settings[key] = value
+
+ def execute(self):
+ resource_time = self.file.create_entity("IfcResourceTime")
+ self.settings["resource"].Usage = resource_time
+ return resource_time
diff --git a/src/ifcopenshell-python/ifcopenshell/api/resource/data.py b/src/ifcopenshell-python/ifcopenshell/api/resource/data.py
index eec9223e6f..b917e18920 100644
--- a/src/ifcopenshell-python/ifcopenshell/api/resource/data.py
+++ b/src/ifcopenshell-python/ifcopenshell/api/resource/data.py
@@ -1,23 +1,57 @@
+import ifcopenshell
+import ifcopenshell.util.date
+
+
class Data:
is_loaded = False
resources = {}
+ resource_times = {}
@classmethod
def purge(cls):
+ cls.is_loaded = False
cls.resources = {}
+ cls.resource_times = {}
@classmethod
def load(cls, file):
+ cls._file = file
+ if not cls._file:
+ return
+ cls.load_resources()
+ cls.load_resource_times()
+ cls.is_loaded=True
+
+ @classmethod
+ def load_resources(cls):
cls.resources = {}
- for resource in file.by_type("IfcResource"):
+ for resource in cls._file.by_type("IfcResource"):
data = resource.get_info()
del data["OwnerHistory"]
data["IsNestedBy"] = []
for rel in resource.IsNestedBy:
[data["IsNestedBy"].append(o.id()) for o in rel.RelatedObjects]
+ data["Nests"] = []
+ for rel in resource.Nests:
+ [data["Nests"].append(rel.RelatingObject.id())]
data["ResourceOf"] = []
for rel in resource.ResourceOf:
[data["ResourceOf"].append(o.id()) for o in rel.RelatedObjects]
data["HasContext"] = resource.HasContext[0].RelatingContext.id() if resource.HasContext else None
+ if resource.Usage:
+ data["Usage"] = data["Usage"].id()
cls.resources[resource.id()] = data
- cls.is_loaded=True
+
+ @classmethod
+ def load_resource_times(cls):
+ cls.resource_times = {}
+ for resource_time in cls._file.by_type("IfcResourceTime"):
+ data = resource_time.get_info()
+ for key, value in data.items():
+ if not value:
+ continue
+ if "Start" in key or "Finish" in key or key == "StatusTime":
+ data[key] = ifcopenshell.util.date.ifc2datetime(value)
+ elif "Work" in key or key =="LevelingDelay":
+ data[key] = ifcopenshell.util.date.ifc2datetime(value)
+ cls.resource_times[resource_time.id()] = data
diff --git a/src/ifcopenshell-python/ifcopenshell/api/resource/edit_resource_time.py b/src/ifcopenshell-python/ifcopenshell/api/resource/edit_resource_time.py
new file mode 100644
index 0000000000..b56d8c2947
--- /dev/null
+++ b/src/ifcopenshell-python/ifcopenshell/api/resource/edit_resource_time.py
@@ -0,0 +1,36 @@
+import datetime
+import ifcopenshell.util.date
+
+
+class Usecase:
+ def __init__(self, file, **settings):
+ self.file = file
+ self.settings = {"resource_time": None, "attributes": {}}
+ for key, value in settings.items():
+ self.settings[key] = value
+
+ def execute(self):
+ self.resource = self.get_resource()
+
+ # If the user specifies both an end date and a duration, the duration takes priority
+ if (
+ self.settings["attributes"].get("ScheduleWork", None)
+ and "ScheduleFinish" in self.settings["attributes"].keys()
+ ):
+ del self.settings["attributes"]["ScheduleFinish"]
+ if (
+ self.settings["attributes"].get("ActualWork", None)
+ and "ActualFinish" in self.settings["attributes"].keys()
+ ):
+ del self.settings["attributes"]["ActualFinish"]
+
+ for name, value in self.settings["attributes"].items():
+ if value:
+ if "Start" in name or "Finish" in name or name == "StatusTime":
+ value = ifcopenshell.util.date.datetime2ifc(value, "IfcDateTime")
+ elif name == "ScheduleWork" or name == "ActualWork" or name == "RemainingTime":
+ value = ifcopenshell.util.date.datetime2ifc(value, "IfcDuration")
+ setattr(self.settings["resource_time"], name, value)
+
+ def get_resource(self):
+ return [e for e in self.file.get_inverse(self.settings["resource_time"]) if e.is_a("IfcResource")][0]
diff --git a/src/ifcopenshell-python/ifcopenshell/api/root/copy_class.py b/src/ifcopenshell-python/ifcopenshell/api/root/copy_class.py
index 9300ebd0e6..74a7084168 100644
--- a/src/ifcopenshell-python/ifcopenshell/api/root/copy_class.py
+++ b/src/ifcopenshell-python/ifcopenshell/api/root/copy_class.py
@@ -1,4 +1,5 @@
import ifcopenshell
+import ifcopenshell.util.element
class Usecase:
@@ -9,29 +10,33 @@ class Usecase:
self.settings[key] = value
def execute(self):
- result = self.file.create_entity(self.settings["product"].is_a())
self.schema = ifcopenshell.ifcopenshell_wrapper.schema_by_name(self.file.schema)
- self.copy_attributes(self.settings["product"], result)
- for inverse in self.file.get_inverse(self.settings["product"]):
- for i, value in enumerate(inverse):
- if value == self.settings["product"]:
- new_inverse = self.file.create_entity(inverse.is_a())
- self.copy_attributes(inverse, new_inverse)
- new_inverse[i] = result
- elif isinstance(value, (tuple, list)) and self.settings["product"] in value:
- new_value = list(value)
- new_value.append(result)
- inverse[i] = new_value
- if result.is_a("IfcProduct"):
- result.Representation = None
- elif result.is_a("IfcTypeProduct"):
- result.RepresentationMaps = None
+ result = ifcopenshell.util.element.copy(self.file, self.settings["product"])
+ self.copy_indirect_attributes(self.settings["product"], result)
+ # Copying representations is too hard, so for now we just don't do it.
+ self.remove_representations(result)
return result
- def copy_attributes(self, from_element, to_element):
- declaration = self.schema.declaration_by_name(from_element.is_a())
- for attribute in declaration.all_attributes():
- if attribute.name() == "GlobalId":
- setattr(to_element, attribute.name(), ifcopenshell.guid.new())
+ def copy_indirect_attributes(self, from_element, to_element):
+ for inverse in self.file.get_inverse(from_element):
+ if inverse.is_a("IfcRelDefinesByProperties"):
+ inverse = ifcopenshell.util.element.copy(self.file, inverse)
+ inverse.RelatedObjects = [to_element]
+ pset = ifcopenshell.util.element.copy_deep(self.file, inverse.RelatingPropertyDefinition)
+ inverse.RelatingPropertyDefinition = pset
else:
- setattr(to_element, attribute.name(), getattr(from_element, attribute.name()))
+ # TODO: Consider whether this general approach is good or not. Maybe it isn't.
+ for i, value in enumerate(inverse):
+ if value == from_element:
+ new_inverse = ifcopenshell.util.element.copy(self.file, inverse)
+ new_inverse[i] = to_element
+ elif isinstance(value, (tuple, list)) and from_element in value:
+ new_value = list(value)
+ new_value.append(to_element)
+ inverse[i] = new_value
+
+ def remove_representations(self, element):
+ if element.is_a("IfcProduct"):
+ element.Representation = None
+ elif element.is_a("IfcTypeProduct"):
+ element.RepresentationMaps = None
diff --git a/src/ifcopenshell-python/ifcopenshell/api/root/create_entity.py b/src/ifcopenshell-python/ifcopenshell/api/root/create_entity.py
index 93dc11d907..b0ed4132a2 100644
--- a/src/ifcopenshell-python/ifcopenshell/api/root/create_entity.py
+++ b/src/ifcopenshell-python/ifcopenshell/api/root/create_entity.py
@@ -25,7 +25,10 @@ class Usecase:
element.PredefinedType = self.settings["predefined_type"]
except:
element.PredefinedType = "USERDEFINED"
- element.ObjectType = self.settings["predefined_type"]
+ if hasattr(element, "ObjectType"):
+ element.ObjectType = self.settings["predefined_type"]
+ elif hasattr(element, "ElementType"):
+ element.ElementType = self.settings["predefined_type"]
elif hasattr(element, "ObjectType"):
element.ObjectType = self.settings["predefined_type"]
if self.file.schema == "IFC2X3":
diff --git a/src/ifcopenshell-python/ifcopenshell/api/sequence/cascade_schedule.py b/src/ifcopenshell-python/ifcopenshell/api/sequence/cascade_schedule.py
index 1efc2aef3f..bbe679bbf3 100644
--- a/src/ifcopenshell-python/ifcopenshell/api/sequence/cascade_schedule.py
+++ b/src/ifcopenshell-python/ifcopenshell/api/sequence/cascade_schedule.py
@@ -12,9 +12,9 @@ class Usecase:
def execute(self):
self.calendar_cache = {}
- self.cascade_task(self.settings["task"])
+ self.cascade_task(self.settings["task"], is_first_task=True)
- def cascade_task(self, task):
+ def cascade_task(self, task, is_first_task=False):
if not task.TaskTime:
return
@@ -88,13 +88,13 @@ class Usecase:
)
if potential_finish > finish:
start_ifc = ifcopenshell.util.date.datetime2ifc(start, "IfcDateTime")
- if task.TaskTime.ScheduleStart == start_ifc:
+ if task.TaskTime.ScheduleStart == start_ifc and not is_first_task:
return
task.TaskTime.ScheduleStart = start_ifc
task.TaskTime.ScheduleFinish = ifcopenshell.util.date.datetime2ifc(potential_finish, "IfcDateTime")
else:
finish_ifc = ifcopenshell.util.date.datetime2ifc(finish, "IfcDateTime")
- if task.TaskTime.ScheduleFinish == finish_ifc:
+ if task.TaskTime.ScheduleFinish == finish_ifc and not is_first_task:
return
task.TaskTime.ScheduleFinish = finish_ifc
task.TaskTime.ScheduleStart = ifcopenshell.util.date.datetime2ifc(
@@ -109,7 +109,7 @@ class Usecase:
elif finishes:
finish = max(finishes)
finish_ifc = ifcopenshell.util.date.datetime2ifc(finish, "IfcDateTime")
- if task.TaskTime.ScheduleFinish == finish_ifc:
+ if task.TaskTime.ScheduleFinish == finish_ifc and not is_first_task:
return
task.TaskTime.ScheduleFinish = finish_ifc
task.TaskTime.ScheduleStart = ifcopenshell.util.date.datetime2ifc(
@@ -124,7 +124,7 @@ class Usecase:
elif starts:
start = max(starts)
start_ifc = ifcopenshell.util.date.datetime2ifc(start, "IfcDateTime")
- if task.TaskTime.ScheduleStart == start_ifc:
+ if task.TaskTime.ScheduleStart == start_ifc and not is_first_task:
return
task.TaskTime.ScheduleStart = start_ifc
task.TaskTime.ScheduleFinish = ifcopenshell.util.date.datetime2ifc(
diff --git a/src/ifcopenshell-python/ifcopenshell/api/sequence/edit_task_time.py b/src/ifcopenshell-python/ifcopenshell/api/sequence/edit_task_time.py
index f332265eb9..9204323477 100644
--- a/src/ifcopenshell-python/ifcopenshell/api/sequence/edit_task_time.py
+++ b/src/ifcopenshell-python/ifcopenshell/api/sequence/edit_task_time.py
@@ -16,12 +16,12 @@ class Usecase:
# If the user specifies both an end date and a duration, the duration takes priority
if (
- "ScheduleDuration" in self.settings["attributes"].keys()
+ self.settings["attributes"].get("ScheduleDuration", None)
and "ScheduleFinish" in self.settings["attributes"].keys()
):
del self.settings["attributes"]["ScheduleFinish"]
if (
- "ActualDuration" in self.settings["attributes"].keys()
+ self.settings["attributes"].get("ActualDuration", None)
and "ActualFinish" in self.settings["attributes"].keys()
):
del self.settings["attributes"]["ActualFinish"]
diff --git a/src/ifcopenshell-python/ifcopenshell/api/spatial/remove_container.py b/src/ifcopenshell-python/ifcopenshell/api/spatial/remove_container.py
index 57a5399980..88a561cc58 100644
--- a/src/ifcopenshell-python/ifcopenshell/api/spatial/remove_container.py
+++ b/src/ifcopenshell-python/ifcopenshell/api/spatial/remove_container.py
@@ -11,12 +11,13 @@ class Usecase:
def execute(self):
contained_in_structure = self.settings["product"].ContainedInStructure
+ if not contained_in_structure:
+ return
- if contained_in_structure:
- related_elements = list(contained_in_structure[0].RelatedElements)
- related_elements.remove(self.settings["product"])
- if related_elements:
- contained_in_structure[0].RelatedElements = related_elements
- ifcopenshell.api.run("owner.update_owner_history", self.file, **{"element": contained_in_structure[0]})
- else:
- self.file.remove(contained_in_structure)
+ related_elements = list(contained_in_structure[0].RelatedElements)
+ related_elements.remove(self.settings["product"])
+ if related_elements:
+ contained_in_structure[0].RelatedElements = related_elements
+ ifcopenshell.api.run("owner.update_owner_history", self.file, **{"element": contained_in_structure[0]})
+ else:
+ self.file.remove(contained_in_structure[0])
diff --git a/src/ifcopenshell-python/ifcopenshell/api/style/edit_style_colours.py b/src/ifcopenshell-python/ifcopenshell/api/style/edit_style_colours.py
index e5083ff97f..abb1e9a4ea 100644
--- a/src/ifcopenshell-python/ifcopenshell/api/style/edit_style_colours.py
+++ b/src/ifcopenshell-python/ifcopenshell/api/style/edit_style_colours.py
@@ -23,7 +23,7 @@ class Usecase:
self.update_colour_rgb(element.SurfaceColour, self.settings["surface_colour"])
else:
element.SurfaceColour = self.create_colour_rgb(self.settings["surface_colour"])
- element.Transparency = (self.settings["transparency"] - 1) * -1
+ element.Transparency = self.settings["transparency"]
if element.is_a("IfcSurfaceStyleRendering"):
if element.DiffuseColour:
self.update_colour_rgb(element.DiffuseColour, self.settings["diffuse_colour"])
@@ -44,7 +44,7 @@ class Usecase:
def create_surface_style_rendering(self):
return self.file.create_entity("IfcSurfaceStyleRendering", **{
"SurfaceColour": self.create_colour_rgb(self.settings["surface_colour"]),
- "Transparency": (self.settings["transparency"] - 1) * -1,
+ "Transparency": self.settings["transparency"],
"ReflectanceMethod": "NOTDEFINED",
"DiffuseColour": self.create_colour_rgb(self.settings["diffuse_colour"])
})
diff --git a/src/ifcopenshell-python/ifcopenshell/api/system/add_system.py b/src/ifcopenshell-python/ifcopenshell/api/system/add_system.py
new file mode 100644
index 0000000000..b3226724c5
--- /dev/null
+++ b/src/ifcopenshell-python/ifcopenshell/api/system/add_system.py
@@ -0,0 +1,17 @@
+import ifcopenshell
+import ifcopenshell.api
+
+
+class Usecase:
+ def __init__(self, file, **settings):
+ self.file = file
+ self.settings = {}
+ for key, value in settings.items():
+ self.settings[key] = value
+
+ def execute(self):
+ return self.file.create_entity("IfcSystem", **{
+ "GlobalId": ifcopenshell.guid.new(),
+ "OwnerHistory": ifcopenshell.api.run("owner.create_owner_history", self.file),
+ "Name": "Unnamed"
+ })
diff --git a/src/ifcopenshell-python/ifcopenshell/api/system/assign_system.py b/src/ifcopenshell-python/ifcopenshell/api/system/assign_system.py
new file mode 100644
index 0000000000..265afac4bd
--- /dev/null
+++ b/src/ifcopenshell-python/ifcopenshell/api/system/assign_system.py
@@ -0,0 +1,27 @@
+import ifcopenshell
+import ifcopenshell.api
+
+
+class Usecase:
+ def __init__(self, file, **settings):
+ self.file = file
+ self.settings = {
+ "product": None,
+ "system": None,
+ }
+ for key, value in settings.items():
+ self.settings[key] = value
+
+ def execute(self):
+ if not self.settings["system"].IsGroupedBy:
+ return self.file.create_entity("IfcRelAssignsToGroup", **{
+ "GlobalId": ifcopenshell.guid.new(),
+ "OwnerHistory": ifcopenshell.api.run("owner.create_owner_history", self.file),
+ "RelatedObjects": [self.settings["product"]],
+ "RelatingGroup": self.settings["system"]
+ })
+ rel = self.settings["system"].IsGroupedBy[0]
+ related_objects = set(rel.RelatedObjects) or set()
+ related_objects.add(self.settings["product"])
+ rel.RelatedObjects = list(related_objects)
+ ifcopenshell.api.run("owner.update_owner_history", self.file, **{"element": rel})
diff --git a/src/ifcopenshell-python/ifcopenshell/api/system/data.py b/src/ifcopenshell-python/ifcopenshell/api/system/data.py
new file mode 100644
index 0000000000..2a171f6a50
--- /dev/null
+++ b/src/ifcopenshell-python/ifcopenshell/api/system/data.py
@@ -0,0 +1,24 @@
+class Data:
+ is_loaded = False
+ products = {}
+ systems = {}
+
+ @classmethod
+ def purge(cls):
+ cls.is_loaded = False
+ cls.products = {}
+ cls.systems = {}
+
+ @classmethod
+ def load(cls, file):
+ cls.products = {}
+ cls.systems = {}
+ for system in file.by_type("IfcSystem", include_subtypes=False):
+ if system.IsGroupedBy:
+ for rel in system.IsGroupedBy:
+ for product in rel.RelatedObjects:
+ cls.products.setdefault(product.id(), []).append(system.id())
+ data = system.get_info()
+ del data["OwnerHistory"]
+ cls.systems[system.id()] = data
+ cls.is_loaded=True
diff --git a/src/ifcopenshell-python/ifcopenshell/api/system/edit_system.py b/src/ifcopenshell-python/ifcopenshell/api/system/edit_system.py
new file mode 100644
index 0000000000..734e9937c3
--- /dev/null
+++ b/src/ifcopenshell-python/ifcopenshell/api/system/edit_system.py
@@ -0,0 +1,13 @@
+class Usecase:
+ def __init__(self, file, **settings):
+ self.file = file
+ self.settings = {
+ "system": None,
+ "attributes": {}
+ }
+ for key, value in settings.items():
+ self.settings[key] = value
+
+ def execute(self):
+ for name, value in self.settings["attributes"].items():
+ setattr(self.settings["system"], name, value)
diff --git a/src/ifcopenshell-python/ifcopenshell/api/system/remove_system.py b/src/ifcopenshell-python/ifcopenshell/api/system/remove_system.py
new file mode 100644
index 0000000000..9cc1a6ec93
--- /dev/null
+++ b/src/ifcopenshell-python/ifcopenshell/api/system/remove_system.py
@@ -0,0 +1,11 @@
+class Usecase:
+ def __init__(self, file, **settings):
+ self.file = file
+ self.settings = {"system": None}
+ for key, value in settings.items():
+ self.settings[key] = value
+
+ def execute(self):
+ for rel in self.settings["system"].IsGroupedBy or []:
+ self.file.remove(rel)
+ self.file.remove(self.settings["system"])
diff --git a/src/ifcopenshell-python/ifcopenshell/api/system/unassign_system.py b/src/ifcopenshell-python/ifcopenshell/api/system/unassign_system.py
new file mode 100644
index 0000000000..d072f74623
--- /dev/null
+++ b/src/ifcopenshell-python/ifcopenshell/api/system/unassign_system.py
@@ -0,0 +1,25 @@
+import ifcopenshell
+import ifcopenshell.api
+
+
+class Usecase:
+ def __init__(self, file, **settings):
+ self.file = file
+ self.settings = {
+ "product": None,
+ "system": None,
+ }
+ for key, value in settings.items():
+ self.settings[key] = value
+
+ def execute(self):
+ if not self.settings["system"].IsGroupedBy:
+ return
+ rel = self.settings["system"].IsGroupedBy[0]
+ related_objects = set(rel.RelatedObjects) or set()
+ related_objects.remove(self.settings["product"])
+ if len(related_objects):
+ rel.RelatedObjects = list(related_objects)
+ ifcopenshell.api.run("owner.update_owner_history", self.file, **{"element": rel})
+ else:
+ self.file.remove(rel)
diff --git a/src/ifcopenshell-python/ifcopenshell/api/type/data.py b/src/ifcopenshell-python/ifcopenshell/api/type/data.py
index ac8cd509aa..93eb65bffe 100644
--- a/src/ifcopenshell-python/ifcopenshell/api/type/data.py
+++ b/src/ifcopenshell-python/ifcopenshell/api/type/data.py
@@ -1,18 +1,40 @@
class Data:
products = {}
+ types = {}
@classmethod
def purge(cls):
cls.products = {}
+ cls.types = {}
@classmethod
def load(cls, file, product_id):
if not file:
return
+ cls.file = file
product = file.by_id(product_id)
- if file.schema == "IFC2X3" and not hasattr(product, "IsDefinedBy"):
+ if product.is_a("IfcTypeObject"):
+ cls.load_type(product_id)
+ else:
+ cls.load_product(product_id)
+
+ @classmethod
+ def load_type(cls, product_id):
+ product = cls.file.by_id(product_id)
+ cls.types[product_id] = None
+ if cls.file.schema == "IFC2X3":
+ if getattr(product, "ObjectTypeOf", None):
+ cls.types[product_id] = [o.id() for o in product.ObjectTypeOf[0].RelatedObjects]
+ else:
+ if getattr(product, "Types", None):
+ cls.types[product_id] = [o.id() for o in product.Types[0].RelatedObjects]
+
+ @classmethod
+ def load_product(cls, product_id):
+ product = cls.file.by_id(product_id)
+ if cls.file.schema == "IFC2X3" and not hasattr(product, "IsDefinedBy"):
cls.products[product_id] = None
- elif file.schema != "IFC2X3" and not hasattr(product, "IsTypedBy"):
+ elif cls.file.schema != "IFC2X3" and not hasattr(product, "IsTypedBy"):
cls.products[product_id] = None
elif hasattr(product, "IsTypedBy") and product.IsTypedBy:
type = product.IsTypedBy[0].RelatingType
diff --git a/src/ifcopenshell-python/ifcopenshell/api/unit/add_monetary_unit.py b/src/ifcopenshell-python/ifcopenshell/api/unit/add_monetary_unit.py
new file mode 100644
index 0000000000..6091496dd6
--- /dev/null
+++ b/src/ifcopenshell-python/ifcopenshell/api/unit/add_monetary_unit.py
@@ -0,0 +1,9 @@
+class Usecase:
+ def __init__(self, file, **settings):
+ self.file = file
+ self.settings = {"currency": "DOLLARYDOO"}
+ for key, value in settings.items():
+ self.settings[key] = value
+
+ def execute(self):
+ return self.file.create_entity("IfcMonetaryUnit", self.settings["currency"])
diff --git a/src/ifcopenshell-python/ifcopenshell/api/unit/assign_unit.py b/src/ifcopenshell-python/ifcopenshell/api/unit/assign_unit.py
index bedebcb3eb..8ae42c7f53 100644
--- a/src/ifcopenshell-python/ifcopenshell/api/unit/assign_unit.py
+++ b/src/ifcopenshell-python/ifcopenshell/api/unit/assign_unit.py
@@ -1,44 +1,55 @@
+import ifcopenshell
import ifcopenshell.util.unit
-class Usecase():
+class Usecase:
def __init__(self, file, **settings):
self.file = file
self.settings = {
- "length": {
- "is_metric": True,
- "raw": "MILLIMETERS"
- },
- "area": {
- "is_metric": True,
- "raw": "METERS"
- },
- "volume": {
- "is_metric": True,
- "raw": "METERS"
- },
+ "units": None,
+ "length": {"is_metric": True, "raw": "MILLIMETERS"},
+ "area": {"is_metric": True, "raw": "METERS"},
+ "volume": {"is_metric": True, "raw": "METERS"},
}
for key, value in settings.items():
self.settings[key] = value
def execute(self):
- for unit_type, data in self.settings.items():
- if data["is_metric"]:
- data["ifc"] = self.create_metric_unit(unit_type, data)
- else:
- data["ifc"] = self.create_imperial_unit(unit_type, data)
+ # We're going to refactor this to split unit creation and assignment
+ if self.settings["units"]:
+ units = self.settings["units"]
+ else:
+ del self.settings["units"] # TODO refactor
+ units = []
+ for unit_type, data in self.settings.items():
+ if data["is_metric"]:
+ units.append(self.create_metric_unit(unit_type, data))
+ else:
+ units.append(self.create_imperial_unit(unit_type, data))
+
+ unit_assignment = self.get_unit_assignment()
+ self.assign_units(unit_assignment, units)
+ return unit_assignment
+
+ def get_unit_assignment(self):
unit_assignment = self.file.by_type("IfcUnitAssignment")
if unit_assignment:
unit_assignment = unit_assignment[0]
# TODO: handle unit rewriting, which is complicated
else:
- unit_assignment = self.file.createIfcUnitAssignment([u["ifc"] for u in self.settings.values()])
+ unit_assignment = self.file.createIfcUnitAssignment()
if self.file.schema == "IFC2X3":
self.file.by_type("IfcProject")[0].UnitsInContext = unit_assignment
else:
self.file.by_type("IfcContext")[0].UnitsInContext = unit_assignment
return unit_assignment
+ def assign_units(self, unit_assignment, new_units):
+ units = set(unit_assignment.Units or [])
+ for unit in new_units:
+ units.add(unit)
+ unit_assignment.Units = list(units)
+
def create_metric_unit(self, unit_type, data):
type_prefix = ""
if unit_type == "area":
@@ -72,7 +83,9 @@ class Usecase():
name = "{}inch".format(name_prefix + " " if name_prefix else "")
elif data["raw"] == "FEET":
name = "{}foot".format(name_prefix + " " if name_prefix else "")
- value_component = self.file.create_entity("IfcReal", **{"wrappedValue": ifcopenshell.util.unit.si_conversions[name]})
+ value_component = self.file.create_entity(
+ "IfcReal", **{"wrappedValue": ifcopenshell.util.unit.si_conversions[name]}
+ )
conversion_factor = self.file.createIfcMeasureWithUnit(value_component, si_unit)
return self.file.createIfcConversionBasedUnit(
dimensional_exponents, "{}UNIT".format(unit_type.upper()), name, conversion_factor
diff --git a/src/ifcopenshell-python/ifcopenshell/api/unit/data.py b/src/ifcopenshell-python/ifcopenshell/api/unit/data.py
index 8b71dad1b4..893b302cff 100644
--- a/src/ifcopenshell-python/ifcopenshell/api/unit/data.py
+++ b/src/ifcopenshell-python/ifcopenshell/api/unit/data.py
@@ -1,3 +1,7 @@
+import ifcopenshell
+import ifcopenshell.util.unit
+
+
class Data:
is_loaded = False
units = {}
@@ -5,16 +9,43 @@ class Data:
@classmethod
def purge(cls):
cls.is_loaded = False
+ cls.unit_assignment = []
cls.units = {}
@classmethod
def load(cls, file):
if not file:
return
- unit_assignment = file.by_type("IfcUnitAssignment")
+ cls.file = file
+ cls.unit_assignment = []
+ cls.units = {}
+ unit_assignment = cls.file.by_type("IfcUnitAssignment")
if not unit_assignment:
return
for unit in unit_assignment[0].Units:
- pass
- # TODO: implement along with UI
+ cls.unit_assignment.append(unit.id())
+ cls.load_unit(unit)
cls.is_loaded = True
+
+ @classmethod
+ def load_unit(cls, unit):
+ if unit.is_a("IfcDerivedUnit"):
+ data = unit.get_info()
+ data["Elements"] = [{"Unit": e.Unit.id(), "Exponent": e.Exponent} for e in unit.Elements]
+ for element in unit.Elements:
+ cls.load_unit(element.Unit)
+ cls.units[unit.id()] = data
+ elif unit.is_a("IfcNamedUnit"):
+ data = unit.get_info()
+ if unit.is_a("IfcSIUnit"):
+ data["Dimensions"] = ifcopenshell.util.unit.get_si_dimensions(unit.Name)
+ else:
+ data["Dimensions"] = unit.Dimensions.get_info()
+ if unit.is_a("IfcConversionBasedUnit"):
+ conversion_factor = unit.ConversionFactor.get_info()
+ cls.load_unit(unit.ConversionFactor.UnitComponent)
+ conversion_factor["UnitComponent"] = unit.ConversionFactor.UnitComponent.id()
+ data["ConversionFactor"] = conversion_factor
+ cls.units[unit.id()] = data
+ elif unit.is_a("IfcMonetaryUnit"):
+ cls.units[unit.id()] = unit.get_info()
diff --git a/src/ifcopenshell-python/ifcopenshell/api/unit/edit_derived_unit.py b/src/ifcopenshell-python/ifcopenshell/api/unit/edit_derived_unit.py
new file mode 100644
index 0000000000..65f8cc871e
--- /dev/null
+++ b/src/ifcopenshell-python/ifcopenshell/api/unit/edit_derived_unit.py
@@ -0,0 +1,10 @@
+class Usecase:
+ def __init__(self, file, **settings):
+ self.file = file
+ self.settings = {"unit": None, "attributes": {}}
+ for key, value in settings.items():
+ self.settings[key] = value
+
+ def execute(self):
+ for name, value in self.settings["attributes"].items():
+ setattr(self.settings["unit"], name, value)
diff --git a/src/ifcopenshell-python/ifcopenshell/api/unit/edit_monetary_unit.py b/src/ifcopenshell-python/ifcopenshell/api/unit/edit_monetary_unit.py
new file mode 100644
index 0000000000..65f8cc871e
--- /dev/null
+++ b/src/ifcopenshell-python/ifcopenshell/api/unit/edit_monetary_unit.py
@@ -0,0 +1,10 @@
+class Usecase:
+ def __init__(self, file, **settings):
+ self.file = file
+ self.settings = {"unit": None, "attributes": {}}
+ for key, value in settings.items():
+ self.settings[key] = value
+
+ def execute(self):
+ for name, value in self.settings["attributes"].items():
+ setattr(self.settings["unit"], name, value)
diff --git a/src/ifcopenshell-python/ifcopenshell/api/unit/edit_named_unit.py b/src/ifcopenshell-python/ifcopenshell/api/unit/edit_named_unit.py
new file mode 100644
index 0000000000..65f8cc871e
--- /dev/null
+++ b/src/ifcopenshell-python/ifcopenshell/api/unit/edit_named_unit.py
@@ -0,0 +1,10 @@
+class Usecase:
+ def __init__(self, file, **settings):
+ self.file = file
+ self.settings = {"unit": None, "attributes": {}}
+ for key, value in settings.items():
+ self.settings[key] = value
+
+ def execute(self):
+ for name, value in self.settings["attributes"].items():
+ setattr(self.settings["unit"], name, value)
diff --git a/src/ifcopenshell-python/ifcopenshell/api/unit/remove_unit.py b/src/ifcopenshell-python/ifcopenshell/api/unit/remove_unit.py
new file mode 100644
index 0000000000..949bf919e5
--- /dev/null
+++ b/src/ifcopenshell-python/ifcopenshell/api/unit/remove_unit.py
@@ -0,0 +1,18 @@
+import ifcopenshell.util.element
+
+
+class Usecase():
+ def __init__(self, file, **settings):
+ self.file = file
+ self.settings = {"unit": None}
+ for key, value in settings.items():
+ self.settings[key] = value
+
+ def execute(self):
+ unit_assignment = self.file.by_type("IfcUnitAssignment")[0]
+ units = list(unit_assignment.Units)
+ units.remove(self.settings["unit"])
+ if not units:
+ return
+ unit_assignment.Units = units
+ ifcopenshell.util.element.remove_deep(self.file, self.settings["unit"])
diff --git a/src/ifcopenshell-python/ifcopenshell/express/templates.py b/src/ifcopenshell-python/ifcopenshell/express/templates.py
index d1431d24f5..53b0dc706b 100644
--- a/src/ifcopenshell-python/ifcopenshell/express/templates.py
+++ b/src/ifcopenshell-python/ifcopenshell/express/templates.py
@@ -176,12 +176,14 @@ const IfcParse::enumeration_type& %(schema_name)s::%(name)s::Class() { return *%
}
%(schema_name)s::%(name)s::%(name)s(Value v) {
+ data_ = new IfcEntityInstanceData(%(schema_name_upper)s_%(name)s_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
%(schema_name)s::%(name)s::%(name)s(const std::string& v) {
+ data_ = new IfcEntityInstanceData(%(schema_name_upper)s_%(name)s_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
diff --git a/src/ifcopenshell-python/ifcopenshell/file.py b/src/ifcopenshell-python/ifcopenshell/file.py
index 2963cf662b..e4935a611d 100644
--- a/src/ifcopenshell-python/ifcopenshell/file.py
+++ b/src/ifcopenshell-python/ifcopenshell/file.py
@@ -264,19 +264,44 @@ class file(object):
eid = kwargs.pop("id", -1)
except:
pass
+
e = entity_instance((self.schema, type), self)
- self.wrapped_data.add(e.wrapped_data, eid)
- e.wrapped_data.this.disown()
+
+ # Create pairs of {attribute index, attribute value}.
+ # Keyword arguments are mapped to their corresponding
+ # numeric index with get_argument_index().
+
+ # @todo we should probably check that values for
+ # attributes are not passed as duplicates using
+ # both regular arguments and keyword arguments.
attrs = list(enumerate(args)) + [(e.wrapped_data.get_argument_index(name), arg) for name, arg in kwargs.items()]
+
+ # Don't store these attributes as transactions
+ # as the creation it self is already stored with
+ # it's arguments
if attrs:
transaction = self.transaction
self.transaction = None
+
for idx, arg in attrs:
e[idx] = arg
+
+ # Restore transaction status
if attrs:
self.transaction = transaction
+
+ # Once the values are populated add the instance
+ # to the file.
+ self.wrapped_data.add(e.wrapped_data, eid)
+
+ # The file container now handles the lifetime of
+ # this instance. Tell SWIG that it is no longer
+ # the owner.
+ e.wrapped_data.this.disown()
+
if self.transaction:
self.transaction.store_create(e)
+
return e
def __getattr__(self, attr):
diff --git a/src/ifcopenshell-python/ifcopenshell/geom/main.py b/src/ifcopenshell-python/ifcopenshell/geom/main.py
index d61dd339ec..49f4274e55 100644
--- a/src/ifcopenshell-python/ifcopenshell/geom/main.py
+++ b/src/ifcopenshell-python/ifcopenshell/geom/main.py
@@ -184,6 +184,9 @@ def create_shape(settings, inst, repr=None):
or
Return an OpenCASCADE BRep if settings.USE_PYTHON_OPENCASCADE == True
+ Note that in Python, you must store a reference to the element returned by this function to prevent garbage
+ collection when you access its children. See #1124.
+
example:
settings = ifcopenshell.geom.settings()
@@ -195,9 +198,12 @@ def create_shape(settings, inst, repr=None):
for i, product in enumerate(products):
if product.Representation is not None:
try:
- shape = geom.create_shape(settings, inst=product).geometry
+ created_shape = geom.create_shape(settings, inst=product)
+ shape = created_shape.geometry # see #1124
shape_gpXYZ = shape.Location().Transformation().TranslationPart() # These are methods of the TopoDS_Shape class from pythonOCC
print(shape_gpXYZ.X(), shape_gpXYZ.Y(), shape_gpXYZ.Z()) # These are methods of the gpXYZ class from pythonOCC
+ except:
+ print("Shape creation failed")
"""
return wrap_shape_creation(
settings,
diff --git a/src/ifcopenshell-python/ifcopenshell/mvd b/src/ifcopenshell-python/ifcopenshell/mvd
index 2f0ce53d56..667894b629 160000
--- a/src/ifcopenshell-python/ifcopenshell/mvd
+++ b/src/ifcopenshell-python/ifcopenshell/mvd
@@ -1 +1 @@
-Subproject commit 2f0ce53d56b7d78ca7ef201305643f1aec3d4696
+Subproject commit 667894b6295ea5ccc489d97ff2064bebcd67bda8
diff --git a/src/ifcopenshell-python/ifcopenshell/util/date.py b/src/ifcopenshell-python/ifcopenshell/util/date.py
index c14fff1221..cea6e1e474 100644
--- a/src/ifcopenshell-python/ifcopenshell/util/date.py
+++ b/src/ifcopenshell-python/ifcopenshell/util/date.py
@@ -42,7 +42,7 @@ def ifc2datetime(element):
element.DateComponent.DayComponent,
element.TimeComponent.HourComponent,
element.TimeComponent.MinuteComponent,
- element.TimeComponent.SecondComponent,
+ int(element.TimeComponent.SecondComponent),
# TODO: implement TimeComponent timezone
)
elif element.is_a("IfcCalendarDate"):
diff --git a/src/ifcopenshell-python/ifcopenshell/util/element.py b/src/ifcopenshell-python/ifcopenshell/util/element.py
index f245f9b4e8..c7d13cf8fb 100644
--- a/src/ifcopenshell-python/ifcopenshell/util/element.py
+++ b/src/ifcopenshell-python/ifcopenshell/util/element.py
@@ -73,10 +73,8 @@ def get_material(element, should_skip_usage=False):
return relationship.RelatingMaterial.ForProfileSet
return relationship.RelatingMaterial
relating_type = get_type(element)
- if hasattr(relating_type, "HasAssociations") and relating_type.HasAssociations:
- for relationship in relating_type.HasAssociations:
- if relationship.is_a("IfcRelAssociatesMaterial"):
- return relationship.RelatingMaterial
+ if relating_type != element and hasattr(relating_type, "HasAssociations") and relating_type.HasAssociations:
+ return get_material(relating_type, should_skip_usage)
def get_container(element):
@@ -119,7 +117,10 @@ def copy(ifc_file, element):
for i, attribute in enumerate(element):
if attribute is None:
continue
- new[i] = attribute
+ if new.attribute_name(i) == "GlobalId":
+ new[i] = ifcopenshell.guid.new()
+ else:
+ new[i] = attribute
return new
diff --git a/src/ifcopenshell-python/ifcopenshell/util/fm.py b/src/ifcopenshell-python/ifcopenshell/util/fm.py
new file mode 100644
index 0000000000..01fa8deb0d
--- /dev/null
+++ b/src/ifcopenshell-python/ifcopenshell/util/fm.py
@@ -0,0 +1,107 @@
+cobie_type_classes = [
+ "IfcDoorStyle",
+ "IfcBuildingElementProxyType",
+ "IfcChimneyType",
+ "IfcCoveringType",
+ "IfcDoorType",
+ "IfcFootingType",
+ "IfcPileType",
+ "IfcRoofType",
+ "IfcShadingDeviceType",
+ "IfcWindowType",
+ "IfcDistributionControlElementType",
+ "IfcDistributionChamberElementType",
+ "IfcEnergyConversionDeviceType",
+ "IfcFlowControllerType",
+ "IfcFlowMovingDeviceType",
+ "IfcFlowStorageDeviceType",
+ "IfcFlowTerminalType",
+ "IfcFlowTreatmentDeviceType",
+ "IfcElementAssemblyType",
+ "IfcBuildingElementPartType",
+ "IfcDiscreteAccessoryType",
+ "IfcMechanicalFastenerType",
+ "IfcReinforcingElementType",
+ "IfcVibrationIsolatorType",
+ "IfcFurnishingElementType",
+ "IfcGeographicElementType",
+ "IfcTransportElementType",
+ "IfcSpatialZoneType",
+ "IfcWindowStyle",
+]
+
+cobie_component_classes = [
+ "IfcBuildingElementProxy",
+ "IfcChimney",
+ "IfcCovering",
+ "IfcDoor",
+ "IfcShadingDevice",
+ "IfcWindow",
+ "IfcDistributionControlElement",
+ "IfcDistributionChamberElement",
+ "IfcEnergyConversionDevice",
+ "IfcFlowController",
+ "IfcFlowMovingDevice",
+ "IfcFlowStorageDevice",
+ "IfcFlowTerminal",
+ "IfcFlowTreatmentDevice",
+ "IfcDiscreteAccessory",
+ "IfcTendon",
+ "IfcTendonAnchor",
+ "IfcVibrationIsolator",
+ "IfcFurnishingElement",
+ "IfcGeographicElement",
+ "IfcTransportElement",
+]
+
+fmhem_classes = [
+ "IfcDoorStyle",
+ "IfcWindowStyle",
+ "IfcDoorType",
+ "IfcWindowType",
+ "IfcRoofType",
+ "IfcShadingDeviceType",
+ "IfcDistributionControlElementType",
+ "IfcEnergyConversionDeviceType",
+ "IfcFlowControllerType",
+ "IfcJunctionBoxType",
+ "IfcFlowMovingDeviceType",
+ "IfcFlowStorageDeviceType",
+ "IfcFlowTerminalType",
+ "IfcFlowTreatmentDeviceType",
+ "IfcFurnishingElementType",
+ "IfcTransportElementType",
+]
+
+
+def get_cobie_types(ifc_file):
+ elements = []
+ for ifc_class in cobie_type_classes:
+ try:
+ elements += ifc_file.by_type(ifc_class)
+ except:
+ pass
+ return elements
+
+
+def get_cobie_components(ifc_file):
+ elements = []
+ for ifc_class in cobie_component_classes:
+ try:
+ elements += ifc_file.by_type(ifc_class)
+ except:
+ pass
+ return elements
+
+
+def get_fmhem_types(ifc_file):
+ elements = []
+ for ifc_class in fmhem_classes:
+ try:
+ if ifc_class == "IfcEnergyConversionDeviceType":
+ elements += [e for e in ifc_file.by_type(ifc_class) if not e.is_a("IfcCooledBeamType")]
+ else:
+ elements += ifc_file.by_type(ifc_class)
+ except:
+ pass
+ return elements
diff --git a/src/ifcopenshell-python/ifcopenshell/util/schema.py b/src/ifcopenshell-python/ifcopenshell/util/schema.py
index 407e912ba1..3d8c86c64e 100644
--- a/src/ifcopenshell-python/ifcopenshell/util/schema.py
+++ b/src/ifcopenshell-python/ifcopenshell/util/schema.py
@@ -18,6 +18,17 @@ def is_a(entity, ifc_class):
return False
+def get_subtypes(entity):
+ def get_classes(declaration):
+ results = []
+ if not declaration.is_abstract():
+ results.append(declaration)
+ for subtype in declaration.subtypes():
+ results.extend(get_classes(subtype))
+ return results
+ return get_classes(entity)
+
+
def reassign_class(ifc_file, element, new_class):
try:
new_element = ifc_file.create_entity(new_class)
diff --git a/src/ifcopenshell-python/ifcopenshell/util/selector.py b/src/ifcopenshell-python/ifcopenshell/util/selector.py
index d56d69ce83..bfdc50c1d0 100644
--- a/src/ifcopenshell-python/ifcopenshell/util/selector.py
+++ b/src/ifcopenshell-python/ifcopenshell/util/selector.py
@@ -1,62 +1,8 @@
import ifcopenshell.util
+import ifcopenshell.util.fm
import ifcopenshell.util.element
import lark
-cobie_type_assets = [
- "IfcDoorStyle",
- "IfcBuildingElementProxyType",
- "IfcChimneyType",
- "IfcCoveringType",
- "IfcDoorType",
- "IfcFootingType",
- "IfcPileType",
- "IfcRoofType",
- "IfcShadingDeviceType",
- "IfcWindowType",
- "IfcDistributionControlElementType",
- "IfcDistributionChamberElementType",
- "IfcEnergyConversionDeviceType",
- "IfcFlowControllerType",
- "IfcFlowMovingDeviceType",
- "IfcFlowStorageDeviceType",
- "IfcFlowTerminalType",
- "IfcFlowTreatmentDeviceType",
- "IfcElementAssemblyType",
- "IfcBuildingElementPartType",
- "IfcDiscreteAccessoryType",
- "IfcMechanicalFastenerType",
- "IfcReinforcingElementType",
- "IfcVibrationIsolatorType",
- "IfcFurnishingElementType",
- "IfcGeographicElementType",
- "IfcTransportElementType",
- "IfcSpatialZoneType",
- "IfcWindowStyle",
-]
-cobie_component_assets = [
- "IfcBuildingElementProxy",
- "IfcChimney",
- "IfcCovering",
- "IfcDoor",
- "IfcShadingDevice",
- "IfcWindow",
- "IfcDistributionControlElement",
- "IfcDistributionChamberElement",
- "IfcEnergyConversionDevice",
- "IfcFlowController",
- "IfcFlowMovingDevice",
- "IfcFlowStorageDevice",
- "IfcFlowTerminal",
- "IfcFlowTreatmentDevice",
- "IfcDiscreteAccessory",
- "IfcTendon",
- "IfcTendonAnchor",
- "IfcVibrationIsolator",
- "IfcFurnishingElement",
- "IfcGeographicElement",
- "IfcTransportElement",
-]
-
class Selector:
def parse(self, ifc_file, query):
@@ -74,9 +20,10 @@ class Selector:
filter_value: ESCAPED_STRING
pset_or_qto: /[A-Za-z0-9_]+/ "." /[A-Za-z0-9_]+/
lfunction: and | or
- inverse_relationship: types | contains_elements
+ inverse_relationship: types | contains_elements | boundedby
types: "*"
contains_elements: "@"
+ boundedby: "@@"
and: "&"
or: "|"
comparison: contains | morethanequalto | lessthanequalto | equal | morethan | lessthan
@@ -170,23 +117,18 @@ class Selector:
elif inverse_relationship == "contains_elements" and hasattr(element, "ContainsElements"):
for relationship in element.ContainsElements:
results.extend(relationship.RelatedElements)
+ elif inverse_relationship == "boundedby" and hasattr(element, "BoundedBy"):
+ for relationship in element.BoundedBy:
+ results.append(relationship.RelatedBuildingElement)
return results
def get_class_selector(self, class_selector):
if class_selector.children[0] == "COBie":
- elements = []
- for ifc_class in cobie_component_assets:
- try:
- elements += self.file.by_type(ifc_class)
- except:
- pass
+ ifcopenshell.util.fm.get_cobie_components(self.file)
elif class_selector.children[0] == "COBieType":
- elements = []
- for ifc_class in cobie_type_assets:
- try:
- elements += self.file.by_type(ifc_class)
- except:
- pass
+ ifcopenshell.util.fm.get_cobie_types(self.file)
+ elif class_selector.children[0] == "FMHEM":
+ ifcopenshell.util.fm.get_fmhem_types(self.file)
else:
elements = self.file.by_type(class_selector.children[0])
if len(class_selector.children) > 1 and class_selector.children[1].data == "filter":
diff --git a/src/ifcopenshell-python/ifcopenshell/util/type.py b/src/ifcopenshell-python/ifcopenshell/util/type.py
index 6a6e57703c..7999afc53a 100644
--- a/src/ifcopenshell-python/ifcopenshell/util/type.py
+++ b/src/ifcopenshell-python/ifcopenshell/util/type.py
@@ -12,13 +12,14 @@ with open(os.path.join(cwd, "entity_to_type_map_2x3.json")) as f:
with open(os.path.join(cwd, "entity_to_type_map_4.json")) as f:
entity_to_type_map["IFC4"] = json.load(f)
-type_to_entity_map["IFC2X3"] = {
- value: [key] for key in entity_to_type_map["IFC2X3"] for value in entity_to_type_map["IFC2X3"][key]
-}
-
-type_to_entity_map["IFC4"] = {
- value: [key] for key in entity_to_type_map["IFC4"] for value in entity_to_type_map["IFC4"][key]
-}
+for schema in ["IFC2X3", "IFC4"]:
+ type_to_entity_map[schema] = {}
+ for element, element_types in entity_to_type_map[schema].items():
+ for element_type in element_types:
+ type_to_entity_map[schema].setdefault(element_type, []).append(element)
+ # TODO: this method just fails for IFC2X3 because 2X3 type mapping is just so broken.
+ # Uncomment the following line to see how bad it is.
+ # print(type_to_entity_map[schema])
def get_applicable_types(ifc_class, schema="IFC4"):
diff --git a/src/ifcopenshell-python/ifcopenshell/util/unit.py b/src/ifcopenshell-python/ifcopenshell/util/unit.py
index c29dafb44a..5156ecac05 100644
--- a/src/ifcopenshell-python/ifcopenshell/util/unit.py
+++ b/src/ifcopenshell-python/ifcopenshell/util/unit.py
@@ -52,6 +52,41 @@ unit_names = [
"WEBER",
]
+
+si_dimensions = {
+ "METRE": (1, 0, 0, 0, 0, 0, 0),
+ "SQUARE_METRE": (2, 0, 0, 0, 0, 0, 0),
+ "CUBIC_METRE": (3, 0, 0, 0, 0, 0, 0),
+ "GRAM": (0, 1, 0, 0, 0, 0, 0),
+ "SECOND": (0, 0, 1, 0, 0, 0, 0),
+ "AMPERE": (0, 0, 0, 1, 0, 0, 0),
+ "KELVIN": (0, 0, 0, 0, 1, 0, 0),
+ "MOLE": (0, 0, 0, 0, 0, 1, 0),
+ "CANDELA": (0, 0, 0, 0, 0, 0, 1),
+ "RADIAN": (0, 0, 0, 0, 0, 0, 0),
+ "STERADIAN": (0, 0, 0, 0, 0, 0, 0),
+ "HERTZ": (0, 0, -1, 0, 0, 0, 0),
+ "NEWTON": (1, 1, -2, 0, 0, 0, 0),
+ "PASCAL": (-1, 1, -2, 0, 0, 0, 0),
+ "JOULE": (2, 1, -2, 0, 0, 0, 0),
+ "WATT": (2, 1, -3, 0, 0, 0, 0),
+ "COULOMB": (0, 0, 1, 1, 0, 0, 0),
+ "VOLT": (2, 1, -3, -1, 0, 0, 0),
+ "FARAD": (-2, -1, 4, 2, 0, 0, 0),
+ "OHM": (2, 1, -3, -2, 0, 0, 0),
+ "SIEMENS": (-2, -1, 3, 2, 0, 0, 0),
+ "WEBER": (2, 1, -2, -1, 0, 0, 0),
+ "TESLA": (0, 1, -2, -1, 0, 0, 0),
+ "HENRY": (2, 1, -2, -2, 0, 0, 0),
+ "DEGREE_CELSIUS": (0, 0, 0, 0, 1, 0, 0),
+ "LUMEN": (0, 0, 0, 0, 0, 0, 1),
+ "LUX": (-2, 0, 0, 0, 0, 0, 1),
+ "BECQUEREL": (0, 0, -1, 0, 0, 0, 0),
+ "GRAY": (2, 0, -2, 0, 0, 0, 0),
+ "SIEVERT": (2, 0, -2, 0, 0, 0, 0),
+ "OTHERWISE": (0, 0, 0, 0, 0, 0, 0),
+}
+
si_conversions = {
"inch": 0.0254,
"foot": 0.3048,
@@ -87,6 +122,33 @@ si_conversions = {
"btu": 1055.056,
}
+prefix_symbols = {
+ "EXA": "E",
+ "PETA": "P",
+ "TERA": "T",
+ "GIGA": "G",
+ "MEGA": "M",
+ "KILO": "k",
+ "HECTO": "h",
+ "DECA": "da",
+ "DECI": "d",
+ "CENTI": "c",
+ "MILLI": "m",
+ "MICRO": "μ",
+ "NANO": "n",
+ "PICO": "p",
+ "FEMTO": "f",
+ "ATTO": "a",
+}
+
+unit_symbols = {
+ "CUBIC_METRE": "m3",
+ "GRAM": "g",
+ "SECOND": "s",
+ "SQUARE_METRE": "m2",
+ "METRE": "m",
+}
+
def get_prefix(text):
if text:
@@ -105,11 +167,63 @@ def get_prefix_multiplier(text):
def get_unit_name(text):
+ text = text.upper().replace("METER", "METRE")
for name in unit_names:
- if name in text.upper().replace("METER", "METRE"):
+ if name in text:
return name
+def get_si_dimensions(name):
+ return si_dimensions.get(name, si_dimensions["OTHERWISE"])
+
+
+def get_property_unit(prop, ifc_file):
+ unit = getattr(prop, "Unit", None)
+ if unit:
+ return unit
+ unit_assignment = ifc_file.by_type("IfcUnitAssignment")
+ if not unit_assignment:
+ return
+ entity = prop.wrapped_data.declaration().as_entity()
+ if prop.is_a("IfcPhysicalSimpleQuantity"):
+ measure_type = entity.attribute_by_index(3).type_of_attribute().declared_type().name()
+ elif prop.is_a("IfcPropertySingleValue") and prop.NominalValue:
+ measure_type = prop.NominalValue.is_a()
+ for text in ("Ifc", "Measure", "Non", "Positive", "Negative"):
+ measure_type = measure_type.replace(text, "")
+ measure_type = measure_type.upper() + "UNIT"
+ units = [u for u in unit_assignment[0].Units if getattr(u, "UnitType", None) == measure_type]
+ if units:
+ return units[0]
+
+
+def get_symbol_quantity_class(symbol):
+ # Dumb, but everybody gets it, unlike regex golf
+ if not symbol:
+ return "IfcQuantityCount"
+ symbol = symbol.lower()
+ if symbol in ["kg", "g", "mt", "kt", "t"]:
+ return "IfcQuantityWeight"
+ elif symbol in ["day", "d", "hour", "hr", "h", "minute", "min", "m", "second", "sec", "s"]:
+ return "IfcQuantityTime"
+ elif symbol in ["km3", "m3", "cm3", "mm3", "cy", "cft", "cin"]:
+ return "IfcQuantityVolume"
+ elif symbol in ["km2", "m2", "cm2", "mm2", "sqy", "sqft", "sqin"]:
+ return "IfcQuantityArea"
+ elif symbol in ["km", "m", "cm", "mm", "ly", "lf", "lin", "yd", "ft", "in"]:
+ return "IfcQuantityLength"
+ return "IfcQuantityCount"
+
+
+def get_unit_symbol(unit):
+ if unit.is_a("IfcSIUnit"):
+ symbol = ""
+ symbol += prefix_symbols.get(unit.Prefix, "")
+ symbol += unit_symbols.get(unit.Name.replace("METER", "METRE"), "?")
+ return symbol
+ return "?"
+
+
def convert(value, from_prefix, from_unit, to_prefix, to_unit):
"""Converts between length, area, and volume units
@@ -155,6 +269,8 @@ Example::
:returns: The scale factor
:rtype: float
"""
+
+
def calculate_unit_scale(file):
units = file.by_type("IfcUnitAssignment")[0]
unit_scale = 1
diff --git a/src/ifcopenshell-python/ifcopenshell/validate.py b/src/ifcopenshell-python/ifcopenshell/validate.py
index 22bd05ee93..1506138954 100644
--- a/src/ifcopenshell-python/ifcopenshell/validate.py
+++ b/src/ifcopenshell-python/ifcopenshell/validate.py
@@ -34,7 +34,7 @@ class json_logger:
self.instance = instance
def log(self, level, message, *args, **kwargs):
- self.statements.append(log_entry_type(level, message % args, kwargs.get('instance'))._asdict())
+ self.statements.append(log_entry_type(level, message % args, kwargs.get("instance"))._asdict())
def __getattr__(self, level):
return functools.partial(self.log, level, instance=self.instance)
@@ -75,7 +75,7 @@ def assert_valid(attr, val, schema):
while isinstance(attr_type, type_wrappers):
attr_type = attr_type.declared_type()
-
+
invalid = False
if isinstance(attr_type, simple_type):
@@ -120,10 +120,10 @@ def validate(f, logger):
numeric identifiers or invalidate entity names are not caught by this function. Some of these might have been
logged and can be retrieved by calling `ifcopenshell.get_log()`. A verification of the type, entity and global
WHERE rules is also not implemented.
-
+
For every entity instance in the model, it is checked that the entity is not abstract that every attribute value
is of the correct type and that the inverse attributes are of the correct cardinality.
-
+
Express simple types are checked for their valuation type. For select types it is asserted that the value conforms
to one of the leaves. For enumerations it is checked that the value is indeed on of the items. For aggregations it
is checked that the elements and the cardinality conforms. Type declarations (IfcInteger which is an integer) are
diff --git a/src/ifcparse/Ifc2x3.cpp b/src/ifcparse/Ifc2x3.cpp
index e229b28335..2b3448d5d0 100644
--- a/src/ifcparse/Ifc2x3.cpp
+++ b/src/ifcparse/Ifc2x3.cpp
@@ -981,12 +981,14 @@ Ifc2x3::IfcActionSourceTypeEnum::IfcActionSourceTypeEnum(IfcEntityInstanceData*
}
Ifc2x3::IfcActionSourceTypeEnum::IfcActionSourceTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcActionSourceTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc2x3::IfcActionSourceTypeEnum::IfcActionSourceTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcActionSourceTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -1041,12 +1043,14 @@ Ifc2x3::IfcActionTypeEnum::IfcActionTypeEnum(IfcEntityInstanceData* e) {
}
Ifc2x3::IfcActionTypeEnum::IfcActionTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcActionTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc2x3::IfcActionTypeEnum::IfcActionTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcActionTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -1079,12 +1083,14 @@ Ifc2x3::IfcActuatorTypeEnum::IfcActuatorTypeEnum(IfcEntityInstanceData* e) {
}
Ifc2x3::IfcActuatorTypeEnum::IfcActuatorTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcActuatorTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc2x3::IfcActuatorTypeEnum::IfcActuatorTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcActuatorTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -1119,12 +1125,14 @@ Ifc2x3::IfcAddressTypeEnum::IfcAddressTypeEnum(IfcEntityInstanceData* e) {
}
Ifc2x3::IfcAddressTypeEnum::IfcAddressTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcAddressTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc2x3::IfcAddressTypeEnum::IfcAddressTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcAddressTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -1157,12 +1165,14 @@ Ifc2x3::IfcAheadOrBehind::IfcAheadOrBehind(IfcEntityInstanceData* e) {
}
Ifc2x3::IfcAheadOrBehind::IfcAheadOrBehind(Value v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcAheadOrBehind_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc2x3::IfcAheadOrBehind::IfcAheadOrBehind(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcAheadOrBehind_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -1192,12 +1202,14 @@ Ifc2x3::IfcAirTerminalBoxTypeEnum::IfcAirTerminalBoxTypeEnum(IfcEntityInstanceDa
}
Ifc2x3::IfcAirTerminalBoxTypeEnum::IfcAirTerminalBoxTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcAirTerminalBoxTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc2x3::IfcAirTerminalBoxTypeEnum::IfcAirTerminalBoxTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcAirTerminalBoxTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -1230,12 +1242,14 @@ Ifc2x3::IfcAirTerminalTypeEnum::IfcAirTerminalTypeEnum(IfcEntityInstanceData* e)
}
Ifc2x3::IfcAirTerminalTypeEnum::IfcAirTerminalTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcAirTerminalTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc2x3::IfcAirTerminalTypeEnum::IfcAirTerminalTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcAirTerminalTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -1272,12 +1286,14 @@ Ifc2x3::IfcAirToAirHeatRecoveryTypeEnum::IfcAirToAirHeatRecoveryTypeEnum(IfcEnti
}
Ifc2x3::IfcAirToAirHeatRecoveryTypeEnum::IfcAirToAirHeatRecoveryTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcAirToAirHeatRecoveryTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc2x3::IfcAirToAirHeatRecoveryTypeEnum::IfcAirToAirHeatRecoveryTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcAirToAirHeatRecoveryTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -1316,12 +1332,14 @@ Ifc2x3::IfcAlarmTypeEnum::IfcAlarmTypeEnum(IfcEntityInstanceData* e) {
}
Ifc2x3::IfcAlarmTypeEnum::IfcAlarmTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcAlarmTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc2x3::IfcAlarmTypeEnum::IfcAlarmTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcAlarmTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -1357,12 +1375,14 @@ Ifc2x3::IfcAnalysisModelTypeEnum::IfcAnalysisModelTypeEnum(IfcEntityInstanceData
}
Ifc2x3::IfcAnalysisModelTypeEnum::IfcAnalysisModelTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcAnalysisModelTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc2x3::IfcAnalysisModelTypeEnum::IfcAnalysisModelTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcAnalysisModelTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -1395,12 +1415,14 @@ Ifc2x3::IfcAnalysisTheoryTypeEnum::IfcAnalysisTheoryTypeEnum(IfcEntityInstanceDa
}
Ifc2x3::IfcAnalysisTheoryTypeEnum::IfcAnalysisTheoryTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcAnalysisTheoryTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc2x3::IfcAnalysisTheoryTypeEnum::IfcAnalysisTheoryTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcAnalysisTheoryTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -1434,12 +1456,14 @@ Ifc2x3::IfcArithmeticOperatorEnum::IfcArithmeticOperatorEnum(IfcEntityInstanceDa
}
Ifc2x3::IfcArithmeticOperatorEnum::IfcArithmeticOperatorEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcArithmeticOperatorEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc2x3::IfcArithmeticOperatorEnum::IfcArithmeticOperatorEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcArithmeticOperatorEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -1471,12 +1495,14 @@ Ifc2x3::IfcAssemblyPlaceEnum::IfcAssemblyPlaceEnum(IfcEntityInstanceData* e) {
}
Ifc2x3::IfcAssemblyPlaceEnum::IfcAssemblyPlaceEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcAssemblyPlaceEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc2x3::IfcAssemblyPlaceEnum::IfcAssemblyPlaceEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcAssemblyPlaceEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -1507,12 +1533,14 @@ Ifc2x3::IfcBSplineCurveForm::IfcBSplineCurveForm(IfcEntityInstanceData* e) {
}
Ifc2x3::IfcBSplineCurveForm::IfcBSplineCurveForm(Value v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcBSplineCurveForm_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc2x3::IfcBSplineCurveForm::IfcBSplineCurveForm(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcBSplineCurveForm_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -1546,12 +1574,14 @@ Ifc2x3::IfcBeamTypeEnum::IfcBeamTypeEnum(IfcEntityInstanceData* e) {
}
Ifc2x3::IfcBeamTypeEnum::IfcBeamTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcBeamTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc2x3::IfcBeamTypeEnum::IfcBeamTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcBeamTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -1585,12 +1615,14 @@ Ifc2x3::IfcBenchmarkEnum::IfcBenchmarkEnum(IfcEntityInstanceData* e) {
}
Ifc2x3::IfcBenchmarkEnum::IfcBenchmarkEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcBenchmarkEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc2x3::IfcBenchmarkEnum::IfcBenchmarkEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcBenchmarkEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -1624,12 +1656,14 @@ Ifc2x3::IfcBoilerTypeEnum::IfcBoilerTypeEnum(IfcEntityInstanceData* e) {
}
Ifc2x3::IfcBoilerTypeEnum::IfcBoilerTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcBoilerTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc2x3::IfcBoilerTypeEnum::IfcBoilerTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcBoilerTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -1661,12 +1695,14 @@ Ifc2x3::IfcBooleanOperator::IfcBooleanOperator(IfcEntityInstanceData* e) {
}
Ifc2x3::IfcBooleanOperator::IfcBooleanOperator(Value v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcBooleanOperator_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc2x3::IfcBooleanOperator::IfcBooleanOperator(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcBooleanOperator_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -1697,12 +1733,14 @@ Ifc2x3::IfcBuildingElementProxyTypeEnum::IfcBuildingElementProxyTypeEnum(IfcEnti
}
Ifc2x3::IfcBuildingElementProxyTypeEnum::IfcBuildingElementProxyTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcBuildingElementProxyTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc2x3::IfcBuildingElementProxyTypeEnum::IfcBuildingElementProxyTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcBuildingElementProxyTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -1732,12 +1770,14 @@ Ifc2x3::IfcCableCarrierFittingTypeEnum::IfcCableCarrierFittingTypeEnum(IfcEntity
}
Ifc2x3::IfcCableCarrierFittingTypeEnum::IfcCableCarrierFittingTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcCableCarrierFittingTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc2x3::IfcCableCarrierFittingTypeEnum::IfcCableCarrierFittingTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcCableCarrierFittingTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -1771,12 +1811,14 @@ Ifc2x3::IfcCableCarrierSegmentTypeEnum::IfcCableCarrierSegmentTypeEnum(IfcEntity
}
Ifc2x3::IfcCableCarrierSegmentTypeEnum::IfcCableCarrierSegmentTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcCableCarrierSegmentTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc2x3::IfcCableCarrierSegmentTypeEnum::IfcCableCarrierSegmentTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcCableCarrierSegmentTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -1810,12 +1852,14 @@ Ifc2x3::IfcCableSegmentTypeEnum::IfcCableSegmentTypeEnum(IfcEntityInstanceData*
}
Ifc2x3::IfcCableSegmentTypeEnum::IfcCableSegmentTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcCableSegmentTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc2x3::IfcCableSegmentTypeEnum::IfcCableSegmentTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcCableSegmentTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -1847,12 +1891,14 @@ Ifc2x3::IfcChangeActionEnum::IfcChangeActionEnum(IfcEntityInstanceData* e) {
}
Ifc2x3::IfcChangeActionEnum::IfcChangeActionEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcChangeActionEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc2x3::IfcChangeActionEnum::IfcChangeActionEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcChangeActionEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -1886,12 +1932,14 @@ Ifc2x3::IfcChillerTypeEnum::IfcChillerTypeEnum(IfcEntityInstanceData* e) {
}
Ifc2x3::IfcChillerTypeEnum::IfcChillerTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcChillerTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc2x3::IfcChillerTypeEnum::IfcChillerTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcChillerTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -1924,12 +1972,14 @@ Ifc2x3::IfcCoilTypeEnum::IfcCoilTypeEnum(IfcEntityInstanceData* e) {
}
Ifc2x3::IfcCoilTypeEnum::IfcCoilTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcCoilTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc2x3::IfcCoilTypeEnum::IfcCoilTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcCoilTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -1965,12 +2015,14 @@ Ifc2x3::IfcColumnTypeEnum::IfcColumnTypeEnum(IfcEntityInstanceData* e) {
}
Ifc2x3::IfcColumnTypeEnum::IfcColumnTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcColumnTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc2x3::IfcColumnTypeEnum::IfcColumnTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcColumnTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -2001,12 +2053,14 @@ Ifc2x3::IfcCompressorTypeEnum::IfcCompressorTypeEnum(IfcEntityInstanceData* e) {
}
Ifc2x3::IfcCompressorTypeEnum::IfcCompressorTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcCompressorTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc2x3::IfcCompressorTypeEnum::IfcCompressorTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcCompressorTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -2051,12 +2105,14 @@ Ifc2x3::IfcCondenserTypeEnum::IfcCondenserTypeEnum(IfcEntityInstanceData* e) {
}
Ifc2x3::IfcCondenserTypeEnum::IfcCondenserTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcCondenserTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc2x3::IfcCondenserTypeEnum::IfcCondenserTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcCondenserTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -2092,12 +2148,14 @@ Ifc2x3::IfcConnectionTypeEnum::IfcConnectionTypeEnum(IfcEntityInstanceData* e) {
}
Ifc2x3::IfcConnectionTypeEnum::IfcConnectionTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcConnectionTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc2x3::IfcConnectionTypeEnum::IfcConnectionTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcConnectionTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -2129,12 +2187,14 @@ Ifc2x3::IfcConstraintEnum::IfcConstraintEnum(IfcEntityInstanceData* e) {
}
Ifc2x3::IfcConstraintEnum::IfcConstraintEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcConstraintEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc2x3::IfcConstraintEnum::IfcConstraintEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcConstraintEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -2167,12 +2227,14 @@ Ifc2x3::IfcControllerTypeEnum::IfcControllerTypeEnum(IfcEntityInstanceData* e) {
}
Ifc2x3::IfcControllerTypeEnum::IfcControllerTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcControllerTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc2x3::IfcControllerTypeEnum::IfcControllerTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcControllerTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -2208,12 +2270,14 @@ Ifc2x3::IfcCooledBeamTypeEnum::IfcCooledBeamTypeEnum(IfcEntityInstanceData* e) {
}
Ifc2x3::IfcCooledBeamTypeEnum::IfcCooledBeamTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcCooledBeamTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc2x3::IfcCooledBeamTypeEnum::IfcCooledBeamTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcCooledBeamTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -2245,12 +2309,14 @@ Ifc2x3::IfcCoolingTowerTypeEnum::IfcCoolingTowerTypeEnum(IfcEntityInstanceData*
}
Ifc2x3::IfcCoolingTowerTypeEnum::IfcCoolingTowerTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcCoolingTowerTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc2x3::IfcCoolingTowerTypeEnum::IfcCoolingTowerTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcCoolingTowerTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -2283,12 +2349,14 @@ Ifc2x3::IfcCostScheduleTypeEnum::IfcCostScheduleTypeEnum(IfcEntityInstanceData*
}
Ifc2x3::IfcCostScheduleTypeEnum::IfcCostScheduleTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcCostScheduleTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc2x3::IfcCostScheduleTypeEnum::IfcCostScheduleTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcCostScheduleTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -2325,12 +2393,14 @@ Ifc2x3::IfcCoveringTypeEnum::IfcCoveringTypeEnum(IfcEntityInstanceData* e) {
}
Ifc2x3::IfcCoveringTypeEnum::IfcCoveringTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcCoveringTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc2x3::IfcCoveringTypeEnum::IfcCoveringTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcCoveringTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -2368,12 +2438,14 @@ Ifc2x3::IfcCurrencyEnum::IfcCurrencyEnum(IfcEntityInstanceData* e) {
}
Ifc2x3::IfcCurrencyEnum::IfcCurrencyEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcCurrencyEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc2x3::IfcCurrencyEnum::IfcCurrencyEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcCurrencyEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -2484,12 +2556,14 @@ Ifc2x3::IfcCurtainWallTypeEnum::IfcCurtainWallTypeEnum(IfcEntityInstanceData* e)
}
Ifc2x3::IfcCurtainWallTypeEnum::IfcCurtainWallTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcCurtainWallTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc2x3::IfcCurtainWallTypeEnum::IfcCurtainWallTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcCurtainWallTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -2519,12 +2593,14 @@ Ifc2x3::IfcDamperTypeEnum::IfcDamperTypeEnum(IfcEntityInstanceData* e) {
}
Ifc2x3::IfcDamperTypeEnum::IfcDamperTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcDamperTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc2x3::IfcDamperTypeEnum::IfcDamperTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcDamperTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -2565,12 +2641,14 @@ Ifc2x3::IfcDataOriginEnum::IfcDataOriginEnum(IfcEntityInstanceData* e) {
}
Ifc2x3::IfcDataOriginEnum::IfcDataOriginEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcDataOriginEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc2x3::IfcDataOriginEnum::IfcDataOriginEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcDataOriginEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -2603,12 +2681,14 @@ Ifc2x3::IfcDerivedUnitEnum::IfcDerivedUnitEnum(IfcEntityInstanceData* e) {
}
Ifc2x3::IfcDerivedUnitEnum::IfcDerivedUnitEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcDerivedUnitEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc2x3::IfcDerivedUnitEnum::IfcDerivedUnitEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcDerivedUnitEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -2685,12 +2765,14 @@ Ifc2x3::IfcDimensionExtentUsage::IfcDimensionExtentUsage(IfcEntityInstanceData*
}
Ifc2x3::IfcDimensionExtentUsage::IfcDimensionExtentUsage(Value v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcDimensionExtentUsage_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc2x3::IfcDimensionExtentUsage::IfcDimensionExtentUsage(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcDimensionExtentUsage_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -2720,12 +2802,14 @@ Ifc2x3::IfcDirectionSenseEnum::IfcDirectionSenseEnum(IfcEntityInstanceData* e) {
}
Ifc2x3::IfcDirectionSenseEnum::IfcDirectionSenseEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcDirectionSenseEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc2x3::IfcDirectionSenseEnum::IfcDirectionSenseEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcDirectionSenseEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -2755,12 +2839,14 @@ Ifc2x3::IfcDistributionChamberElementTypeEnum::IfcDistributionChamberElementType
}
Ifc2x3::IfcDistributionChamberElementTypeEnum::IfcDistributionChamberElementTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcDistributionChamberElementTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc2x3::IfcDistributionChamberElementTypeEnum::IfcDistributionChamberElementTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcDistributionChamberElementTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -2798,12 +2884,14 @@ Ifc2x3::IfcDocumentConfidentialityEnum::IfcDocumentConfidentialityEnum(IfcEntity
}
Ifc2x3::IfcDocumentConfidentialityEnum::IfcDocumentConfidentialityEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcDocumentConfidentialityEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc2x3::IfcDocumentConfidentialityEnum::IfcDocumentConfidentialityEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcDocumentConfidentialityEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -2837,12 +2925,14 @@ Ifc2x3::IfcDocumentStatusEnum::IfcDocumentStatusEnum(IfcEntityInstanceData* e) {
}
Ifc2x3::IfcDocumentStatusEnum::IfcDocumentStatusEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcDocumentStatusEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc2x3::IfcDocumentStatusEnum::IfcDocumentStatusEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcDocumentStatusEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -2875,12 +2965,14 @@ Ifc2x3::IfcDoorPanelOperationEnum::IfcDoorPanelOperationEnum(IfcEntityInstanceDa
}
Ifc2x3::IfcDoorPanelOperationEnum::IfcDoorPanelOperationEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcDoorPanelOperationEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc2x3::IfcDoorPanelOperationEnum::IfcDoorPanelOperationEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcDoorPanelOperationEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -2916,12 +3008,14 @@ Ifc2x3::IfcDoorPanelPositionEnum::IfcDoorPanelPositionEnum(IfcEntityInstanceData
}
Ifc2x3::IfcDoorPanelPositionEnum::IfcDoorPanelPositionEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcDoorPanelPositionEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc2x3::IfcDoorPanelPositionEnum::IfcDoorPanelPositionEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcDoorPanelPositionEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -2953,12 +3047,14 @@ Ifc2x3::IfcDoorStyleConstructionEnum::IfcDoorStyleConstructionEnum(IfcEntityInst
}
Ifc2x3::IfcDoorStyleConstructionEnum::IfcDoorStyleConstructionEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcDoorStyleConstructionEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc2x3::IfcDoorStyleConstructionEnum::IfcDoorStyleConstructionEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcDoorStyleConstructionEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -2995,12 +3091,14 @@ Ifc2x3::IfcDoorStyleOperationEnum::IfcDoorStyleOperationEnum(IfcEntityInstanceDa
}
Ifc2x3::IfcDoorStyleOperationEnum::IfcDoorStyleOperationEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcDoorStyleOperationEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc2x3::IfcDoorStyleOperationEnum::IfcDoorStyleOperationEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcDoorStyleOperationEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -3046,12 +3144,14 @@ Ifc2x3::IfcDuctFittingTypeEnum::IfcDuctFittingTypeEnum(IfcEntityInstanceData* e)
}
Ifc2x3::IfcDuctFittingTypeEnum::IfcDuctFittingTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcDuctFittingTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc2x3::IfcDuctFittingTypeEnum::IfcDuctFittingTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcDuctFittingTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -3088,12 +3188,14 @@ Ifc2x3::IfcDuctSegmentTypeEnum::IfcDuctSegmentTypeEnum(IfcEntityInstanceData* e)
}
Ifc2x3::IfcDuctSegmentTypeEnum::IfcDuctSegmentTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcDuctSegmentTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc2x3::IfcDuctSegmentTypeEnum::IfcDuctSegmentTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcDuctSegmentTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -3125,12 +3227,14 @@ Ifc2x3::IfcDuctSilencerTypeEnum::IfcDuctSilencerTypeEnum(IfcEntityInstanceData*
}
Ifc2x3::IfcDuctSilencerTypeEnum::IfcDuctSilencerTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcDuctSilencerTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc2x3::IfcDuctSilencerTypeEnum::IfcDuctSilencerTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcDuctSilencerTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -3163,12 +3267,14 @@ Ifc2x3::IfcElectricApplianceTypeEnum::IfcElectricApplianceTypeEnum(IfcEntityInst
}
Ifc2x3::IfcElectricApplianceTypeEnum::IfcElectricApplianceTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcElectricApplianceTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc2x3::IfcElectricApplianceTypeEnum::IfcElectricApplianceTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcElectricApplianceTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -3222,12 +3328,14 @@ Ifc2x3::IfcElectricCurrentEnum::IfcElectricCurrentEnum(IfcEntityInstanceData* e)
}
Ifc2x3::IfcElectricCurrentEnum::IfcElectricCurrentEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcElectricCurrentEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc2x3::IfcElectricCurrentEnum::IfcElectricCurrentEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcElectricCurrentEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -3258,12 +3366,14 @@ Ifc2x3::IfcElectricDistributionPointFunctionEnum::IfcElectricDistributionPointFu
}
Ifc2x3::IfcElectricDistributionPointFunctionEnum::IfcElectricDistributionPointFunctionEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcElectricDistributionPointFunctionEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc2x3::IfcElectricDistributionPointFunctionEnum::IfcElectricDistributionPointFunctionEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcElectricDistributionPointFunctionEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -3302,12 +3412,14 @@ Ifc2x3::IfcElectricFlowStorageDeviceTypeEnum::IfcElectricFlowStorageDeviceTypeEn
}
Ifc2x3::IfcElectricFlowStorageDeviceTypeEnum::IfcElectricFlowStorageDeviceTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcElectricFlowStorageDeviceTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc2x3::IfcElectricFlowStorageDeviceTypeEnum::IfcElectricFlowStorageDeviceTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcElectricFlowStorageDeviceTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -3342,12 +3454,14 @@ Ifc2x3::IfcElectricGeneratorTypeEnum::IfcElectricGeneratorTypeEnum(IfcEntityInst
}
Ifc2x3::IfcElectricGeneratorTypeEnum::IfcElectricGeneratorTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcElectricGeneratorTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc2x3::IfcElectricGeneratorTypeEnum::IfcElectricGeneratorTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcElectricGeneratorTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -3377,12 +3491,14 @@ Ifc2x3::IfcElectricHeaterTypeEnum::IfcElectricHeaterTypeEnum(IfcEntityInstanceDa
}
Ifc2x3::IfcElectricHeaterTypeEnum::IfcElectricHeaterTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcElectricHeaterTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc2x3::IfcElectricHeaterTypeEnum::IfcElectricHeaterTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcElectricHeaterTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -3415,12 +3531,14 @@ Ifc2x3::IfcElectricMotorTypeEnum::IfcElectricMotorTypeEnum(IfcEntityInstanceData
}
Ifc2x3::IfcElectricMotorTypeEnum::IfcElectricMotorTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcElectricMotorTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc2x3::IfcElectricMotorTypeEnum::IfcElectricMotorTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcElectricMotorTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -3455,12 +3573,14 @@ Ifc2x3::IfcElectricTimeControlTypeEnum::IfcElectricTimeControlTypeEnum(IfcEntity
}
Ifc2x3::IfcElectricTimeControlTypeEnum::IfcElectricTimeControlTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcElectricTimeControlTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc2x3::IfcElectricTimeControlTypeEnum::IfcElectricTimeControlTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcElectricTimeControlTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -3493,12 +3613,14 @@ Ifc2x3::IfcElementAssemblyTypeEnum::IfcElementAssemblyTypeEnum(IfcEntityInstance
}
Ifc2x3::IfcElementAssemblyTypeEnum::IfcElementAssemblyTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcElementAssemblyTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc2x3::IfcElementAssemblyTypeEnum::IfcElementAssemblyTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcElementAssemblyTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -3537,12 +3659,14 @@ Ifc2x3::IfcElementCompositionEnum::IfcElementCompositionEnum(IfcEntityInstanceDa
}
Ifc2x3::IfcElementCompositionEnum::IfcElementCompositionEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcElementCompositionEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc2x3::IfcElementCompositionEnum::IfcElementCompositionEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcElementCompositionEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -3573,12 +3697,14 @@ Ifc2x3::IfcEnergySequenceEnum::IfcEnergySequenceEnum(IfcEntityInstanceData* e) {
}
Ifc2x3::IfcEnergySequenceEnum::IfcEnergySequenceEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcEnergySequenceEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc2x3::IfcEnergySequenceEnum::IfcEnergySequenceEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcEnergySequenceEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -3612,12 +3738,14 @@ Ifc2x3::IfcEnvironmentalImpactCategoryEnum::IfcEnvironmentalImpactCategoryEnum(I
}
Ifc2x3::IfcEnvironmentalImpactCategoryEnum::IfcEnvironmentalImpactCategoryEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcEnvironmentalImpactCategoryEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc2x3::IfcEnvironmentalImpactCategoryEnum::IfcEnvironmentalImpactCategoryEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcEnvironmentalImpactCategoryEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -3653,12 +3781,14 @@ Ifc2x3::IfcEvaporativeCoolerTypeEnum::IfcEvaporativeCoolerTypeEnum(IfcEntityInst
}
Ifc2x3::IfcEvaporativeCoolerTypeEnum::IfcEvaporativeCoolerTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcEvaporativeCoolerTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc2x3::IfcEvaporativeCoolerTypeEnum::IfcEvaporativeCoolerTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcEvaporativeCoolerTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -3697,12 +3827,14 @@ Ifc2x3::IfcEvaporatorTypeEnum::IfcEvaporatorTypeEnum(IfcEntityInstanceData* e) {
}
Ifc2x3::IfcEvaporatorTypeEnum::IfcEvaporatorTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcEvaporatorTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc2x3::IfcEvaporatorTypeEnum::IfcEvaporatorTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcEvaporatorTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -3737,12 +3869,14 @@ Ifc2x3::IfcFanTypeEnum::IfcFanTypeEnum(IfcEntityInstanceData* e) {
}
Ifc2x3::IfcFanTypeEnum::IfcFanTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcFanTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc2x3::IfcFanTypeEnum::IfcFanTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcFanTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -3779,12 +3913,14 @@ Ifc2x3::IfcFilterTypeEnum::IfcFilterTypeEnum(IfcEntityInstanceData* e) {
}
Ifc2x3::IfcFilterTypeEnum::IfcFilterTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcFilterTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc2x3::IfcFilterTypeEnum::IfcFilterTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcFilterTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -3819,12 +3955,14 @@ Ifc2x3::IfcFireSuppressionTerminalTypeEnum::IfcFireSuppressionTerminalTypeEnum(I
}
Ifc2x3::IfcFireSuppressionTerminalTypeEnum::IfcFireSuppressionTerminalTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcFireSuppressionTerminalTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc2x3::IfcFireSuppressionTerminalTypeEnum::IfcFireSuppressionTerminalTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcFireSuppressionTerminalTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -3859,12 +3997,14 @@ Ifc2x3::IfcFlowDirectionEnum::IfcFlowDirectionEnum(IfcEntityInstanceData* e) {
}
Ifc2x3::IfcFlowDirectionEnum::IfcFlowDirectionEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcFlowDirectionEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc2x3::IfcFlowDirectionEnum::IfcFlowDirectionEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcFlowDirectionEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -3896,12 +4036,14 @@ Ifc2x3::IfcFlowInstrumentTypeEnum::IfcFlowInstrumentTypeEnum(IfcEntityInstanceDa
}
Ifc2x3::IfcFlowInstrumentTypeEnum::IfcFlowInstrumentTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcFlowInstrumentTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc2x3::IfcFlowInstrumentTypeEnum::IfcFlowInstrumentTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcFlowInstrumentTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -3939,12 +4081,14 @@ Ifc2x3::IfcFlowMeterTypeEnum::IfcFlowMeterTypeEnum(IfcEntityInstanceData* e) {
}
Ifc2x3::IfcFlowMeterTypeEnum::IfcFlowMeterTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcFlowMeterTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc2x3::IfcFlowMeterTypeEnum::IfcFlowMeterTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcFlowMeterTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -3980,12 +4124,14 @@ Ifc2x3::IfcFootingTypeEnum::IfcFootingTypeEnum(IfcEntityInstanceData* e) {
}
Ifc2x3::IfcFootingTypeEnum::IfcFootingTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcFootingTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc2x3::IfcFootingTypeEnum::IfcFootingTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcFootingTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -4019,12 +4165,14 @@ Ifc2x3::IfcGasTerminalTypeEnum::IfcGasTerminalTypeEnum(IfcEntityInstanceData* e)
}
Ifc2x3::IfcGasTerminalTypeEnum::IfcGasTerminalTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcGasTerminalTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc2x3::IfcGasTerminalTypeEnum::IfcGasTerminalTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcGasTerminalTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -4057,12 +4205,14 @@ Ifc2x3::IfcGeometricProjectionEnum::IfcGeometricProjectionEnum(IfcEntityInstance
}
Ifc2x3::IfcGeometricProjectionEnum::IfcGeometricProjectionEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcGeometricProjectionEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc2x3::IfcGeometricProjectionEnum::IfcGeometricProjectionEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcGeometricProjectionEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -4099,12 +4249,14 @@ Ifc2x3::IfcGlobalOrLocalEnum::IfcGlobalOrLocalEnum(IfcEntityInstanceData* e) {
}
Ifc2x3::IfcGlobalOrLocalEnum::IfcGlobalOrLocalEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcGlobalOrLocalEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc2x3::IfcGlobalOrLocalEnum::IfcGlobalOrLocalEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcGlobalOrLocalEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -4134,12 +4286,14 @@ Ifc2x3::IfcHeatExchangerTypeEnum::IfcHeatExchangerTypeEnum(IfcEntityInstanceData
}
Ifc2x3::IfcHeatExchangerTypeEnum::IfcHeatExchangerTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcHeatExchangerTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc2x3::IfcHeatExchangerTypeEnum::IfcHeatExchangerTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcHeatExchangerTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -4171,12 +4325,14 @@ Ifc2x3::IfcHumidifierTypeEnum::IfcHumidifierTypeEnum(IfcEntityInstanceData* e) {
}
Ifc2x3::IfcHumidifierTypeEnum::IfcHumidifierTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcHumidifierTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc2x3::IfcHumidifierTypeEnum::IfcHumidifierTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcHumidifierTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -4219,12 +4375,14 @@ Ifc2x3::IfcInternalOrExternalEnum::IfcInternalOrExternalEnum(IfcEntityInstanceDa
}
Ifc2x3::IfcInternalOrExternalEnum::IfcInternalOrExternalEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcInternalOrExternalEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc2x3::IfcInternalOrExternalEnum::IfcInternalOrExternalEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcInternalOrExternalEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -4255,12 +4413,14 @@ Ifc2x3::IfcInventoryTypeEnum::IfcInventoryTypeEnum(IfcEntityInstanceData* e) {
}
Ifc2x3::IfcInventoryTypeEnum::IfcInventoryTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcInventoryTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc2x3::IfcInventoryTypeEnum::IfcInventoryTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcInventoryTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -4293,12 +4453,14 @@ Ifc2x3::IfcJunctionBoxTypeEnum::IfcJunctionBoxTypeEnum(IfcEntityInstanceData* e)
}
Ifc2x3::IfcJunctionBoxTypeEnum::IfcJunctionBoxTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcJunctionBoxTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc2x3::IfcJunctionBoxTypeEnum::IfcJunctionBoxTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcJunctionBoxTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -4328,12 +4490,14 @@ Ifc2x3::IfcLampTypeEnum::IfcLampTypeEnum(IfcEntityInstanceData* e) {
}
Ifc2x3::IfcLampTypeEnum::IfcLampTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcLampTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc2x3::IfcLampTypeEnum::IfcLampTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcLampTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -4369,12 +4533,14 @@ Ifc2x3::IfcLayerSetDirectionEnum::IfcLayerSetDirectionEnum(IfcEntityInstanceData
}
Ifc2x3::IfcLayerSetDirectionEnum::IfcLayerSetDirectionEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcLayerSetDirectionEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc2x3::IfcLayerSetDirectionEnum::IfcLayerSetDirectionEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcLayerSetDirectionEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -4405,12 +4571,14 @@ Ifc2x3::IfcLightDistributionCurveEnum::IfcLightDistributionCurveEnum(IfcEntityIn
}
Ifc2x3::IfcLightDistributionCurveEnum::IfcLightDistributionCurveEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcLightDistributionCurveEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc2x3::IfcLightDistributionCurveEnum::IfcLightDistributionCurveEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcLightDistributionCurveEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -4442,12 +4610,14 @@ Ifc2x3::IfcLightEmissionSourceEnum::IfcLightEmissionSourceEnum(IfcEntityInstance
}
Ifc2x3::IfcLightEmissionSourceEnum::IfcLightEmissionSourceEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcLightEmissionSourceEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc2x3::IfcLightEmissionSourceEnum::IfcLightEmissionSourceEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcLightEmissionSourceEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -4486,12 +4656,14 @@ Ifc2x3::IfcLightFixtureTypeEnum::IfcLightFixtureTypeEnum(IfcEntityInstanceData*
}
Ifc2x3::IfcLightFixtureTypeEnum::IfcLightFixtureTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcLightFixtureTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc2x3::IfcLightFixtureTypeEnum::IfcLightFixtureTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcLightFixtureTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -4523,12 +4695,14 @@ Ifc2x3::IfcLoadGroupTypeEnum::IfcLoadGroupTypeEnum(IfcEntityInstanceData* e) {
}
Ifc2x3::IfcLoadGroupTypeEnum::IfcLoadGroupTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcLoadGroupTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc2x3::IfcLoadGroupTypeEnum::IfcLoadGroupTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcLoadGroupTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -4562,12 +4736,14 @@ Ifc2x3::IfcLogicalOperatorEnum::IfcLogicalOperatorEnum(IfcEntityInstanceData* e)
}
Ifc2x3::IfcLogicalOperatorEnum::IfcLogicalOperatorEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcLogicalOperatorEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc2x3::IfcLogicalOperatorEnum::IfcLogicalOperatorEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcLogicalOperatorEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -4597,12 +4773,14 @@ Ifc2x3::IfcMemberTypeEnum::IfcMemberTypeEnum(IfcEntityInstanceData* e) {
}
Ifc2x3::IfcMemberTypeEnum::IfcMemberTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcMemberTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc2x3::IfcMemberTypeEnum::IfcMemberTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcMemberTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -4644,12 +4822,14 @@ Ifc2x3::IfcMotorConnectionTypeEnum::IfcMotorConnectionTypeEnum(IfcEntityInstance
}
Ifc2x3::IfcMotorConnectionTypeEnum::IfcMotorConnectionTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcMotorConnectionTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc2x3::IfcMotorConnectionTypeEnum::IfcMotorConnectionTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcMotorConnectionTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -4682,12 +4862,14 @@ Ifc2x3::IfcNullStyle::IfcNullStyle(IfcEntityInstanceData* e) {
}
Ifc2x3::IfcNullStyle::IfcNullStyle(Value v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcNullStyle_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc2x3::IfcNullStyle::IfcNullStyle(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcNullStyle_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -4716,12 +4898,14 @@ Ifc2x3::IfcObjectTypeEnum::IfcObjectTypeEnum(IfcEntityInstanceData* e) {
}
Ifc2x3::IfcObjectTypeEnum::IfcObjectTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcObjectTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc2x3::IfcObjectTypeEnum::IfcObjectTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcObjectTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -4757,12 +4941,14 @@ Ifc2x3::IfcObjectiveEnum::IfcObjectiveEnum(IfcEntityInstanceData* e) {
}
Ifc2x3::IfcObjectiveEnum::IfcObjectiveEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcObjectiveEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc2x3::IfcObjectiveEnum::IfcObjectiveEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcObjectiveEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -4798,12 +4984,14 @@ Ifc2x3::IfcOccupantTypeEnum::IfcOccupantTypeEnum(IfcEntityInstanceData* e) {
}
Ifc2x3::IfcOccupantTypeEnum::IfcOccupantTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcOccupantTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc2x3::IfcOccupantTypeEnum::IfcOccupantTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcOccupantTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -4840,12 +5028,14 @@ Ifc2x3::IfcOutletTypeEnum::IfcOutletTypeEnum(IfcEntityInstanceData* e) {
}
Ifc2x3::IfcOutletTypeEnum::IfcOutletTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcOutletTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc2x3::IfcOutletTypeEnum::IfcOutletTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcOutletTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -4878,12 +5068,14 @@ Ifc2x3::IfcPermeableCoveringOperationEnum::IfcPermeableCoveringOperationEnum(Ifc
}
Ifc2x3::IfcPermeableCoveringOperationEnum::IfcPermeableCoveringOperationEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcPermeableCoveringOperationEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc2x3::IfcPermeableCoveringOperationEnum::IfcPermeableCoveringOperationEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcPermeableCoveringOperationEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -4916,12 +5108,14 @@ Ifc2x3::IfcPhysicalOrVirtualEnum::IfcPhysicalOrVirtualEnum(IfcEntityInstanceData
}
Ifc2x3::IfcPhysicalOrVirtualEnum::IfcPhysicalOrVirtualEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcPhysicalOrVirtualEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc2x3::IfcPhysicalOrVirtualEnum::IfcPhysicalOrVirtualEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcPhysicalOrVirtualEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -4952,12 +5146,14 @@ Ifc2x3::IfcPileConstructionEnum::IfcPileConstructionEnum(IfcEntityInstanceData*
}
Ifc2x3::IfcPileConstructionEnum::IfcPileConstructionEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcPileConstructionEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc2x3::IfcPileConstructionEnum::IfcPileConstructionEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcPileConstructionEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -4991,12 +5187,14 @@ Ifc2x3::IfcPileTypeEnum::IfcPileTypeEnum(IfcEntityInstanceData* e) {
}
Ifc2x3::IfcPileTypeEnum::IfcPileTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcPileTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc2x3::IfcPileTypeEnum::IfcPileTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcPileTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -5029,12 +5227,14 @@ Ifc2x3::IfcPipeFittingTypeEnum::IfcPipeFittingTypeEnum(IfcEntityInstanceData* e)
}
Ifc2x3::IfcPipeFittingTypeEnum::IfcPipeFittingTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcPipeFittingTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc2x3::IfcPipeFittingTypeEnum::IfcPipeFittingTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcPipeFittingTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -5071,12 +5271,14 @@ Ifc2x3::IfcPipeSegmentTypeEnum::IfcPipeSegmentTypeEnum(IfcEntityInstanceData* e)
}
Ifc2x3::IfcPipeSegmentTypeEnum::IfcPipeSegmentTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcPipeSegmentTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc2x3::IfcPipeSegmentTypeEnum::IfcPipeSegmentTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcPipeSegmentTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -5110,12 +5312,14 @@ Ifc2x3::IfcPlateTypeEnum::IfcPlateTypeEnum(IfcEntityInstanceData* e) {
}
Ifc2x3::IfcPlateTypeEnum::IfcPlateTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcPlateTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc2x3::IfcPlateTypeEnum::IfcPlateTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcPlateTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -5147,12 +5351,14 @@ Ifc2x3::IfcProcedureTypeEnum::IfcProcedureTypeEnum(IfcEntityInstanceData* e) {
}
Ifc2x3::IfcProcedureTypeEnum::IfcProcedureTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcProcedureTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc2x3::IfcProcedureTypeEnum::IfcProcedureTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcProcedureTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -5189,12 +5395,14 @@ Ifc2x3::IfcProfileTypeEnum::IfcProfileTypeEnum(IfcEntityInstanceData* e) {
}
Ifc2x3::IfcProfileTypeEnum::IfcProfileTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcProfileTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc2x3::IfcProfileTypeEnum::IfcProfileTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcProfileTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -5224,12 +5432,14 @@ Ifc2x3::IfcProjectOrderRecordTypeEnum::IfcProjectOrderRecordTypeEnum(IfcEntityIn
}
Ifc2x3::IfcProjectOrderRecordTypeEnum::IfcProjectOrderRecordTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcProjectOrderRecordTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc2x3::IfcProjectOrderRecordTypeEnum::IfcProjectOrderRecordTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcProjectOrderRecordTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -5264,12 +5474,14 @@ Ifc2x3::IfcProjectOrderTypeEnum::IfcProjectOrderTypeEnum(IfcEntityInstanceData*
}
Ifc2x3::IfcProjectOrderTypeEnum::IfcProjectOrderTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcProjectOrderTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc2x3::IfcProjectOrderTypeEnum::IfcProjectOrderTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcProjectOrderTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -5304,12 +5516,14 @@ Ifc2x3::IfcProjectedOrTrueLengthEnum::IfcProjectedOrTrueLengthEnum(IfcEntityInst
}
Ifc2x3::IfcProjectedOrTrueLengthEnum::IfcProjectedOrTrueLengthEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcProjectedOrTrueLengthEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc2x3::IfcProjectedOrTrueLengthEnum::IfcProjectedOrTrueLengthEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcProjectedOrTrueLengthEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -5339,12 +5553,14 @@ Ifc2x3::IfcPropertySourceEnum::IfcPropertySourceEnum(IfcEntityInstanceData* e) {
}
Ifc2x3::IfcPropertySourceEnum::IfcPropertySourceEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcPropertySourceEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc2x3::IfcPropertySourceEnum::IfcPropertySourceEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcPropertySourceEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -5381,12 +5597,14 @@ Ifc2x3::IfcProtectiveDeviceTypeEnum::IfcProtectiveDeviceTypeEnum(IfcEntityInstan
}
Ifc2x3::IfcProtectiveDeviceTypeEnum::IfcProtectiveDeviceTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcProtectiveDeviceTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc2x3::IfcProtectiveDeviceTypeEnum::IfcProtectiveDeviceTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcProtectiveDeviceTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -5422,12 +5640,14 @@ Ifc2x3::IfcPumpTypeEnum::IfcPumpTypeEnum(IfcEntityInstanceData* e) {
}
Ifc2x3::IfcPumpTypeEnum::IfcPumpTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcPumpTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc2x3::IfcPumpTypeEnum::IfcPumpTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcPumpTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -5462,12 +5682,14 @@ Ifc2x3::IfcRailingTypeEnum::IfcRailingTypeEnum(IfcEntityInstanceData* e) {
}
Ifc2x3::IfcRailingTypeEnum::IfcRailingTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcRailingTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc2x3::IfcRailingTypeEnum::IfcRailingTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcRailingTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -5500,12 +5722,14 @@ Ifc2x3::IfcRampFlightTypeEnum::IfcRampFlightTypeEnum(IfcEntityInstanceData* e) {
}
Ifc2x3::IfcRampFlightTypeEnum::IfcRampFlightTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcRampFlightTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc2x3::IfcRampFlightTypeEnum::IfcRampFlightTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcRampFlightTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -5537,12 +5761,14 @@ Ifc2x3::IfcRampTypeEnum::IfcRampTypeEnum(IfcEntityInstanceData* e) {
}
Ifc2x3::IfcRampTypeEnum::IfcRampTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcRampTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc2x3::IfcRampTypeEnum::IfcRampTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcRampTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -5578,12 +5804,14 @@ Ifc2x3::IfcReflectanceMethodEnum::IfcReflectanceMethodEnum(IfcEntityInstanceData
}
Ifc2x3::IfcReflectanceMethodEnum::IfcReflectanceMethodEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcReflectanceMethodEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc2x3::IfcReflectanceMethodEnum::IfcReflectanceMethodEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcReflectanceMethodEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -5621,12 +5849,14 @@ Ifc2x3::IfcReinforcingBarRoleEnum::IfcReinforcingBarRoleEnum(IfcEntityInstanceDa
}
Ifc2x3::IfcReinforcingBarRoleEnum::IfcReinforcingBarRoleEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcReinforcingBarRoleEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc2x3::IfcReinforcingBarRoleEnum::IfcReinforcingBarRoleEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcReinforcingBarRoleEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -5663,12 +5893,14 @@ Ifc2x3::IfcReinforcingBarSurfaceEnum::IfcReinforcingBarSurfaceEnum(IfcEntityInst
}
Ifc2x3::IfcReinforcingBarSurfaceEnum::IfcReinforcingBarSurfaceEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcReinforcingBarSurfaceEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc2x3::IfcReinforcingBarSurfaceEnum::IfcReinforcingBarSurfaceEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcReinforcingBarSurfaceEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -5698,12 +5930,14 @@ Ifc2x3::IfcResourceConsumptionEnum::IfcResourceConsumptionEnum(IfcEntityInstance
}
Ifc2x3::IfcResourceConsumptionEnum::IfcResourceConsumptionEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcResourceConsumptionEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc2x3::IfcResourceConsumptionEnum::IfcResourceConsumptionEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcResourceConsumptionEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -5739,12 +5973,14 @@ Ifc2x3::IfcRibPlateDirectionEnum::IfcRibPlateDirectionEnum(IfcEntityInstanceData
}
Ifc2x3::IfcRibPlateDirectionEnum::IfcRibPlateDirectionEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcRibPlateDirectionEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc2x3::IfcRibPlateDirectionEnum::IfcRibPlateDirectionEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcRibPlateDirectionEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -5774,12 +6010,14 @@ Ifc2x3::IfcRoleEnum::IfcRoleEnum(IfcEntityInstanceData* e) {
}
Ifc2x3::IfcRoleEnum::IfcRoleEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcRoleEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc2x3::IfcRoleEnum::IfcRoleEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcRoleEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -5830,12 +6068,14 @@ Ifc2x3::IfcRoofTypeEnum::IfcRoofTypeEnum(IfcEntityInstanceData* e) {
}
Ifc2x3::IfcRoofTypeEnum::IfcRoofTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcRoofTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc2x3::IfcRoofTypeEnum::IfcRoofTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcRoofTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -5877,12 +6117,14 @@ Ifc2x3::IfcSIPrefix::IfcSIPrefix(IfcEntityInstanceData* e) {
}
Ifc2x3::IfcSIPrefix::IfcSIPrefix(Value v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcSIPrefix_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc2x3::IfcSIPrefix::IfcSIPrefix(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcSIPrefix_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -5926,12 +6168,14 @@ Ifc2x3::IfcSIUnitName::IfcSIUnitName(IfcEntityInstanceData* e) {
}
Ifc2x3::IfcSIUnitName::IfcSIUnitName(Value v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcSIUnitName_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc2x3::IfcSIUnitName::IfcSIUnitName(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcSIUnitName_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -5989,12 +6233,14 @@ Ifc2x3::IfcSanitaryTerminalTypeEnum::IfcSanitaryTerminalTypeEnum(IfcEntityInstan
}
Ifc2x3::IfcSanitaryTerminalTypeEnum::IfcSanitaryTerminalTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcSanitaryTerminalTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc2x3::IfcSanitaryTerminalTypeEnum::IfcSanitaryTerminalTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcSanitaryTerminalTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -6034,12 +6280,14 @@ Ifc2x3::IfcSectionTypeEnum::IfcSectionTypeEnum(IfcEntityInstanceData* e) {
}
Ifc2x3::IfcSectionTypeEnum::IfcSectionTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcSectionTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc2x3::IfcSectionTypeEnum::IfcSectionTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcSectionTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -6069,12 +6317,14 @@ Ifc2x3::IfcSensorTypeEnum::IfcSensorTypeEnum(IfcEntityInstanceData* e) {
}
Ifc2x3::IfcSensorTypeEnum::IfcSensorTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcSensorTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc2x3::IfcSensorTypeEnum::IfcSensorTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcSensorTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -6117,12 +6367,14 @@ Ifc2x3::IfcSequenceEnum::IfcSequenceEnum(IfcEntityInstanceData* e) {
}
Ifc2x3::IfcSequenceEnum::IfcSequenceEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcSequenceEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc2x3::IfcSequenceEnum::IfcSequenceEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcSequenceEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -6155,12 +6407,14 @@ Ifc2x3::IfcServiceLifeFactorTypeEnum::IfcServiceLifeFactorTypeEnum(IfcEntityInst
}
Ifc2x3::IfcServiceLifeFactorTypeEnum::IfcServiceLifeFactorTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcServiceLifeFactorTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc2x3::IfcServiceLifeFactorTypeEnum::IfcServiceLifeFactorTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcServiceLifeFactorTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -6197,12 +6451,14 @@ Ifc2x3::IfcServiceLifeTypeEnum::IfcServiceLifeTypeEnum(IfcEntityInstanceData* e)
}
Ifc2x3::IfcServiceLifeTypeEnum::IfcServiceLifeTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcServiceLifeTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc2x3::IfcServiceLifeTypeEnum::IfcServiceLifeTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcServiceLifeTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -6235,12 +6491,14 @@ Ifc2x3::IfcSlabTypeEnum::IfcSlabTypeEnum(IfcEntityInstanceData* e) {
}
Ifc2x3::IfcSlabTypeEnum::IfcSlabTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcSlabTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc2x3::IfcSlabTypeEnum::IfcSlabTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcSlabTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -6274,12 +6532,14 @@ Ifc2x3::IfcSoundScaleEnum::IfcSoundScaleEnum(IfcEntityInstanceData* e) {
}
Ifc2x3::IfcSoundScaleEnum::IfcSoundScaleEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcSoundScaleEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc2x3::IfcSoundScaleEnum::IfcSoundScaleEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcSoundScaleEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -6314,12 +6574,14 @@ Ifc2x3::IfcSpaceHeaterTypeEnum::IfcSpaceHeaterTypeEnum(IfcEntityInstanceData* e)
}
Ifc2x3::IfcSpaceHeaterTypeEnum::IfcSpaceHeaterTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcSpaceHeaterTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc2x3::IfcSpaceHeaterTypeEnum::IfcSpaceHeaterTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcSpaceHeaterTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -6356,12 +6618,14 @@ Ifc2x3::IfcSpaceTypeEnum::IfcSpaceTypeEnum(IfcEntityInstanceData* e) {
}
Ifc2x3::IfcSpaceTypeEnum::IfcSpaceTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcSpaceTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc2x3::IfcSpaceTypeEnum::IfcSpaceTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcSpaceTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -6391,12 +6655,14 @@ Ifc2x3::IfcStackTerminalTypeEnum::IfcStackTerminalTypeEnum(IfcEntityInstanceData
}
Ifc2x3::IfcStackTerminalTypeEnum::IfcStackTerminalTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcStackTerminalTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc2x3::IfcStackTerminalTypeEnum::IfcStackTerminalTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcStackTerminalTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -6429,12 +6695,14 @@ Ifc2x3::IfcStairFlightTypeEnum::IfcStairFlightTypeEnum(IfcEntityInstanceData* e)
}
Ifc2x3::IfcStairFlightTypeEnum::IfcStairFlightTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcStairFlightTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc2x3::IfcStairFlightTypeEnum::IfcStairFlightTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcStairFlightTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -6469,12 +6737,14 @@ Ifc2x3::IfcStairTypeEnum::IfcStairTypeEnum(IfcEntityInstanceData* e) {
}
Ifc2x3::IfcStairTypeEnum::IfcStairTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcStairTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc2x3::IfcStairTypeEnum::IfcStairTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcStairTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -6518,12 +6788,14 @@ Ifc2x3::IfcStateEnum::IfcStateEnum(IfcEntityInstanceData* e) {
}
Ifc2x3::IfcStateEnum::IfcStateEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcStateEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc2x3::IfcStateEnum::IfcStateEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcStateEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -6556,12 +6828,14 @@ Ifc2x3::IfcStructuralCurveTypeEnum::IfcStructuralCurveTypeEnum(IfcEntityInstance
}
Ifc2x3::IfcStructuralCurveTypeEnum::IfcStructuralCurveTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcStructuralCurveTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc2x3::IfcStructuralCurveTypeEnum::IfcStructuralCurveTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcStructuralCurveTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -6596,12 +6870,14 @@ Ifc2x3::IfcStructuralSurfaceTypeEnum::IfcStructuralSurfaceTypeEnum(IfcEntityInst
}
Ifc2x3::IfcStructuralSurfaceTypeEnum::IfcStructuralSurfaceTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcStructuralSurfaceTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc2x3::IfcStructuralSurfaceTypeEnum::IfcStructuralSurfaceTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcStructuralSurfaceTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -6634,12 +6910,14 @@ Ifc2x3::IfcSurfaceSide::IfcSurfaceSide(IfcEntityInstanceData* e) {
}
Ifc2x3::IfcSurfaceSide::IfcSurfaceSide(Value v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcSurfaceSide_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc2x3::IfcSurfaceSide::IfcSurfaceSide(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcSurfaceSide_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -6670,12 +6948,14 @@ Ifc2x3::IfcSurfaceTextureEnum::IfcSurfaceTextureEnum(IfcEntityInstanceData* e) {
}
Ifc2x3::IfcSurfaceTextureEnum::IfcSurfaceTextureEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcSurfaceTextureEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc2x3::IfcSurfaceTextureEnum::IfcSurfaceTextureEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcSurfaceTextureEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -6712,12 +6992,14 @@ Ifc2x3::IfcSwitchingDeviceTypeEnum::IfcSwitchingDeviceTypeEnum(IfcEntityInstance
}
Ifc2x3::IfcSwitchingDeviceTypeEnum::IfcSwitchingDeviceTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcSwitchingDeviceTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc2x3::IfcSwitchingDeviceTypeEnum::IfcSwitchingDeviceTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcSwitchingDeviceTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -6752,12 +7034,14 @@ Ifc2x3::IfcTankTypeEnum::IfcTankTypeEnum(IfcEntityInstanceData* e) {
}
Ifc2x3::IfcTankTypeEnum::IfcTankTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcTankTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc2x3::IfcTankTypeEnum::IfcTankTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcTankTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -6791,12 +7075,14 @@ Ifc2x3::IfcTendonTypeEnum::IfcTendonTypeEnum(IfcEntityInstanceData* e) {
}
Ifc2x3::IfcTendonTypeEnum::IfcTendonTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcTendonTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc2x3::IfcTendonTypeEnum::IfcTendonTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcTendonTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -6830,12 +7116,14 @@ Ifc2x3::IfcTextPath::IfcTextPath(IfcEntityInstanceData* e) {
}
Ifc2x3::IfcTextPath::IfcTextPath(Value v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcTextPath_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc2x3::IfcTextPath::IfcTextPath(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcTextPath_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -6867,12 +7155,14 @@ Ifc2x3::IfcThermalLoadSourceEnum::IfcThermalLoadSourceEnum(IfcEntityInstanceData
}
Ifc2x3::IfcThermalLoadSourceEnum::IfcThermalLoadSourceEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcThermalLoadSourceEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc2x3::IfcThermalLoadSourceEnum::IfcThermalLoadSourceEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcThermalLoadSourceEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -6913,12 +7203,14 @@ Ifc2x3::IfcThermalLoadTypeEnum::IfcThermalLoadTypeEnum(IfcEntityInstanceData* e)
}
Ifc2x3::IfcThermalLoadTypeEnum::IfcThermalLoadTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcThermalLoadTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc2x3::IfcThermalLoadTypeEnum::IfcThermalLoadTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcThermalLoadTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -6950,12 +7242,14 @@ Ifc2x3::IfcTimeSeriesDataTypeEnum::IfcTimeSeriesDataTypeEnum(IfcEntityInstanceDa
}
Ifc2x3::IfcTimeSeriesDataTypeEnum::IfcTimeSeriesDataTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcTimeSeriesDataTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc2x3::IfcTimeSeriesDataTypeEnum::IfcTimeSeriesDataTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcTimeSeriesDataTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -6990,12 +7284,14 @@ Ifc2x3::IfcTimeSeriesScheduleTypeEnum::IfcTimeSeriesScheduleTypeEnum(IfcEntityIn
}
Ifc2x3::IfcTimeSeriesScheduleTypeEnum::IfcTimeSeriesScheduleTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcTimeSeriesScheduleTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc2x3::IfcTimeSeriesScheduleTypeEnum::IfcTimeSeriesScheduleTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcTimeSeriesScheduleTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -7029,12 +7325,14 @@ Ifc2x3::IfcTransformerTypeEnum::IfcTransformerTypeEnum(IfcEntityInstanceData* e)
}
Ifc2x3::IfcTransformerTypeEnum::IfcTransformerTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcTransformerTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc2x3::IfcTransformerTypeEnum::IfcTransformerTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcTransformerTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -7067,12 +7365,14 @@ Ifc2x3::IfcTransitionCode::IfcTransitionCode(IfcEntityInstanceData* e) {
}
Ifc2x3::IfcTransitionCode::IfcTransitionCode(Value v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcTransitionCode_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc2x3::IfcTransitionCode::IfcTransitionCode(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcTransitionCode_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -7104,12 +7404,14 @@ Ifc2x3::IfcTransportElementTypeEnum::IfcTransportElementTypeEnum(IfcEntityInstan
}
Ifc2x3::IfcTransportElementTypeEnum::IfcTransportElementTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcTransportElementTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc2x3::IfcTransportElementTypeEnum::IfcTransportElementTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcTransportElementTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -7142,12 +7444,14 @@ Ifc2x3::IfcTrimmingPreference::IfcTrimmingPreference(IfcEntityInstanceData* e) {
}
Ifc2x3::IfcTrimmingPreference::IfcTrimmingPreference(Value v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcTrimmingPreference_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc2x3::IfcTrimmingPreference::IfcTrimmingPreference(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcTrimmingPreference_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -7178,12 +7482,14 @@ Ifc2x3::IfcTubeBundleTypeEnum::IfcTubeBundleTypeEnum(IfcEntityInstanceData* e) {
}
Ifc2x3::IfcTubeBundleTypeEnum::IfcTubeBundleTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcTubeBundleTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc2x3::IfcTubeBundleTypeEnum::IfcTubeBundleTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcTubeBundleTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -7214,12 +7520,14 @@ Ifc2x3::IfcUnitEnum::IfcUnitEnum(IfcEntityInstanceData* e) {
}
Ifc2x3::IfcUnitEnum::IfcUnitEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcUnitEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc2x3::IfcUnitEnum::IfcUnitEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcUnitEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -7277,12 +7585,14 @@ Ifc2x3::IfcUnitaryEquipmentTypeEnum::IfcUnitaryEquipmentTypeEnum(IfcEntityInstan
}
Ifc2x3::IfcUnitaryEquipmentTypeEnum::IfcUnitaryEquipmentTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcUnitaryEquipmentTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc2x3::IfcUnitaryEquipmentTypeEnum::IfcUnitaryEquipmentTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcUnitaryEquipmentTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -7316,12 +7626,14 @@ Ifc2x3::IfcValveTypeEnum::IfcValveTypeEnum(IfcEntityInstanceData* e) {
}
Ifc2x3::IfcValveTypeEnum::IfcValveTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcValveTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc2x3::IfcValveTypeEnum::IfcValveTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcValveTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -7372,12 +7684,14 @@ Ifc2x3::IfcVibrationIsolatorTypeEnum::IfcVibrationIsolatorTypeEnum(IfcEntityInst
}
Ifc2x3::IfcVibrationIsolatorTypeEnum::IfcVibrationIsolatorTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcVibrationIsolatorTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc2x3::IfcVibrationIsolatorTypeEnum::IfcVibrationIsolatorTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcVibrationIsolatorTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -7409,12 +7723,14 @@ Ifc2x3::IfcWallTypeEnum::IfcWallTypeEnum(IfcEntityInstanceData* e) {
}
Ifc2x3::IfcWallTypeEnum::IfcWallTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcWallTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc2x3::IfcWallTypeEnum::IfcWallTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcWallTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -7449,12 +7765,14 @@ Ifc2x3::IfcWasteTerminalTypeEnum::IfcWasteTerminalTypeEnum(IfcEntityInstanceData
}
Ifc2x3::IfcWasteTerminalTypeEnum::IfcWasteTerminalTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcWasteTerminalTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc2x3::IfcWasteTerminalTypeEnum::IfcWasteTerminalTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcWasteTerminalTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -7494,12 +7812,14 @@ Ifc2x3::IfcWindowPanelOperationEnum::IfcWindowPanelOperationEnum(IfcEntityInstan
}
Ifc2x3::IfcWindowPanelOperationEnum::IfcWindowPanelOperationEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcWindowPanelOperationEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc2x3::IfcWindowPanelOperationEnum::IfcWindowPanelOperationEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcWindowPanelOperationEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -7541,12 +7861,14 @@ Ifc2x3::IfcWindowPanelPositionEnum::IfcWindowPanelPositionEnum(IfcEntityInstance
}
Ifc2x3::IfcWindowPanelPositionEnum::IfcWindowPanelPositionEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcWindowPanelPositionEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc2x3::IfcWindowPanelPositionEnum::IfcWindowPanelPositionEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcWindowPanelPositionEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -7580,12 +7902,14 @@ Ifc2x3::IfcWindowStyleConstructionEnum::IfcWindowStyleConstructionEnum(IfcEntity
}
Ifc2x3::IfcWindowStyleConstructionEnum::IfcWindowStyleConstructionEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcWindowStyleConstructionEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc2x3::IfcWindowStyleConstructionEnum::IfcWindowStyleConstructionEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcWindowStyleConstructionEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -7621,12 +7945,14 @@ Ifc2x3::IfcWindowStyleOperationEnum::IfcWindowStyleOperationEnum(IfcEntityInstan
}
Ifc2x3::IfcWindowStyleOperationEnum::IfcWindowStyleOperationEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcWindowStyleOperationEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc2x3::IfcWindowStyleOperationEnum::IfcWindowStyleOperationEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcWindowStyleOperationEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -7665,12 +7991,14 @@ Ifc2x3::IfcWorkControlTypeEnum::IfcWorkControlTypeEnum(IfcEntityInstanceData* e)
}
Ifc2x3::IfcWorkControlTypeEnum::IfcWorkControlTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcWorkControlTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc2x3::IfcWorkControlTypeEnum::IfcWorkControlTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC2X3_IfcWorkControlTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
diff --git a/src/ifcparse/Ifc4.cpp b/src/ifcparse/Ifc4.cpp
index 88fda3f4ca..09facd62b4 100644
--- a/src/ifcparse/Ifc4.cpp
+++ b/src/ifcparse/Ifc4.cpp
@@ -1160,12 +1160,14 @@ Ifc4::IfcActionRequestTypeEnum::IfcActionRequestTypeEnum(IfcEntityInstanceData*
}
Ifc4::IfcActionRequestTypeEnum::IfcActionRequestTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcActionRequestTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4::IfcActionRequestTypeEnum::IfcActionRequestTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcActionRequestTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -1200,12 +1202,14 @@ Ifc4::IfcActionSourceTypeEnum::IfcActionSourceTypeEnum(IfcEntityInstanceData* e)
}
Ifc4::IfcActionSourceTypeEnum::IfcActionSourceTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcActionSourceTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4::IfcActionSourceTypeEnum::IfcActionSourceTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcActionSourceTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -1260,12 +1264,14 @@ Ifc4::IfcActionTypeEnum::IfcActionTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4::IfcActionTypeEnum::IfcActionTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcActionTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4::IfcActionTypeEnum::IfcActionTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcActionTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -1298,12 +1304,14 @@ Ifc4::IfcActuatorTypeEnum::IfcActuatorTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4::IfcActuatorTypeEnum::IfcActuatorTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcActuatorTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4::IfcActuatorTypeEnum::IfcActuatorTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcActuatorTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -1338,12 +1346,14 @@ Ifc4::IfcAddressTypeEnum::IfcAddressTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4::IfcAddressTypeEnum::IfcAddressTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcAddressTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4::IfcAddressTypeEnum::IfcAddressTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcAddressTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -1376,12 +1386,14 @@ Ifc4::IfcAirTerminalBoxTypeEnum::IfcAirTerminalBoxTypeEnum(IfcEntityInstanceData
}
Ifc4::IfcAirTerminalBoxTypeEnum::IfcAirTerminalBoxTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcAirTerminalBoxTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4::IfcAirTerminalBoxTypeEnum::IfcAirTerminalBoxTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcAirTerminalBoxTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -1414,12 +1426,14 @@ Ifc4::IfcAirTerminalTypeEnum::IfcAirTerminalTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4::IfcAirTerminalTypeEnum::IfcAirTerminalTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcAirTerminalTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4::IfcAirTerminalTypeEnum::IfcAirTerminalTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcAirTerminalTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -1453,12 +1467,14 @@ Ifc4::IfcAirToAirHeatRecoveryTypeEnum::IfcAirToAirHeatRecoveryTypeEnum(IfcEntity
}
Ifc4::IfcAirToAirHeatRecoveryTypeEnum::IfcAirToAirHeatRecoveryTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcAirToAirHeatRecoveryTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4::IfcAirToAirHeatRecoveryTypeEnum::IfcAirToAirHeatRecoveryTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcAirToAirHeatRecoveryTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -1497,12 +1513,14 @@ Ifc4::IfcAlarmTypeEnum::IfcAlarmTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4::IfcAlarmTypeEnum::IfcAlarmTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcAlarmTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4::IfcAlarmTypeEnum::IfcAlarmTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcAlarmTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -1538,12 +1556,14 @@ Ifc4::IfcAnalysisModelTypeEnum::IfcAnalysisModelTypeEnum(IfcEntityInstanceData*
}
Ifc4::IfcAnalysisModelTypeEnum::IfcAnalysisModelTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcAnalysisModelTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4::IfcAnalysisModelTypeEnum::IfcAnalysisModelTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcAnalysisModelTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -1576,12 +1596,14 @@ Ifc4::IfcAnalysisTheoryTypeEnum::IfcAnalysisTheoryTypeEnum(IfcEntityInstanceData
}
Ifc4::IfcAnalysisTheoryTypeEnum::IfcAnalysisTheoryTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcAnalysisTheoryTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4::IfcAnalysisTheoryTypeEnum::IfcAnalysisTheoryTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcAnalysisTheoryTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -1615,12 +1637,14 @@ Ifc4::IfcArithmeticOperatorEnum::IfcArithmeticOperatorEnum(IfcEntityInstanceData
}
Ifc4::IfcArithmeticOperatorEnum::IfcArithmeticOperatorEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcArithmeticOperatorEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4::IfcArithmeticOperatorEnum::IfcArithmeticOperatorEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcArithmeticOperatorEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -1652,12 +1676,14 @@ Ifc4::IfcAssemblyPlaceEnum::IfcAssemblyPlaceEnum(IfcEntityInstanceData* e) {
}
Ifc4::IfcAssemblyPlaceEnum::IfcAssemblyPlaceEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcAssemblyPlaceEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4::IfcAssemblyPlaceEnum::IfcAssemblyPlaceEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcAssemblyPlaceEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -1688,12 +1714,14 @@ Ifc4::IfcAudioVisualApplianceTypeEnum::IfcAudioVisualApplianceTypeEnum(IfcEntity
}
Ifc4::IfcAudioVisualApplianceTypeEnum::IfcAudioVisualApplianceTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcAudioVisualApplianceTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4::IfcAudioVisualApplianceTypeEnum::IfcAudioVisualApplianceTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcAudioVisualApplianceTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -1734,12 +1762,14 @@ Ifc4::IfcBSplineCurveForm::IfcBSplineCurveForm(IfcEntityInstanceData* e) {
}
Ifc4::IfcBSplineCurveForm::IfcBSplineCurveForm(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcBSplineCurveForm_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4::IfcBSplineCurveForm::IfcBSplineCurveForm(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcBSplineCurveForm_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -1773,12 +1803,14 @@ Ifc4::IfcBSplineSurfaceForm::IfcBSplineSurfaceForm(IfcEntityInstanceData* e) {
}
Ifc4::IfcBSplineSurfaceForm::IfcBSplineSurfaceForm(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcBSplineSurfaceForm_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4::IfcBSplineSurfaceForm::IfcBSplineSurfaceForm(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcBSplineSurfaceForm_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -1817,12 +1849,14 @@ Ifc4::IfcBeamTypeEnum::IfcBeamTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4::IfcBeamTypeEnum::IfcBeamTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcBeamTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4::IfcBeamTypeEnum::IfcBeamTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcBeamTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -1858,12 +1892,14 @@ Ifc4::IfcBenchmarkEnum::IfcBenchmarkEnum(IfcEntityInstanceData* e) {
}
Ifc4::IfcBenchmarkEnum::IfcBenchmarkEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcBenchmarkEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4::IfcBenchmarkEnum::IfcBenchmarkEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcBenchmarkEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -1901,12 +1937,14 @@ Ifc4::IfcBoilerTypeEnum::IfcBoilerTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4::IfcBoilerTypeEnum::IfcBoilerTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcBoilerTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4::IfcBoilerTypeEnum::IfcBoilerTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcBoilerTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -1938,12 +1976,14 @@ Ifc4::IfcBooleanOperator::IfcBooleanOperator(IfcEntityInstanceData* e) {
}
Ifc4::IfcBooleanOperator::IfcBooleanOperator(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcBooleanOperator_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4::IfcBooleanOperator::IfcBooleanOperator(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcBooleanOperator_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -1974,12 +2014,14 @@ Ifc4::IfcBuildingElementPartTypeEnum::IfcBuildingElementPartTypeEnum(IfcEntityIn
}
Ifc4::IfcBuildingElementPartTypeEnum::IfcBuildingElementPartTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcBuildingElementPartTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4::IfcBuildingElementPartTypeEnum::IfcBuildingElementPartTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcBuildingElementPartTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -2011,12 +2053,14 @@ Ifc4::IfcBuildingElementProxyTypeEnum::IfcBuildingElementProxyTypeEnum(IfcEntity
}
Ifc4::IfcBuildingElementProxyTypeEnum::IfcBuildingElementProxyTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcBuildingElementProxyTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4::IfcBuildingElementProxyTypeEnum::IfcBuildingElementProxyTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcBuildingElementProxyTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -2051,12 +2095,14 @@ Ifc4::IfcBuildingSystemTypeEnum::IfcBuildingSystemTypeEnum(IfcEntityInstanceData
}
Ifc4::IfcBuildingSystemTypeEnum::IfcBuildingSystemTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcBuildingSystemTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4::IfcBuildingSystemTypeEnum::IfcBuildingSystemTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcBuildingSystemTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -2092,12 +2138,14 @@ Ifc4::IfcBurnerTypeEnum::IfcBurnerTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4::IfcBurnerTypeEnum::IfcBurnerTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcBurnerTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4::IfcBurnerTypeEnum::IfcBurnerTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcBurnerTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -2127,12 +2175,14 @@ Ifc4::IfcCableCarrierFittingTypeEnum::IfcCableCarrierFittingTypeEnum(IfcEntityIn
}
Ifc4::IfcCableCarrierFittingTypeEnum::IfcCableCarrierFittingTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcCableCarrierFittingTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4::IfcCableCarrierFittingTypeEnum::IfcCableCarrierFittingTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcCableCarrierFittingTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -2166,12 +2216,14 @@ Ifc4::IfcCableCarrierSegmentTypeEnum::IfcCableCarrierSegmentTypeEnum(IfcEntityIn
}
Ifc4::IfcCableCarrierSegmentTypeEnum::IfcCableCarrierSegmentTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcCableCarrierSegmentTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4::IfcCableCarrierSegmentTypeEnum::IfcCableCarrierSegmentTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcCableCarrierSegmentTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -2205,12 +2257,14 @@ Ifc4::IfcCableFittingTypeEnum::IfcCableFittingTypeEnum(IfcEntityInstanceData* e)
}
Ifc4::IfcCableFittingTypeEnum::IfcCableFittingTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcCableFittingTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4::IfcCableFittingTypeEnum::IfcCableFittingTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcCableFittingTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -2245,12 +2299,14 @@ Ifc4::IfcCableSegmentTypeEnum::IfcCableSegmentTypeEnum(IfcEntityInstanceData* e)
}
Ifc4::IfcCableSegmentTypeEnum::IfcCableSegmentTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcCableSegmentTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4::IfcCableSegmentTypeEnum::IfcCableSegmentTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcCableSegmentTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -2284,12 +2340,14 @@ Ifc4::IfcChangeActionEnum::IfcChangeActionEnum(IfcEntityInstanceData* e) {
}
Ifc4::IfcChangeActionEnum::IfcChangeActionEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcChangeActionEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4::IfcChangeActionEnum::IfcChangeActionEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcChangeActionEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -2322,12 +2380,14 @@ Ifc4::IfcChillerTypeEnum::IfcChillerTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4::IfcChillerTypeEnum::IfcChillerTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcChillerTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4::IfcChillerTypeEnum::IfcChillerTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcChillerTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -2360,12 +2420,14 @@ Ifc4::IfcChimneyTypeEnum::IfcChimneyTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4::IfcChimneyTypeEnum::IfcChimneyTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcChimneyTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4::IfcChimneyTypeEnum::IfcChimneyTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcChimneyTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -2395,12 +2457,14 @@ Ifc4::IfcCoilTypeEnum::IfcCoilTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4::IfcCoilTypeEnum::IfcCoilTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcCoilTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4::IfcCoilTypeEnum::IfcCoilTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcCoilTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -2437,12 +2501,14 @@ Ifc4::IfcColumnTypeEnum::IfcColumnTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4::IfcColumnTypeEnum::IfcColumnTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcColumnTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4::IfcColumnTypeEnum::IfcColumnTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcColumnTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -2474,12 +2540,14 @@ Ifc4::IfcCommunicationsApplianceTypeEnum::IfcCommunicationsApplianceTypeEnum(Ifc
}
Ifc4::IfcCommunicationsApplianceTypeEnum::IfcCommunicationsApplianceTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcCommunicationsApplianceTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4::IfcCommunicationsApplianceTypeEnum::IfcCommunicationsApplianceTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcCommunicationsApplianceTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -2521,12 +2589,14 @@ Ifc4::IfcComplexPropertyTemplateTypeEnum::IfcComplexPropertyTemplateTypeEnum(Ifc
}
Ifc4::IfcComplexPropertyTemplateTypeEnum::IfcComplexPropertyTemplateTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcComplexPropertyTemplateTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4::IfcComplexPropertyTemplateTypeEnum::IfcComplexPropertyTemplateTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcComplexPropertyTemplateTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -2556,12 +2626,14 @@ Ifc4::IfcCompressorTypeEnum::IfcCompressorTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4::IfcCompressorTypeEnum::IfcCompressorTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcCompressorTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4::IfcCompressorTypeEnum::IfcCompressorTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcCompressorTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -2606,12 +2678,14 @@ Ifc4::IfcCondenserTypeEnum::IfcCondenserTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4::IfcCondenserTypeEnum::IfcCondenserTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcCondenserTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4::IfcCondenserTypeEnum::IfcCondenserTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcCondenserTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -2648,12 +2722,14 @@ Ifc4::IfcConnectionTypeEnum::IfcConnectionTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4::IfcConnectionTypeEnum::IfcConnectionTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcConnectionTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4::IfcConnectionTypeEnum::IfcConnectionTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcConnectionTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -2685,12 +2761,14 @@ Ifc4::IfcConstraintEnum::IfcConstraintEnum(IfcEntityInstanceData* e) {
}
Ifc4::IfcConstraintEnum::IfcConstraintEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcConstraintEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4::IfcConstraintEnum::IfcConstraintEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcConstraintEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -2723,12 +2801,14 @@ Ifc4::IfcConstructionEquipmentResourceTypeEnum::IfcConstructionEquipmentResource
}
Ifc4::IfcConstructionEquipmentResourceTypeEnum::IfcConstructionEquipmentResourceTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcConstructionEquipmentResourceTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4::IfcConstructionEquipmentResourceTypeEnum::IfcConstructionEquipmentResourceTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcConstructionEquipmentResourceTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -2766,12 +2846,14 @@ Ifc4::IfcConstructionMaterialResourceTypeEnum::IfcConstructionMaterialResourceTy
}
Ifc4::IfcConstructionMaterialResourceTypeEnum::IfcConstructionMaterialResourceTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcConstructionMaterialResourceTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4::IfcConstructionMaterialResourceTypeEnum::IfcConstructionMaterialResourceTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcConstructionMaterialResourceTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -2810,12 +2892,14 @@ Ifc4::IfcConstructionProductResourceTypeEnum::IfcConstructionProductResourceType
}
Ifc4::IfcConstructionProductResourceTypeEnum::IfcConstructionProductResourceTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcConstructionProductResourceTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4::IfcConstructionProductResourceTypeEnum::IfcConstructionProductResourceTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcConstructionProductResourceTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -2847,12 +2931,14 @@ Ifc4::IfcControllerTypeEnum::IfcControllerTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4::IfcControllerTypeEnum::IfcControllerTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcControllerTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4::IfcControllerTypeEnum::IfcControllerTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcControllerTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -2887,12 +2973,14 @@ Ifc4::IfcCooledBeamTypeEnum::IfcCooledBeamTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4::IfcCooledBeamTypeEnum::IfcCooledBeamTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcCooledBeamTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4::IfcCooledBeamTypeEnum::IfcCooledBeamTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcCooledBeamTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -2924,12 +3012,14 @@ Ifc4::IfcCoolingTowerTypeEnum::IfcCoolingTowerTypeEnum(IfcEntityInstanceData* e)
}
Ifc4::IfcCoolingTowerTypeEnum::IfcCoolingTowerTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcCoolingTowerTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4::IfcCoolingTowerTypeEnum::IfcCoolingTowerTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcCoolingTowerTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -2962,12 +3052,14 @@ Ifc4::IfcCostItemTypeEnum::IfcCostItemTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4::IfcCostItemTypeEnum::IfcCostItemTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcCostItemTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4::IfcCostItemTypeEnum::IfcCostItemTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcCostItemTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -2997,12 +3089,14 @@ Ifc4::IfcCostScheduleTypeEnum::IfcCostScheduleTypeEnum(IfcEntityInstanceData* e)
}
Ifc4::IfcCostScheduleTypeEnum::IfcCostScheduleTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcCostScheduleTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4::IfcCostScheduleTypeEnum::IfcCostScheduleTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcCostScheduleTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -3039,12 +3133,14 @@ Ifc4::IfcCoveringTypeEnum::IfcCoveringTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4::IfcCoveringTypeEnum::IfcCoveringTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcCoveringTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4::IfcCoveringTypeEnum::IfcCoveringTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcCoveringTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -3084,12 +3180,14 @@ Ifc4::IfcCrewResourceTypeEnum::IfcCrewResourceTypeEnum(IfcEntityInstanceData* e)
}
Ifc4::IfcCrewResourceTypeEnum::IfcCrewResourceTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcCrewResourceTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4::IfcCrewResourceTypeEnum::IfcCrewResourceTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcCrewResourceTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -3121,12 +3219,14 @@ Ifc4::IfcCurtainWallTypeEnum::IfcCurtainWallTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4::IfcCurtainWallTypeEnum::IfcCurtainWallTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcCurtainWallTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4::IfcCurtainWallTypeEnum::IfcCurtainWallTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcCurtainWallTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -3156,12 +3256,14 @@ Ifc4::IfcCurveInterpolationEnum::IfcCurveInterpolationEnum(IfcEntityInstanceData
}
Ifc4::IfcCurveInterpolationEnum::IfcCurveInterpolationEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcCurveInterpolationEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4::IfcCurveInterpolationEnum::IfcCurveInterpolationEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcCurveInterpolationEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -3193,12 +3295,14 @@ Ifc4::IfcDamperTypeEnum::IfcDamperTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4::IfcDamperTypeEnum::IfcDamperTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcDamperTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4::IfcDamperTypeEnum::IfcDamperTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcDamperTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -3239,12 +3343,14 @@ Ifc4::IfcDataOriginEnum::IfcDataOriginEnum(IfcEntityInstanceData* e) {
}
Ifc4::IfcDataOriginEnum::IfcDataOriginEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcDataOriginEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4::IfcDataOriginEnum::IfcDataOriginEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcDataOriginEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -3277,12 +3383,14 @@ Ifc4::IfcDerivedUnitEnum::IfcDerivedUnitEnum(IfcEntityInstanceData* e) {
}
Ifc4::IfcDerivedUnitEnum::IfcDerivedUnitEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcDerivedUnitEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4::IfcDerivedUnitEnum::IfcDerivedUnitEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcDerivedUnitEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -3363,12 +3471,14 @@ Ifc4::IfcDirectionSenseEnum::IfcDirectionSenseEnum(IfcEntityInstanceData* e) {
}
Ifc4::IfcDirectionSenseEnum::IfcDirectionSenseEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcDirectionSenseEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4::IfcDirectionSenseEnum::IfcDirectionSenseEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcDirectionSenseEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -3398,12 +3508,14 @@ Ifc4::IfcDiscreteAccessoryTypeEnum::IfcDiscreteAccessoryTypeEnum(IfcEntityInstan
}
Ifc4::IfcDiscreteAccessoryTypeEnum::IfcDiscreteAccessoryTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcDiscreteAccessoryTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4::IfcDiscreteAccessoryTypeEnum::IfcDiscreteAccessoryTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcDiscreteAccessoryTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -3436,12 +3548,14 @@ Ifc4::IfcDistributionChamberElementTypeEnum::IfcDistributionChamberElementTypeEn
}
Ifc4::IfcDistributionChamberElementTypeEnum::IfcDistributionChamberElementTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcDistributionChamberElementTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4::IfcDistributionChamberElementTypeEnum::IfcDistributionChamberElementTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcDistributionChamberElementTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -3479,12 +3593,14 @@ Ifc4::IfcDistributionPortTypeEnum::IfcDistributionPortTypeEnum(IfcEntityInstance
}
Ifc4::IfcDistributionPortTypeEnum::IfcDistributionPortTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcDistributionPortTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4::IfcDistributionPortTypeEnum::IfcDistributionPortTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcDistributionPortTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -3518,12 +3634,14 @@ Ifc4::IfcDistributionSystemEnum::IfcDistributionSystemEnum(IfcEntityInstanceData
}
Ifc4::IfcDistributionSystemEnum::IfcDistributionSystemEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcDistributionSystemEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4::IfcDistributionSystemEnum::IfcDistributionSystemEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcDistributionSystemEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -3595,12 +3713,14 @@ Ifc4::IfcDocumentConfidentialityEnum::IfcDocumentConfidentialityEnum(IfcEntityIn
}
Ifc4::IfcDocumentConfidentialityEnum::IfcDocumentConfidentialityEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcDocumentConfidentialityEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4::IfcDocumentConfidentialityEnum::IfcDocumentConfidentialityEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcDocumentConfidentialityEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -3634,12 +3754,14 @@ Ifc4::IfcDocumentStatusEnum::IfcDocumentStatusEnum(IfcEntityInstanceData* e) {
}
Ifc4::IfcDocumentStatusEnum::IfcDocumentStatusEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcDocumentStatusEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4::IfcDocumentStatusEnum::IfcDocumentStatusEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcDocumentStatusEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -3672,12 +3794,14 @@ Ifc4::IfcDoorPanelOperationEnum::IfcDoorPanelOperationEnum(IfcEntityInstanceData
}
Ifc4::IfcDoorPanelOperationEnum::IfcDoorPanelOperationEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcDoorPanelOperationEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4::IfcDoorPanelOperationEnum::IfcDoorPanelOperationEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcDoorPanelOperationEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -3714,12 +3838,14 @@ Ifc4::IfcDoorPanelPositionEnum::IfcDoorPanelPositionEnum(IfcEntityInstanceData*
}
Ifc4::IfcDoorPanelPositionEnum::IfcDoorPanelPositionEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcDoorPanelPositionEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4::IfcDoorPanelPositionEnum::IfcDoorPanelPositionEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcDoorPanelPositionEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -3751,12 +3877,14 @@ Ifc4::IfcDoorStyleConstructionEnum::IfcDoorStyleConstructionEnum(IfcEntityInstan
}
Ifc4::IfcDoorStyleConstructionEnum::IfcDoorStyleConstructionEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcDoorStyleConstructionEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4::IfcDoorStyleConstructionEnum::IfcDoorStyleConstructionEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcDoorStyleConstructionEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -3793,12 +3921,14 @@ Ifc4::IfcDoorStyleOperationEnum::IfcDoorStyleOperationEnum(IfcEntityInstanceData
}
Ifc4::IfcDoorStyleOperationEnum::IfcDoorStyleOperationEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcDoorStyleOperationEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4::IfcDoorStyleOperationEnum::IfcDoorStyleOperationEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcDoorStyleOperationEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -3844,12 +3974,14 @@ Ifc4::IfcDoorTypeEnum::IfcDoorTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4::IfcDoorTypeEnum::IfcDoorTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcDoorTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4::IfcDoorTypeEnum::IfcDoorTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcDoorTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -3882,12 +4014,14 @@ Ifc4::IfcDoorTypeOperationEnum::IfcDoorTypeOperationEnum(IfcEntityInstanceData*
}
Ifc4::IfcDoorTypeOperationEnum::IfcDoorTypeOperationEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcDoorTypeOperationEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4::IfcDoorTypeOperationEnum::IfcDoorTypeOperationEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcDoorTypeOperationEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -3935,12 +4069,14 @@ Ifc4::IfcDuctFittingTypeEnum::IfcDuctFittingTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4::IfcDuctFittingTypeEnum::IfcDuctFittingTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcDuctFittingTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4::IfcDuctFittingTypeEnum::IfcDuctFittingTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcDuctFittingTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -3977,12 +4113,14 @@ Ifc4::IfcDuctSegmentTypeEnum::IfcDuctSegmentTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4::IfcDuctSegmentTypeEnum::IfcDuctSegmentTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcDuctSegmentTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4::IfcDuctSegmentTypeEnum::IfcDuctSegmentTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcDuctSegmentTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -4014,12 +4152,14 @@ Ifc4::IfcDuctSilencerTypeEnum::IfcDuctSilencerTypeEnum(IfcEntityInstanceData* e)
}
Ifc4::IfcDuctSilencerTypeEnum::IfcDuctSilencerTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcDuctSilencerTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4::IfcDuctSilencerTypeEnum::IfcDuctSilencerTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcDuctSilencerTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -4052,12 +4192,14 @@ Ifc4::IfcElectricApplianceTypeEnum::IfcElectricApplianceTypeEnum(IfcEntityInstan
}
Ifc4::IfcElectricApplianceTypeEnum::IfcElectricApplianceTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcElectricApplianceTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4::IfcElectricApplianceTypeEnum::IfcElectricApplianceTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcElectricApplianceTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -4103,12 +4245,14 @@ Ifc4::IfcElectricDistributionBoardTypeEnum::IfcElectricDistributionBoardTypeEnum
}
Ifc4::IfcElectricDistributionBoardTypeEnum::IfcElectricDistributionBoardTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcElectricDistributionBoardTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4::IfcElectricDistributionBoardTypeEnum::IfcElectricDistributionBoardTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcElectricDistributionBoardTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -4142,12 +4286,14 @@ Ifc4::IfcElectricFlowStorageDeviceTypeEnum::IfcElectricFlowStorageDeviceTypeEnum
}
Ifc4::IfcElectricFlowStorageDeviceTypeEnum::IfcElectricFlowStorageDeviceTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcElectricFlowStorageDeviceTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4::IfcElectricFlowStorageDeviceTypeEnum::IfcElectricFlowStorageDeviceTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcElectricFlowStorageDeviceTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -4182,12 +4328,14 @@ Ifc4::IfcElectricGeneratorTypeEnum::IfcElectricGeneratorTypeEnum(IfcEntityInstan
}
Ifc4::IfcElectricGeneratorTypeEnum::IfcElectricGeneratorTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcElectricGeneratorTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4::IfcElectricGeneratorTypeEnum::IfcElectricGeneratorTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcElectricGeneratorTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -4220,12 +4368,14 @@ Ifc4::IfcElectricMotorTypeEnum::IfcElectricMotorTypeEnum(IfcEntityInstanceData*
}
Ifc4::IfcElectricMotorTypeEnum::IfcElectricMotorTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcElectricMotorTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4::IfcElectricMotorTypeEnum::IfcElectricMotorTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcElectricMotorTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -4260,12 +4410,14 @@ Ifc4::IfcElectricTimeControlTypeEnum::IfcElectricTimeControlTypeEnum(IfcEntityIn
}
Ifc4::IfcElectricTimeControlTypeEnum::IfcElectricTimeControlTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcElectricTimeControlTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4::IfcElectricTimeControlTypeEnum::IfcElectricTimeControlTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcElectricTimeControlTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -4298,12 +4450,14 @@ Ifc4::IfcElementAssemblyTypeEnum::IfcElementAssemblyTypeEnum(IfcEntityInstanceDa
}
Ifc4::IfcElementAssemblyTypeEnum::IfcElementAssemblyTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcElementAssemblyTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4::IfcElementAssemblyTypeEnum::IfcElementAssemblyTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcElementAssemblyTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -4342,12 +4496,14 @@ Ifc4::IfcElementCompositionEnum::IfcElementCompositionEnum(IfcEntityInstanceData
}
Ifc4::IfcElementCompositionEnum::IfcElementCompositionEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcElementCompositionEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4::IfcElementCompositionEnum::IfcElementCompositionEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcElementCompositionEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -4378,12 +4534,14 @@ Ifc4::IfcEngineTypeEnum::IfcEngineTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4::IfcEngineTypeEnum::IfcEngineTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcEngineTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4::IfcEngineTypeEnum::IfcEngineTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcEngineTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -4415,12 +4573,14 @@ Ifc4::IfcEvaporativeCoolerTypeEnum::IfcEvaporativeCoolerTypeEnum(IfcEntityInstan
}
Ifc4::IfcEvaporativeCoolerTypeEnum::IfcEvaporativeCoolerTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcEvaporativeCoolerTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4::IfcEvaporativeCoolerTypeEnum::IfcEvaporativeCoolerTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcEvaporativeCoolerTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -4459,12 +4619,14 @@ Ifc4::IfcEvaporatorTypeEnum::IfcEvaporatorTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4::IfcEvaporatorTypeEnum::IfcEvaporatorTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcEvaporatorTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4::IfcEvaporatorTypeEnum::IfcEvaporatorTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcEvaporatorTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -4500,12 +4662,14 @@ Ifc4::IfcEventTriggerTypeEnum::IfcEventTriggerTypeEnum(IfcEntityInstanceData* e)
}
Ifc4::IfcEventTriggerTypeEnum::IfcEventTriggerTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcEventTriggerTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4::IfcEventTriggerTypeEnum::IfcEventTriggerTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcEventTriggerTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -4539,12 +4703,14 @@ Ifc4::IfcEventTypeEnum::IfcEventTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4::IfcEventTypeEnum::IfcEventTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcEventTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4::IfcEventTypeEnum::IfcEventTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcEventTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -4577,12 +4743,14 @@ Ifc4::IfcExternalSpatialElementTypeEnum::IfcExternalSpatialElementTypeEnum(IfcEn
}
Ifc4::IfcExternalSpatialElementTypeEnum::IfcExternalSpatialElementTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcExternalSpatialElementTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4::IfcExternalSpatialElementTypeEnum::IfcExternalSpatialElementTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcExternalSpatialElementTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -4616,12 +4784,14 @@ Ifc4::IfcFanTypeEnum::IfcFanTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4::IfcFanTypeEnum::IfcFanTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcFanTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4::IfcFanTypeEnum::IfcFanTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcFanTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -4658,12 +4828,14 @@ Ifc4::IfcFastenerTypeEnum::IfcFastenerTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4::IfcFastenerTypeEnum::IfcFastenerTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcFastenerTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4::IfcFastenerTypeEnum::IfcFastenerTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcFastenerTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -4696,12 +4868,14 @@ Ifc4::IfcFilterTypeEnum::IfcFilterTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4::IfcFilterTypeEnum::IfcFilterTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcFilterTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4::IfcFilterTypeEnum::IfcFilterTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcFilterTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -4737,12 +4911,14 @@ Ifc4::IfcFireSuppressionTerminalTypeEnum::IfcFireSuppressionTerminalTypeEnum(Ifc
}
Ifc4::IfcFireSuppressionTerminalTypeEnum::IfcFireSuppressionTerminalTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcFireSuppressionTerminalTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4::IfcFireSuppressionTerminalTypeEnum::IfcFireSuppressionTerminalTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcFireSuppressionTerminalTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -4777,12 +4953,14 @@ Ifc4::IfcFlowDirectionEnum::IfcFlowDirectionEnum(IfcEntityInstanceData* e) {
}
Ifc4::IfcFlowDirectionEnum::IfcFlowDirectionEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcFlowDirectionEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4::IfcFlowDirectionEnum::IfcFlowDirectionEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcFlowDirectionEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -4814,12 +4992,14 @@ Ifc4::IfcFlowInstrumentTypeEnum::IfcFlowInstrumentTypeEnum(IfcEntityInstanceData
}
Ifc4::IfcFlowInstrumentTypeEnum::IfcFlowInstrumentTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcFlowInstrumentTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4::IfcFlowInstrumentTypeEnum::IfcFlowInstrumentTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcFlowInstrumentTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -4857,12 +5037,14 @@ Ifc4::IfcFlowMeterTypeEnum::IfcFlowMeterTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4::IfcFlowMeterTypeEnum::IfcFlowMeterTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcFlowMeterTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4::IfcFlowMeterTypeEnum::IfcFlowMeterTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcFlowMeterTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -4896,12 +5078,14 @@ Ifc4::IfcFootingTypeEnum::IfcFootingTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4::IfcFootingTypeEnum::IfcFootingTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcFootingTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4::IfcFootingTypeEnum::IfcFootingTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcFootingTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -4936,12 +5120,14 @@ Ifc4::IfcFurnitureTypeEnum::IfcFurnitureTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4::IfcFurnitureTypeEnum::IfcFurnitureTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcFurnitureTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4::IfcFurnitureTypeEnum::IfcFurnitureTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcFurnitureTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -4978,12 +5164,14 @@ Ifc4::IfcGeographicElementTypeEnum::IfcGeographicElementTypeEnum(IfcEntityInstan
}
Ifc4::IfcGeographicElementTypeEnum::IfcGeographicElementTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcGeographicElementTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4::IfcGeographicElementTypeEnum::IfcGeographicElementTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcGeographicElementTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -5014,12 +5202,14 @@ Ifc4::IfcGeometricProjectionEnum::IfcGeometricProjectionEnum(IfcEntityInstanceDa
}
Ifc4::IfcGeometricProjectionEnum::IfcGeometricProjectionEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcGeometricProjectionEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4::IfcGeometricProjectionEnum::IfcGeometricProjectionEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcGeometricProjectionEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -5056,12 +5246,14 @@ Ifc4::IfcGlobalOrLocalEnum::IfcGlobalOrLocalEnum(IfcEntityInstanceData* e) {
}
Ifc4::IfcGlobalOrLocalEnum::IfcGlobalOrLocalEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcGlobalOrLocalEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4::IfcGlobalOrLocalEnum::IfcGlobalOrLocalEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcGlobalOrLocalEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -5091,12 +5283,14 @@ Ifc4::IfcGridTypeEnum::IfcGridTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4::IfcGridTypeEnum::IfcGridTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcGridTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4::IfcGridTypeEnum::IfcGridTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcGridTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -5130,12 +5324,14 @@ Ifc4::IfcHeatExchangerTypeEnum::IfcHeatExchangerTypeEnum(IfcEntityInstanceData*
}
Ifc4::IfcHeatExchangerTypeEnum::IfcHeatExchangerTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcHeatExchangerTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4::IfcHeatExchangerTypeEnum::IfcHeatExchangerTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcHeatExchangerTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -5167,12 +5363,14 @@ Ifc4::IfcHumidifierTypeEnum::IfcHumidifierTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4::IfcHumidifierTypeEnum::IfcHumidifierTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcHumidifierTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4::IfcHumidifierTypeEnum::IfcHumidifierTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcHumidifierTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -5215,12 +5413,14 @@ Ifc4::IfcInterceptorTypeEnum::IfcInterceptorTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4::IfcInterceptorTypeEnum::IfcInterceptorTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcInterceptorTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4::IfcInterceptorTypeEnum::IfcInterceptorTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcInterceptorTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -5254,12 +5454,14 @@ Ifc4::IfcInternalOrExternalEnum::IfcInternalOrExternalEnum(IfcEntityInstanceData
}
Ifc4::IfcInternalOrExternalEnum::IfcInternalOrExternalEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcInternalOrExternalEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4::IfcInternalOrExternalEnum::IfcInternalOrExternalEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcInternalOrExternalEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -5293,12 +5495,14 @@ Ifc4::IfcInventoryTypeEnum::IfcInventoryTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4::IfcInventoryTypeEnum::IfcInventoryTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcInventoryTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4::IfcInventoryTypeEnum::IfcInventoryTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcInventoryTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -5331,12 +5535,14 @@ Ifc4::IfcJunctionBoxTypeEnum::IfcJunctionBoxTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4::IfcJunctionBoxTypeEnum::IfcJunctionBoxTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcJunctionBoxTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4::IfcJunctionBoxTypeEnum::IfcJunctionBoxTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcJunctionBoxTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -5368,12 +5574,14 @@ Ifc4::IfcKnotType::IfcKnotType(IfcEntityInstanceData* e) {
}
Ifc4::IfcKnotType::IfcKnotType(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcKnotType_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4::IfcKnotType::IfcKnotType(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcKnotType_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -5405,12 +5613,14 @@ Ifc4::IfcLaborResourceTypeEnum::IfcLaborResourceTypeEnum(IfcEntityInstanceData*
}
Ifc4::IfcLaborResourceTypeEnum::IfcLaborResourceTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcLaborResourceTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4::IfcLaborResourceTypeEnum::IfcLaborResourceTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcLaborResourceTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -5459,12 +5669,14 @@ Ifc4::IfcLampTypeEnum::IfcLampTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4::IfcLampTypeEnum::IfcLampTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcLampTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4::IfcLampTypeEnum::IfcLampTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcLampTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -5503,12 +5715,14 @@ Ifc4::IfcLayerSetDirectionEnum::IfcLayerSetDirectionEnum(IfcEntityInstanceData*
}
Ifc4::IfcLayerSetDirectionEnum::IfcLayerSetDirectionEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcLayerSetDirectionEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4::IfcLayerSetDirectionEnum::IfcLayerSetDirectionEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcLayerSetDirectionEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -5539,12 +5753,14 @@ Ifc4::IfcLightDistributionCurveEnum::IfcLightDistributionCurveEnum(IfcEntityInst
}
Ifc4::IfcLightDistributionCurveEnum::IfcLightDistributionCurveEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcLightDistributionCurveEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4::IfcLightDistributionCurveEnum::IfcLightDistributionCurveEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcLightDistributionCurveEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -5576,12 +5792,14 @@ Ifc4::IfcLightEmissionSourceEnum::IfcLightEmissionSourceEnum(IfcEntityInstanceDa
}
Ifc4::IfcLightEmissionSourceEnum::IfcLightEmissionSourceEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcLightEmissionSourceEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4::IfcLightEmissionSourceEnum::IfcLightEmissionSourceEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcLightEmissionSourceEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -5620,12 +5838,14 @@ Ifc4::IfcLightFixtureTypeEnum::IfcLightFixtureTypeEnum(IfcEntityInstanceData* e)
}
Ifc4::IfcLightFixtureTypeEnum::IfcLightFixtureTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcLightFixtureTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4::IfcLightFixtureTypeEnum::IfcLightFixtureTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcLightFixtureTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -5658,12 +5878,14 @@ Ifc4::IfcLoadGroupTypeEnum::IfcLoadGroupTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4::IfcLoadGroupTypeEnum::IfcLoadGroupTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcLoadGroupTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4::IfcLoadGroupTypeEnum::IfcLoadGroupTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcLoadGroupTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -5696,12 +5918,14 @@ Ifc4::IfcLogicalOperatorEnum::IfcLogicalOperatorEnum(IfcEntityInstanceData* e) {
}
Ifc4::IfcLogicalOperatorEnum::IfcLogicalOperatorEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcLogicalOperatorEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4::IfcLogicalOperatorEnum::IfcLogicalOperatorEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcLogicalOperatorEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -5734,12 +5958,14 @@ Ifc4::IfcMechanicalFastenerTypeEnum::IfcMechanicalFastenerTypeEnum(IfcEntityInst
}
Ifc4::IfcMechanicalFastenerTypeEnum::IfcMechanicalFastenerTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcMechanicalFastenerTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4::IfcMechanicalFastenerTypeEnum::IfcMechanicalFastenerTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcMechanicalFastenerTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -5779,12 +6005,14 @@ Ifc4::IfcMedicalDeviceTypeEnum::IfcMedicalDeviceTypeEnum(IfcEntityInstanceData*
}
Ifc4::IfcMedicalDeviceTypeEnum::IfcMedicalDeviceTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcMedicalDeviceTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4::IfcMedicalDeviceTypeEnum::IfcMedicalDeviceTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcMedicalDeviceTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -5819,12 +6047,14 @@ Ifc4::IfcMemberTypeEnum::IfcMemberTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4::IfcMemberTypeEnum::IfcMemberTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcMemberTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4::IfcMemberTypeEnum::IfcMemberTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcMemberTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -5866,12 +6096,14 @@ Ifc4::IfcMotorConnectionTypeEnum::IfcMotorConnectionTypeEnum(IfcEntityInstanceDa
}
Ifc4::IfcMotorConnectionTypeEnum::IfcMotorConnectionTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcMotorConnectionTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4::IfcMotorConnectionTypeEnum::IfcMotorConnectionTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcMotorConnectionTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -5904,12 +6136,14 @@ Ifc4::IfcNullStyle::IfcNullStyle(IfcEntityInstanceData* e) {
}
Ifc4::IfcNullStyle::IfcNullStyle(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcNullStyle_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4::IfcNullStyle::IfcNullStyle(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcNullStyle_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -5938,12 +6172,14 @@ Ifc4::IfcObjectTypeEnum::IfcObjectTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4::IfcObjectTypeEnum::IfcObjectTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcObjectTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4::IfcObjectTypeEnum::IfcObjectTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcObjectTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -5979,12 +6215,14 @@ Ifc4::IfcObjectiveEnum::IfcObjectiveEnum(IfcEntityInstanceData* e) {
}
Ifc4::IfcObjectiveEnum::IfcObjectiveEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcObjectiveEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4::IfcObjectiveEnum::IfcObjectiveEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcObjectiveEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -6025,12 +6263,14 @@ Ifc4::IfcOccupantTypeEnum::IfcOccupantTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4::IfcOccupantTypeEnum::IfcOccupantTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcOccupantTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4::IfcOccupantTypeEnum::IfcOccupantTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcOccupantTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -6067,12 +6307,14 @@ Ifc4::IfcOpeningElementTypeEnum::IfcOpeningElementTypeEnum(IfcEntityInstanceData
}
Ifc4::IfcOpeningElementTypeEnum::IfcOpeningElementTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcOpeningElementTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4::IfcOpeningElementTypeEnum::IfcOpeningElementTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcOpeningElementTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -6104,12 +6346,14 @@ Ifc4::IfcOutletTypeEnum::IfcOutletTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4::IfcOutletTypeEnum::IfcOutletTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcOutletTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4::IfcOutletTypeEnum::IfcOutletTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcOutletTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -6144,12 +6388,14 @@ Ifc4::IfcPerformanceHistoryTypeEnum::IfcPerformanceHistoryTypeEnum(IfcEntityInst
}
Ifc4::IfcPerformanceHistoryTypeEnum::IfcPerformanceHistoryTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcPerformanceHistoryTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4::IfcPerformanceHistoryTypeEnum::IfcPerformanceHistoryTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcPerformanceHistoryTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -6179,12 +6425,14 @@ Ifc4::IfcPermeableCoveringOperationEnum::IfcPermeableCoveringOperationEnum(IfcEn
}
Ifc4::IfcPermeableCoveringOperationEnum::IfcPermeableCoveringOperationEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcPermeableCoveringOperationEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4::IfcPermeableCoveringOperationEnum::IfcPermeableCoveringOperationEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcPermeableCoveringOperationEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -6217,12 +6465,14 @@ Ifc4::IfcPermitTypeEnum::IfcPermitTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4::IfcPermitTypeEnum::IfcPermitTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcPermitTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4::IfcPermitTypeEnum::IfcPermitTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcPermitTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -6255,12 +6505,14 @@ Ifc4::IfcPhysicalOrVirtualEnum::IfcPhysicalOrVirtualEnum(IfcEntityInstanceData*
}
Ifc4::IfcPhysicalOrVirtualEnum::IfcPhysicalOrVirtualEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcPhysicalOrVirtualEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4::IfcPhysicalOrVirtualEnum::IfcPhysicalOrVirtualEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcPhysicalOrVirtualEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -6291,12 +6543,14 @@ Ifc4::IfcPileConstructionEnum::IfcPileConstructionEnum(IfcEntityInstanceData* e)
}
Ifc4::IfcPileConstructionEnum::IfcPileConstructionEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcPileConstructionEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4::IfcPileConstructionEnum::IfcPileConstructionEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcPileConstructionEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -6330,12 +6584,14 @@ Ifc4::IfcPileTypeEnum::IfcPileTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4::IfcPileTypeEnum::IfcPileTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcPileTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4::IfcPileTypeEnum::IfcPileTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcPileTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -6371,12 +6627,14 @@ Ifc4::IfcPipeFittingTypeEnum::IfcPipeFittingTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4::IfcPipeFittingTypeEnum::IfcPipeFittingTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcPipeFittingTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4::IfcPipeFittingTypeEnum::IfcPipeFittingTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcPipeFittingTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -6413,12 +6671,14 @@ Ifc4::IfcPipeSegmentTypeEnum::IfcPipeSegmentTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4::IfcPipeSegmentTypeEnum::IfcPipeSegmentTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcPipeSegmentTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4::IfcPipeSegmentTypeEnum::IfcPipeSegmentTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcPipeSegmentTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -6453,12 +6713,14 @@ Ifc4::IfcPlateTypeEnum::IfcPlateTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4::IfcPlateTypeEnum::IfcPlateTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcPlateTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4::IfcPlateTypeEnum::IfcPlateTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcPlateTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -6490,12 +6752,14 @@ Ifc4::IfcPreferredSurfaceCurveRepresentation::IfcPreferredSurfaceCurveRepresenta
}
Ifc4::IfcPreferredSurfaceCurveRepresentation::IfcPreferredSurfaceCurveRepresentation(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcPreferredSurfaceCurveRepresentation_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4::IfcPreferredSurfaceCurveRepresentation::IfcPreferredSurfaceCurveRepresentation(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcPreferredSurfaceCurveRepresentation_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -6526,12 +6790,14 @@ Ifc4::IfcProcedureTypeEnum::IfcProcedureTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4::IfcProcedureTypeEnum::IfcProcedureTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcProcedureTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4::IfcProcedureTypeEnum::IfcProcedureTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcProcedureTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -6568,12 +6834,14 @@ Ifc4::IfcProfileTypeEnum::IfcProfileTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4::IfcProfileTypeEnum::IfcProfileTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcProfileTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4::IfcProfileTypeEnum::IfcProfileTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcProfileTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -6603,12 +6871,14 @@ Ifc4::IfcProjectOrderTypeEnum::IfcProjectOrderTypeEnum(IfcEntityInstanceData* e)
}
Ifc4::IfcProjectOrderTypeEnum::IfcProjectOrderTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcProjectOrderTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4::IfcProjectOrderTypeEnum::IfcProjectOrderTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcProjectOrderTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -6643,12 +6913,14 @@ Ifc4::IfcProjectedOrTrueLengthEnum::IfcProjectedOrTrueLengthEnum(IfcEntityInstan
}
Ifc4::IfcProjectedOrTrueLengthEnum::IfcProjectedOrTrueLengthEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcProjectedOrTrueLengthEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4::IfcProjectedOrTrueLengthEnum::IfcProjectedOrTrueLengthEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcProjectedOrTrueLengthEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -6678,12 +6950,14 @@ Ifc4::IfcProjectionElementTypeEnum::IfcProjectionElementTypeEnum(IfcEntityInstan
}
Ifc4::IfcProjectionElementTypeEnum::IfcProjectionElementTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcProjectionElementTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4::IfcProjectionElementTypeEnum::IfcProjectionElementTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcProjectionElementTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -6713,12 +6987,14 @@ Ifc4::IfcPropertySetTemplateTypeEnum::IfcPropertySetTemplateTypeEnum(IfcEntityIn
}
Ifc4::IfcPropertySetTemplateTypeEnum::IfcPropertySetTemplateTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcPropertySetTemplateTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4::IfcPropertySetTemplateTypeEnum::IfcPropertySetTemplateTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcPropertySetTemplateTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -6754,12 +7030,14 @@ Ifc4::IfcProtectiveDeviceTrippingUnitTypeEnum::IfcProtectiveDeviceTrippingUnitTy
}
Ifc4::IfcProtectiveDeviceTrippingUnitTypeEnum::IfcProtectiveDeviceTrippingUnitTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcProtectiveDeviceTrippingUnitTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4::IfcProtectiveDeviceTrippingUnitTypeEnum::IfcProtectiveDeviceTrippingUnitTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcProtectiveDeviceTrippingUnitTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -6793,12 +7071,14 @@ Ifc4::IfcProtectiveDeviceTypeEnum::IfcProtectiveDeviceTypeEnum(IfcEntityInstance
}
Ifc4::IfcProtectiveDeviceTypeEnum::IfcProtectiveDeviceTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcProtectiveDeviceTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4::IfcProtectiveDeviceTypeEnum::IfcProtectiveDeviceTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcProtectiveDeviceTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -6835,12 +7115,14 @@ Ifc4::IfcPumpTypeEnum::IfcPumpTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4::IfcPumpTypeEnum::IfcPumpTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcPumpTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4::IfcPumpTypeEnum::IfcPumpTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcPumpTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -6877,12 +7159,14 @@ Ifc4::IfcRailingTypeEnum::IfcRailingTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4::IfcRailingTypeEnum::IfcRailingTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcRailingTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4::IfcRailingTypeEnum::IfcRailingTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcRailingTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -6915,12 +7199,14 @@ Ifc4::IfcRampFlightTypeEnum::IfcRampFlightTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4::IfcRampFlightTypeEnum::IfcRampFlightTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcRampFlightTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4::IfcRampFlightTypeEnum::IfcRampFlightTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcRampFlightTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -6952,12 +7238,14 @@ Ifc4::IfcRampTypeEnum::IfcRampTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4::IfcRampTypeEnum::IfcRampTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcRampTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4::IfcRampTypeEnum::IfcRampTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcRampTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -6993,12 +7281,14 @@ Ifc4::IfcRecurrenceTypeEnum::IfcRecurrenceTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4::IfcRecurrenceTypeEnum::IfcRecurrenceTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcRecurrenceTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4::IfcRecurrenceTypeEnum::IfcRecurrenceTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcRecurrenceTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -7034,12 +7324,14 @@ Ifc4::IfcReflectanceMethodEnum::IfcReflectanceMethodEnum(IfcEntityInstanceData*
}
Ifc4::IfcReflectanceMethodEnum::IfcReflectanceMethodEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcReflectanceMethodEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4::IfcReflectanceMethodEnum::IfcReflectanceMethodEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcReflectanceMethodEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -7077,12 +7369,14 @@ Ifc4::IfcReinforcingBarRoleEnum::IfcReinforcingBarRoleEnum(IfcEntityInstanceData
}
Ifc4::IfcReinforcingBarRoleEnum::IfcReinforcingBarRoleEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcReinforcingBarRoleEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4::IfcReinforcingBarRoleEnum::IfcReinforcingBarRoleEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcReinforcingBarRoleEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -7120,12 +7414,14 @@ Ifc4::IfcReinforcingBarSurfaceEnum::IfcReinforcingBarSurfaceEnum(IfcEntityInstan
}
Ifc4::IfcReinforcingBarSurfaceEnum::IfcReinforcingBarSurfaceEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcReinforcingBarSurfaceEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4::IfcReinforcingBarSurfaceEnum::IfcReinforcingBarSurfaceEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcReinforcingBarSurfaceEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -7155,12 +7451,14 @@ Ifc4::IfcReinforcingBarTypeEnum::IfcReinforcingBarTypeEnum(IfcEntityInstanceData
}
Ifc4::IfcReinforcingBarTypeEnum::IfcReinforcingBarTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcReinforcingBarTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4::IfcReinforcingBarTypeEnum::IfcReinforcingBarTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcReinforcingBarTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -7198,12 +7496,14 @@ Ifc4::IfcReinforcingMeshTypeEnum::IfcReinforcingMeshTypeEnum(IfcEntityInstanceDa
}
Ifc4::IfcReinforcingMeshTypeEnum::IfcReinforcingMeshTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcReinforcingMeshTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4::IfcReinforcingMeshTypeEnum::IfcReinforcingMeshTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcReinforcingMeshTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -7233,12 +7533,14 @@ Ifc4::IfcRoleEnum::IfcRoleEnum(IfcEntityInstanceData* e) {
}
Ifc4::IfcRoleEnum::IfcRoleEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcRoleEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4::IfcRoleEnum::IfcRoleEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcRoleEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -7289,12 +7591,14 @@ Ifc4::IfcRoofTypeEnum::IfcRoofTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4::IfcRoofTypeEnum::IfcRoofTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcRoofTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4::IfcRoofTypeEnum::IfcRoofTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcRoofTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -7337,12 +7641,14 @@ Ifc4::IfcSIPrefix::IfcSIPrefix(IfcEntityInstanceData* e) {
}
Ifc4::IfcSIPrefix::IfcSIPrefix(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcSIPrefix_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4::IfcSIPrefix::IfcSIPrefix(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcSIPrefix_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -7386,12 +7692,14 @@ Ifc4::IfcSIUnitName::IfcSIUnitName(IfcEntityInstanceData* e) {
}
Ifc4::IfcSIUnitName::IfcSIUnitName(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcSIUnitName_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4::IfcSIUnitName::IfcSIUnitName(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcSIUnitName_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -7449,12 +7757,14 @@ Ifc4::IfcSanitaryTerminalTypeEnum::IfcSanitaryTerminalTypeEnum(IfcEntityInstance
}
Ifc4::IfcSanitaryTerminalTypeEnum::IfcSanitaryTerminalTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcSanitaryTerminalTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4::IfcSanitaryTerminalTypeEnum::IfcSanitaryTerminalTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcSanitaryTerminalTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -7494,12 +7804,14 @@ Ifc4::IfcSectionTypeEnum::IfcSectionTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4::IfcSectionTypeEnum::IfcSectionTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcSectionTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4::IfcSectionTypeEnum::IfcSectionTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcSectionTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -7529,12 +7841,14 @@ Ifc4::IfcSensorTypeEnum::IfcSensorTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4::IfcSensorTypeEnum::IfcSensorTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcSensorTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4::IfcSensorTypeEnum::IfcSensorTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcSensorTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -7588,12 +7902,14 @@ Ifc4::IfcSequenceEnum::IfcSequenceEnum(IfcEntityInstanceData* e) {
}
Ifc4::IfcSequenceEnum::IfcSequenceEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcSequenceEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4::IfcSequenceEnum::IfcSequenceEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcSequenceEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -7627,12 +7943,14 @@ Ifc4::IfcShadingDeviceTypeEnum::IfcShadingDeviceTypeEnum(IfcEntityInstanceData*
}
Ifc4::IfcShadingDeviceTypeEnum::IfcShadingDeviceTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcShadingDeviceTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4::IfcShadingDeviceTypeEnum::IfcShadingDeviceTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcShadingDeviceTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -7665,12 +7983,14 @@ Ifc4::IfcSimplePropertyTemplateTypeEnum::IfcSimplePropertyTemplateTypeEnum(IfcEn
}
Ifc4::IfcSimplePropertyTemplateTypeEnum::IfcSimplePropertyTemplateTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcSimplePropertyTemplateTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4::IfcSimplePropertyTemplateTypeEnum::IfcSimplePropertyTemplateTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcSimplePropertyTemplateTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -7710,12 +8030,14 @@ Ifc4::IfcSlabTypeEnum::IfcSlabTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4::IfcSlabTypeEnum::IfcSlabTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcSlabTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4::IfcSlabTypeEnum::IfcSlabTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcSlabTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -7749,12 +8071,14 @@ Ifc4::IfcSolarDeviceTypeEnum::IfcSolarDeviceTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4::IfcSolarDeviceTypeEnum::IfcSolarDeviceTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcSolarDeviceTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4::IfcSolarDeviceTypeEnum::IfcSolarDeviceTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcSolarDeviceTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -7786,12 +8110,14 @@ Ifc4::IfcSpaceHeaterTypeEnum::IfcSpaceHeaterTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4::IfcSpaceHeaterTypeEnum::IfcSpaceHeaterTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcSpaceHeaterTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4::IfcSpaceHeaterTypeEnum::IfcSpaceHeaterTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcSpaceHeaterTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -7823,12 +8149,14 @@ Ifc4::IfcSpaceTypeEnum::IfcSpaceTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4::IfcSpaceTypeEnum::IfcSpaceTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcSpaceTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4::IfcSpaceTypeEnum::IfcSpaceTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcSpaceTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -7863,12 +8191,14 @@ Ifc4::IfcSpatialZoneTypeEnum::IfcSpatialZoneTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4::IfcSpatialZoneTypeEnum::IfcSpatialZoneTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcSpatialZoneTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4::IfcSpatialZoneTypeEnum::IfcSpatialZoneTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcSpatialZoneTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -7906,12 +8236,14 @@ Ifc4::IfcStackTerminalTypeEnum::IfcStackTerminalTypeEnum(IfcEntityInstanceData*
}
Ifc4::IfcStackTerminalTypeEnum::IfcStackTerminalTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcStackTerminalTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4::IfcStackTerminalTypeEnum::IfcStackTerminalTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcStackTerminalTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -7944,12 +8276,14 @@ Ifc4::IfcStairFlightTypeEnum::IfcStairFlightTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4::IfcStairFlightTypeEnum::IfcStairFlightTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcStairFlightTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4::IfcStairFlightTypeEnum::IfcStairFlightTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcStairFlightTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -7984,12 +8318,14 @@ Ifc4::IfcStairTypeEnum::IfcStairTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4::IfcStairTypeEnum::IfcStairTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcStairTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4::IfcStairTypeEnum::IfcStairTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcStairTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -8033,12 +8369,14 @@ Ifc4::IfcStateEnum::IfcStateEnum(IfcEntityInstanceData* e) {
}
Ifc4::IfcStateEnum::IfcStateEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcStateEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4::IfcStateEnum::IfcStateEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcStateEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -8071,12 +8409,14 @@ Ifc4::IfcStructuralCurveActivityTypeEnum::IfcStructuralCurveActivityTypeEnum(Ifc
}
Ifc4::IfcStructuralCurveActivityTypeEnum::IfcStructuralCurveActivityTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcStructuralCurveActivityTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4::IfcStructuralCurveActivityTypeEnum::IfcStructuralCurveActivityTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcStructuralCurveActivityTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -8113,12 +8453,14 @@ Ifc4::IfcStructuralCurveMemberTypeEnum::IfcStructuralCurveMemberTypeEnum(IfcEnti
}
Ifc4::IfcStructuralCurveMemberTypeEnum::IfcStructuralCurveMemberTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcStructuralCurveMemberTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4::IfcStructuralCurveMemberTypeEnum::IfcStructuralCurveMemberTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcStructuralCurveMemberTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -8153,12 +8495,14 @@ Ifc4::IfcStructuralSurfaceActivityTypeEnum::IfcStructuralSurfaceActivityTypeEnum
}
Ifc4::IfcStructuralSurfaceActivityTypeEnum::IfcStructuralSurfaceActivityTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcStructuralSurfaceActivityTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4::IfcStructuralSurfaceActivityTypeEnum::IfcStructuralSurfaceActivityTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcStructuralSurfaceActivityTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -8192,12 +8536,14 @@ Ifc4::IfcStructuralSurfaceMemberTypeEnum::IfcStructuralSurfaceMemberTypeEnum(Ifc
}
Ifc4::IfcStructuralSurfaceMemberTypeEnum::IfcStructuralSurfaceMemberTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcStructuralSurfaceMemberTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4::IfcStructuralSurfaceMemberTypeEnum::IfcStructuralSurfaceMemberTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcStructuralSurfaceMemberTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -8230,12 +8576,14 @@ Ifc4::IfcSubContractResourceTypeEnum::IfcSubContractResourceTypeEnum(IfcEntityIn
}
Ifc4::IfcSubContractResourceTypeEnum::IfcSubContractResourceTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcSubContractResourceTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4::IfcSubContractResourceTypeEnum::IfcSubContractResourceTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcSubContractResourceTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -8267,12 +8615,14 @@ Ifc4::IfcSurfaceFeatureTypeEnum::IfcSurfaceFeatureTypeEnum(IfcEntityInstanceData
}
Ifc4::IfcSurfaceFeatureTypeEnum::IfcSurfaceFeatureTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcSurfaceFeatureTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4::IfcSurfaceFeatureTypeEnum::IfcSurfaceFeatureTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcSurfaceFeatureTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -8305,12 +8655,14 @@ Ifc4::IfcSurfaceSide::IfcSurfaceSide(IfcEntityInstanceData* e) {
}
Ifc4::IfcSurfaceSide::IfcSurfaceSide(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcSurfaceSide_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4::IfcSurfaceSide::IfcSurfaceSide(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcSurfaceSide_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -8341,12 +8693,14 @@ Ifc4::IfcSwitchingDeviceTypeEnum::IfcSwitchingDeviceTypeEnum(IfcEntityInstanceDa
}
Ifc4::IfcSwitchingDeviceTypeEnum::IfcSwitchingDeviceTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcSwitchingDeviceTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4::IfcSwitchingDeviceTypeEnum::IfcSwitchingDeviceTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcSwitchingDeviceTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -8385,12 +8739,14 @@ Ifc4::IfcSystemFurnitureElementTypeEnum::IfcSystemFurnitureElementTypeEnum(IfcEn
}
Ifc4::IfcSystemFurnitureElementTypeEnum::IfcSystemFurnitureElementTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcSystemFurnitureElementTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4::IfcSystemFurnitureElementTypeEnum::IfcSystemFurnitureElementTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcSystemFurnitureElementTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -8422,12 +8778,14 @@ Ifc4::IfcTankTypeEnum::IfcTankTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4::IfcTankTypeEnum::IfcTankTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcTankTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4::IfcTankTypeEnum::IfcTankTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcTankTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -8464,12 +8822,14 @@ Ifc4::IfcTaskDurationEnum::IfcTaskDurationEnum(IfcEntityInstanceData* e) {
}
Ifc4::IfcTaskDurationEnum::IfcTaskDurationEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcTaskDurationEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4::IfcTaskDurationEnum::IfcTaskDurationEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcTaskDurationEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -8500,12 +8860,14 @@ Ifc4::IfcTaskTypeEnum::IfcTaskTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4::IfcTaskTypeEnum::IfcTaskTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcTaskTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4::IfcTaskTypeEnum::IfcTaskTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcTaskTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -8547,12 +8909,14 @@ Ifc4::IfcTendonAnchorTypeEnum::IfcTendonAnchorTypeEnum(IfcEntityInstanceData* e)
}
Ifc4::IfcTendonAnchorTypeEnum::IfcTendonAnchorTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcTendonAnchorTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4::IfcTendonAnchorTypeEnum::IfcTendonAnchorTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcTendonAnchorTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -8585,12 +8949,14 @@ Ifc4::IfcTendonTypeEnum::IfcTendonTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4::IfcTendonTypeEnum::IfcTendonTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcTendonTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4::IfcTendonTypeEnum::IfcTendonTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcTendonTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -8624,12 +8990,14 @@ Ifc4::IfcTextPath::IfcTextPath(IfcEntityInstanceData* e) {
}
Ifc4::IfcTextPath::IfcTextPath(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcTextPath_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4::IfcTextPath::IfcTextPath(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcTextPath_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -8661,12 +9029,14 @@ Ifc4::IfcTimeSeriesDataTypeEnum::IfcTimeSeriesDataTypeEnum(IfcEntityInstanceData
}
Ifc4::IfcTimeSeriesDataTypeEnum::IfcTimeSeriesDataTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcTimeSeriesDataTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4::IfcTimeSeriesDataTypeEnum::IfcTimeSeriesDataTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcTimeSeriesDataTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -8701,12 +9071,14 @@ Ifc4::IfcTransformerTypeEnum::IfcTransformerTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4::IfcTransformerTypeEnum::IfcTransformerTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcTransformerTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4::IfcTransformerTypeEnum::IfcTransformerTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcTransformerTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -8741,12 +9113,14 @@ Ifc4::IfcTransitionCode::IfcTransitionCode(IfcEntityInstanceData* e) {
}
Ifc4::IfcTransitionCode::IfcTransitionCode(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcTransitionCode_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4::IfcTransitionCode::IfcTransitionCode(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcTransitionCode_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -8778,12 +9152,14 @@ Ifc4::IfcTransportElementTypeEnum::IfcTransportElementTypeEnum(IfcEntityInstance
}
Ifc4::IfcTransportElementTypeEnum::IfcTransportElementTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcTransportElementTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4::IfcTransportElementTypeEnum::IfcTransportElementTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcTransportElementTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -8818,12 +9194,14 @@ Ifc4::IfcTrimmingPreference::IfcTrimmingPreference(IfcEntityInstanceData* e) {
}
Ifc4::IfcTrimmingPreference::IfcTrimmingPreference(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcTrimmingPreference_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4::IfcTrimmingPreference::IfcTrimmingPreference(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcTrimmingPreference_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -8854,12 +9232,14 @@ Ifc4::IfcTubeBundleTypeEnum::IfcTubeBundleTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4::IfcTubeBundleTypeEnum::IfcTubeBundleTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcTubeBundleTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4::IfcTubeBundleTypeEnum::IfcTubeBundleTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcTubeBundleTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -8890,12 +9270,14 @@ Ifc4::IfcUnitEnum::IfcUnitEnum(IfcEntityInstanceData* e) {
}
Ifc4::IfcUnitEnum::IfcUnitEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcUnitEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4::IfcUnitEnum::IfcUnitEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcUnitEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -8953,12 +9335,14 @@ Ifc4::IfcUnitaryControlElementTypeEnum::IfcUnitaryControlElementTypeEnum(IfcEnti
}
Ifc4::IfcUnitaryControlElementTypeEnum::IfcUnitaryControlElementTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcUnitaryControlElementTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4::IfcUnitaryControlElementTypeEnum::IfcUnitaryControlElementTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcUnitaryControlElementTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -8996,12 +9380,14 @@ Ifc4::IfcUnitaryEquipmentTypeEnum::IfcUnitaryEquipmentTypeEnum(IfcEntityInstance
}
Ifc4::IfcUnitaryEquipmentTypeEnum::IfcUnitaryEquipmentTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcUnitaryEquipmentTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4::IfcUnitaryEquipmentTypeEnum::IfcUnitaryEquipmentTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcUnitaryEquipmentTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -9036,12 +9422,14 @@ Ifc4::IfcValveTypeEnum::IfcValveTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4::IfcValveTypeEnum::IfcValveTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcValveTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4::IfcValveTypeEnum::IfcValveTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcValveTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -9092,12 +9480,14 @@ Ifc4::IfcVibrationIsolatorTypeEnum::IfcVibrationIsolatorTypeEnum(IfcEntityInstan
}
Ifc4::IfcVibrationIsolatorTypeEnum::IfcVibrationIsolatorTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcVibrationIsolatorTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4::IfcVibrationIsolatorTypeEnum::IfcVibrationIsolatorTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcVibrationIsolatorTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -9129,12 +9519,14 @@ Ifc4::IfcVoidingFeatureTypeEnum::IfcVoidingFeatureTypeEnum(IfcEntityInstanceData
}
Ifc4::IfcVoidingFeatureTypeEnum::IfcVoidingFeatureTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcVoidingFeatureTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4::IfcVoidingFeatureTypeEnum::IfcVoidingFeatureTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcVoidingFeatureTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -9170,12 +9562,14 @@ Ifc4::IfcWallTypeEnum::IfcWallTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4::IfcWallTypeEnum::IfcWallTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcWallTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4::IfcWallTypeEnum::IfcWallTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcWallTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -9214,12 +9608,14 @@ Ifc4::IfcWasteTerminalTypeEnum::IfcWasteTerminalTypeEnum(IfcEntityInstanceData*
}
Ifc4::IfcWasteTerminalTypeEnum::IfcWasteTerminalTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcWasteTerminalTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4::IfcWasteTerminalTypeEnum::IfcWasteTerminalTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcWasteTerminalTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -9256,12 +9652,14 @@ Ifc4::IfcWindowPanelOperationEnum::IfcWindowPanelOperationEnum(IfcEntityInstance
}
Ifc4::IfcWindowPanelOperationEnum::IfcWindowPanelOperationEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcWindowPanelOperationEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4::IfcWindowPanelOperationEnum::IfcWindowPanelOperationEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcWindowPanelOperationEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -9303,12 +9701,14 @@ Ifc4::IfcWindowPanelPositionEnum::IfcWindowPanelPositionEnum(IfcEntityInstanceDa
}
Ifc4::IfcWindowPanelPositionEnum::IfcWindowPanelPositionEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcWindowPanelPositionEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4::IfcWindowPanelPositionEnum::IfcWindowPanelPositionEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcWindowPanelPositionEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -9342,12 +9742,14 @@ Ifc4::IfcWindowStyleConstructionEnum::IfcWindowStyleConstructionEnum(IfcEntityIn
}
Ifc4::IfcWindowStyleConstructionEnum::IfcWindowStyleConstructionEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcWindowStyleConstructionEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4::IfcWindowStyleConstructionEnum::IfcWindowStyleConstructionEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcWindowStyleConstructionEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -9383,12 +9785,14 @@ Ifc4::IfcWindowStyleOperationEnum::IfcWindowStyleOperationEnum(IfcEntityInstance
}
Ifc4::IfcWindowStyleOperationEnum::IfcWindowStyleOperationEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcWindowStyleOperationEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4::IfcWindowStyleOperationEnum::IfcWindowStyleOperationEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcWindowStyleOperationEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -9427,12 +9831,14 @@ Ifc4::IfcWindowTypeEnum::IfcWindowTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4::IfcWindowTypeEnum::IfcWindowTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcWindowTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4::IfcWindowTypeEnum::IfcWindowTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcWindowTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -9465,12 +9871,14 @@ Ifc4::IfcWindowTypePartitioningEnum::IfcWindowTypePartitioningEnum(IfcEntityInst
}
Ifc4::IfcWindowTypePartitioningEnum::IfcWindowTypePartitioningEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcWindowTypePartitioningEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4::IfcWindowTypePartitioningEnum::IfcWindowTypePartitioningEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcWindowTypePartitioningEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -9509,12 +9917,14 @@ Ifc4::IfcWorkCalendarTypeEnum::IfcWorkCalendarTypeEnum(IfcEntityInstanceData* e)
}
Ifc4::IfcWorkCalendarTypeEnum::IfcWorkCalendarTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcWorkCalendarTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4::IfcWorkCalendarTypeEnum::IfcWorkCalendarTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcWorkCalendarTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -9547,12 +9957,14 @@ Ifc4::IfcWorkPlanTypeEnum::IfcWorkPlanTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4::IfcWorkPlanTypeEnum::IfcWorkPlanTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcWorkPlanTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4::IfcWorkPlanTypeEnum::IfcWorkPlanTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcWorkPlanTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -9585,12 +9997,14 @@ Ifc4::IfcWorkScheduleTypeEnum::IfcWorkScheduleTypeEnum(IfcEntityInstanceData* e)
}
Ifc4::IfcWorkScheduleTypeEnum::IfcWorkScheduleTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcWorkScheduleTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4::IfcWorkScheduleTypeEnum::IfcWorkScheduleTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4_IfcWorkScheduleTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
diff --git a/src/ifcparse/Ifc4x1.cpp b/src/ifcparse/Ifc4x1.cpp
index eb4880617f..b9e94239b8 100644
--- a/src/ifcparse/Ifc4x1.cpp
+++ b/src/ifcparse/Ifc4x1.cpp
@@ -1188,12 +1188,14 @@ Ifc4x1::IfcActionRequestTypeEnum::IfcActionRequestTypeEnum(IfcEntityInstanceData
}
Ifc4x1::IfcActionRequestTypeEnum::IfcActionRequestTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcActionRequestTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x1::IfcActionRequestTypeEnum::IfcActionRequestTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcActionRequestTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -1228,12 +1230,14 @@ Ifc4x1::IfcActionSourceTypeEnum::IfcActionSourceTypeEnum(IfcEntityInstanceData*
}
Ifc4x1::IfcActionSourceTypeEnum::IfcActionSourceTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcActionSourceTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x1::IfcActionSourceTypeEnum::IfcActionSourceTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcActionSourceTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -1288,12 +1292,14 @@ Ifc4x1::IfcActionTypeEnum::IfcActionTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4x1::IfcActionTypeEnum::IfcActionTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcActionTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x1::IfcActionTypeEnum::IfcActionTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcActionTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -1326,12 +1332,14 @@ Ifc4x1::IfcActuatorTypeEnum::IfcActuatorTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4x1::IfcActuatorTypeEnum::IfcActuatorTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcActuatorTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x1::IfcActuatorTypeEnum::IfcActuatorTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcActuatorTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -1366,12 +1374,14 @@ Ifc4x1::IfcAddressTypeEnum::IfcAddressTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4x1::IfcAddressTypeEnum::IfcAddressTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcAddressTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x1::IfcAddressTypeEnum::IfcAddressTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcAddressTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -1404,12 +1414,14 @@ Ifc4x1::IfcAirTerminalBoxTypeEnum::IfcAirTerminalBoxTypeEnum(IfcEntityInstanceDa
}
Ifc4x1::IfcAirTerminalBoxTypeEnum::IfcAirTerminalBoxTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcAirTerminalBoxTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x1::IfcAirTerminalBoxTypeEnum::IfcAirTerminalBoxTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcAirTerminalBoxTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -1442,12 +1454,14 @@ Ifc4x1::IfcAirTerminalTypeEnum::IfcAirTerminalTypeEnum(IfcEntityInstanceData* e)
}
Ifc4x1::IfcAirTerminalTypeEnum::IfcAirTerminalTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcAirTerminalTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x1::IfcAirTerminalTypeEnum::IfcAirTerminalTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcAirTerminalTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -1481,12 +1495,14 @@ Ifc4x1::IfcAirToAirHeatRecoveryTypeEnum::IfcAirToAirHeatRecoveryTypeEnum(IfcEnti
}
Ifc4x1::IfcAirToAirHeatRecoveryTypeEnum::IfcAirToAirHeatRecoveryTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcAirToAirHeatRecoveryTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x1::IfcAirToAirHeatRecoveryTypeEnum::IfcAirToAirHeatRecoveryTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcAirToAirHeatRecoveryTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -1525,12 +1541,14 @@ Ifc4x1::IfcAlarmTypeEnum::IfcAlarmTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4x1::IfcAlarmTypeEnum::IfcAlarmTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcAlarmTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x1::IfcAlarmTypeEnum::IfcAlarmTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcAlarmTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -1566,12 +1584,14 @@ Ifc4x1::IfcAlignmentTypeEnum::IfcAlignmentTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4x1::IfcAlignmentTypeEnum::IfcAlignmentTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcAlignmentTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x1::IfcAlignmentTypeEnum::IfcAlignmentTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcAlignmentTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -1601,12 +1621,14 @@ Ifc4x1::IfcAnalysisModelTypeEnum::IfcAnalysisModelTypeEnum(IfcEntityInstanceData
}
Ifc4x1::IfcAnalysisModelTypeEnum::IfcAnalysisModelTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcAnalysisModelTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x1::IfcAnalysisModelTypeEnum::IfcAnalysisModelTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcAnalysisModelTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -1639,12 +1661,14 @@ Ifc4x1::IfcAnalysisTheoryTypeEnum::IfcAnalysisTheoryTypeEnum(IfcEntityInstanceDa
}
Ifc4x1::IfcAnalysisTheoryTypeEnum::IfcAnalysisTheoryTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcAnalysisTheoryTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x1::IfcAnalysisTheoryTypeEnum::IfcAnalysisTheoryTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcAnalysisTheoryTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -1678,12 +1702,14 @@ Ifc4x1::IfcArithmeticOperatorEnum::IfcArithmeticOperatorEnum(IfcEntityInstanceDa
}
Ifc4x1::IfcArithmeticOperatorEnum::IfcArithmeticOperatorEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcArithmeticOperatorEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x1::IfcArithmeticOperatorEnum::IfcArithmeticOperatorEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcArithmeticOperatorEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -1715,12 +1741,14 @@ Ifc4x1::IfcAssemblyPlaceEnum::IfcAssemblyPlaceEnum(IfcEntityInstanceData* e) {
}
Ifc4x1::IfcAssemblyPlaceEnum::IfcAssemblyPlaceEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcAssemblyPlaceEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x1::IfcAssemblyPlaceEnum::IfcAssemblyPlaceEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcAssemblyPlaceEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -1751,12 +1779,14 @@ Ifc4x1::IfcAudioVisualApplianceTypeEnum::IfcAudioVisualApplianceTypeEnum(IfcEnti
}
Ifc4x1::IfcAudioVisualApplianceTypeEnum::IfcAudioVisualApplianceTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcAudioVisualApplianceTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x1::IfcAudioVisualApplianceTypeEnum::IfcAudioVisualApplianceTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcAudioVisualApplianceTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -1797,12 +1827,14 @@ Ifc4x1::IfcBSplineCurveForm::IfcBSplineCurveForm(IfcEntityInstanceData* e) {
}
Ifc4x1::IfcBSplineCurveForm::IfcBSplineCurveForm(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcBSplineCurveForm_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x1::IfcBSplineCurveForm::IfcBSplineCurveForm(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcBSplineCurveForm_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -1836,12 +1868,14 @@ Ifc4x1::IfcBSplineSurfaceForm::IfcBSplineSurfaceForm(IfcEntityInstanceData* e) {
}
Ifc4x1::IfcBSplineSurfaceForm::IfcBSplineSurfaceForm(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcBSplineSurfaceForm_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x1::IfcBSplineSurfaceForm::IfcBSplineSurfaceForm(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcBSplineSurfaceForm_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -1880,12 +1914,14 @@ Ifc4x1::IfcBeamTypeEnum::IfcBeamTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4x1::IfcBeamTypeEnum::IfcBeamTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcBeamTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x1::IfcBeamTypeEnum::IfcBeamTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcBeamTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -1921,12 +1957,14 @@ Ifc4x1::IfcBenchmarkEnum::IfcBenchmarkEnum(IfcEntityInstanceData* e) {
}
Ifc4x1::IfcBenchmarkEnum::IfcBenchmarkEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcBenchmarkEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x1::IfcBenchmarkEnum::IfcBenchmarkEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcBenchmarkEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -1964,12 +2002,14 @@ Ifc4x1::IfcBoilerTypeEnum::IfcBoilerTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4x1::IfcBoilerTypeEnum::IfcBoilerTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcBoilerTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x1::IfcBoilerTypeEnum::IfcBoilerTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcBoilerTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -2001,12 +2041,14 @@ Ifc4x1::IfcBooleanOperator::IfcBooleanOperator(IfcEntityInstanceData* e) {
}
Ifc4x1::IfcBooleanOperator::IfcBooleanOperator(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcBooleanOperator_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x1::IfcBooleanOperator::IfcBooleanOperator(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcBooleanOperator_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -2037,12 +2079,14 @@ Ifc4x1::IfcBuildingElementPartTypeEnum::IfcBuildingElementPartTypeEnum(IfcEntity
}
Ifc4x1::IfcBuildingElementPartTypeEnum::IfcBuildingElementPartTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcBuildingElementPartTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x1::IfcBuildingElementPartTypeEnum::IfcBuildingElementPartTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcBuildingElementPartTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -2074,12 +2118,14 @@ Ifc4x1::IfcBuildingElementProxyTypeEnum::IfcBuildingElementProxyTypeEnum(IfcEnti
}
Ifc4x1::IfcBuildingElementProxyTypeEnum::IfcBuildingElementProxyTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcBuildingElementProxyTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x1::IfcBuildingElementProxyTypeEnum::IfcBuildingElementProxyTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcBuildingElementProxyTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -2114,12 +2160,14 @@ Ifc4x1::IfcBuildingSystemTypeEnum::IfcBuildingSystemTypeEnum(IfcEntityInstanceDa
}
Ifc4x1::IfcBuildingSystemTypeEnum::IfcBuildingSystemTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcBuildingSystemTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x1::IfcBuildingSystemTypeEnum::IfcBuildingSystemTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcBuildingSystemTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -2155,12 +2203,14 @@ Ifc4x1::IfcBurnerTypeEnum::IfcBurnerTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4x1::IfcBurnerTypeEnum::IfcBurnerTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcBurnerTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x1::IfcBurnerTypeEnum::IfcBurnerTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcBurnerTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -2190,12 +2240,14 @@ Ifc4x1::IfcCableCarrierFittingTypeEnum::IfcCableCarrierFittingTypeEnum(IfcEntity
}
Ifc4x1::IfcCableCarrierFittingTypeEnum::IfcCableCarrierFittingTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcCableCarrierFittingTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x1::IfcCableCarrierFittingTypeEnum::IfcCableCarrierFittingTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcCableCarrierFittingTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -2229,12 +2281,14 @@ Ifc4x1::IfcCableCarrierSegmentTypeEnum::IfcCableCarrierSegmentTypeEnum(IfcEntity
}
Ifc4x1::IfcCableCarrierSegmentTypeEnum::IfcCableCarrierSegmentTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcCableCarrierSegmentTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x1::IfcCableCarrierSegmentTypeEnum::IfcCableCarrierSegmentTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcCableCarrierSegmentTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -2268,12 +2322,14 @@ Ifc4x1::IfcCableFittingTypeEnum::IfcCableFittingTypeEnum(IfcEntityInstanceData*
}
Ifc4x1::IfcCableFittingTypeEnum::IfcCableFittingTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcCableFittingTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x1::IfcCableFittingTypeEnum::IfcCableFittingTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcCableFittingTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -2308,12 +2364,14 @@ Ifc4x1::IfcCableSegmentTypeEnum::IfcCableSegmentTypeEnum(IfcEntityInstanceData*
}
Ifc4x1::IfcCableSegmentTypeEnum::IfcCableSegmentTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcCableSegmentTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x1::IfcCableSegmentTypeEnum::IfcCableSegmentTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcCableSegmentTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -2347,12 +2405,14 @@ Ifc4x1::IfcChangeActionEnum::IfcChangeActionEnum(IfcEntityInstanceData* e) {
}
Ifc4x1::IfcChangeActionEnum::IfcChangeActionEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcChangeActionEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x1::IfcChangeActionEnum::IfcChangeActionEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcChangeActionEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -2385,12 +2445,14 @@ Ifc4x1::IfcChillerTypeEnum::IfcChillerTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4x1::IfcChillerTypeEnum::IfcChillerTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcChillerTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x1::IfcChillerTypeEnum::IfcChillerTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcChillerTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -2423,12 +2485,14 @@ Ifc4x1::IfcChimneyTypeEnum::IfcChimneyTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4x1::IfcChimneyTypeEnum::IfcChimneyTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcChimneyTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x1::IfcChimneyTypeEnum::IfcChimneyTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcChimneyTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -2458,12 +2522,14 @@ Ifc4x1::IfcCoilTypeEnum::IfcCoilTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4x1::IfcCoilTypeEnum::IfcCoilTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcCoilTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x1::IfcCoilTypeEnum::IfcCoilTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcCoilTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -2500,12 +2566,14 @@ Ifc4x1::IfcColumnTypeEnum::IfcColumnTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4x1::IfcColumnTypeEnum::IfcColumnTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcColumnTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x1::IfcColumnTypeEnum::IfcColumnTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcColumnTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -2537,12 +2605,14 @@ Ifc4x1::IfcCommunicationsApplianceTypeEnum::IfcCommunicationsApplianceTypeEnum(I
}
Ifc4x1::IfcCommunicationsApplianceTypeEnum::IfcCommunicationsApplianceTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcCommunicationsApplianceTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x1::IfcCommunicationsApplianceTypeEnum::IfcCommunicationsApplianceTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcCommunicationsApplianceTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -2584,12 +2654,14 @@ Ifc4x1::IfcComplexPropertyTemplateTypeEnum::IfcComplexPropertyTemplateTypeEnum(I
}
Ifc4x1::IfcComplexPropertyTemplateTypeEnum::IfcComplexPropertyTemplateTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcComplexPropertyTemplateTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x1::IfcComplexPropertyTemplateTypeEnum::IfcComplexPropertyTemplateTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcComplexPropertyTemplateTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -2619,12 +2691,14 @@ Ifc4x1::IfcCompressorTypeEnum::IfcCompressorTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4x1::IfcCompressorTypeEnum::IfcCompressorTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcCompressorTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x1::IfcCompressorTypeEnum::IfcCompressorTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcCompressorTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -2669,12 +2743,14 @@ Ifc4x1::IfcCondenserTypeEnum::IfcCondenserTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4x1::IfcCondenserTypeEnum::IfcCondenserTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcCondenserTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x1::IfcCondenserTypeEnum::IfcCondenserTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcCondenserTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -2711,12 +2787,14 @@ Ifc4x1::IfcConnectionTypeEnum::IfcConnectionTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4x1::IfcConnectionTypeEnum::IfcConnectionTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcConnectionTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x1::IfcConnectionTypeEnum::IfcConnectionTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcConnectionTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -2748,12 +2826,14 @@ Ifc4x1::IfcConstraintEnum::IfcConstraintEnum(IfcEntityInstanceData* e) {
}
Ifc4x1::IfcConstraintEnum::IfcConstraintEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcConstraintEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x1::IfcConstraintEnum::IfcConstraintEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcConstraintEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -2786,12 +2866,14 @@ Ifc4x1::IfcConstructionEquipmentResourceTypeEnum::IfcConstructionEquipmentResour
}
Ifc4x1::IfcConstructionEquipmentResourceTypeEnum::IfcConstructionEquipmentResourceTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcConstructionEquipmentResourceTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x1::IfcConstructionEquipmentResourceTypeEnum::IfcConstructionEquipmentResourceTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcConstructionEquipmentResourceTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -2829,12 +2911,14 @@ Ifc4x1::IfcConstructionMaterialResourceTypeEnum::IfcConstructionMaterialResource
}
Ifc4x1::IfcConstructionMaterialResourceTypeEnum::IfcConstructionMaterialResourceTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcConstructionMaterialResourceTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x1::IfcConstructionMaterialResourceTypeEnum::IfcConstructionMaterialResourceTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcConstructionMaterialResourceTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -2873,12 +2957,14 @@ Ifc4x1::IfcConstructionProductResourceTypeEnum::IfcConstructionProductResourceTy
}
Ifc4x1::IfcConstructionProductResourceTypeEnum::IfcConstructionProductResourceTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcConstructionProductResourceTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x1::IfcConstructionProductResourceTypeEnum::IfcConstructionProductResourceTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcConstructionProductResourceTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -2910,12 +2996,14 @@ Ifc4x1::IfcControllerTypeEnum::IfcControllerTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4x1::IfcControllerTypeEnum::IfcControllerTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcControllerTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x1::IfcControllerTypeEnum::IfcControllerTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcControllerTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -2950,12 +3038,14 @@ Ifc4x1::IfcCooledBeamTypeEnum::IfcCooledBeamTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4x1::IfcCooledBeamTypeEnum::IfcCooledBeamTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcCooledBeamTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x1::IfcCooledBeamTypeEnum::IfcCooledBeamTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcCooledBeamTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -2987,12 +3077,14 @@ Ifc4x1::IfcCoolingTowerTypeEnum::IfcCoolingTowerTypeEnum(IfcEntityInstanceData*
}
Ifc4x1::IfcCoolingTowerTypeEnum::IfcCoolingTowerTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcCoolingTowerTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x1::IfcCoolingTowerTypeEnum::IfcCoolingTowerTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcCoolingTowerTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -3025,12 +3117,14 @@ Ifc4x1::IfcCostItemTypeEnum::IfcCostItemTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4x1::IfcCostItemTypeEnum::IfcCostItemTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcCostItemTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x1::IfcCostItemTypeEnum::IfcCostItemTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcCostItemTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -3060,12 +3154,14 @@ Ifc4x1::IfcCostScheduleTypeEnum::IfcCostScheduleTypeEnum(IfcEntityInstanceData*
}
Ifc4x1::IfcCostScheduleTypeEnum::IfcCostScheduleTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcCostScheduleTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x1::IfcCostScheduleTypeEnum::IfcCostScheduleTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcCostScheduleTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -3102,12 +3198,14 @@ Ifc4x1::IfcCoveringTypeEnum::IfcCoveringTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4x1::IfcCoveringTypeEnum::IfcCoveringTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcCoveringTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x1::IfcCoveringTypeEnum::IfcCoveringTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcCoveringTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -3147,12 +3245,14 @@ Ifc4x1::IfcCrewResourceTypeEnum::IfcCrewResourceTypeEnum(IfcEntityInstanceData*
}
Ifc4x1::IfcCrewResourceTypeEnum::IfcCrewResourceTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcCrewResourceTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x1::IfcCrewResourceTypeEnum::IfcCrewResourceTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcCrewResourceTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -3184,12 +3284,14 @@ Ifc4x1::IfcCurtainWallTypeEnum::IfcCurtainWallTypeEnum(IfcEntityInstanceData* e)
}
Ifc4x1::IfcCurtainWallTypeEnum::IfcCurtainWallTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcCurtainWallTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x1::IfcCurtainWallTypeEnum::IfcCurtainWallTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcCurtainWallTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -3219,12 +3321,14 @@ Ifc4x1::IfcCurveInterpolationEnum::IfcCurveInterpolationEnum(IfcEntityInstanceDa
}
Ifc4x1::IfcCurveInterpolationEnum::IfcCurveInterpolationEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcCurveInterpolationEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x1::IfcCurveInterpolationEnum::IfcCurveInterpolationEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcCurveInterpolationEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -3256,12 +3360,14 @@ Ifc4x1::IfcDamperTypeEnum::IfcDamperTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4x1::IfcDamperTypeEnum::IfcDamperTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcDamperTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x1::IfcDamperTypeEnum::IfcDamperTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcDamperTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -3302,12 +3408,14 @@ Ifc4x1::IfcDataOriginEnum::IfcDataOriginEnum(IfcEntityInstanceData* e) {
}
Ifc4x1::IfcDataOriginEnum::IfcDataOriginEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcDataOriginEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x1::IfcDataOriginEnum::IfcDataOriginEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcDataOriginEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -3340,12 +3448,14 @@ Ifc4x1::IfcDerivedUnitEnum::IfcDerivedUnitEnum(IfcEntityInstanceData* e) {
}
Ifc4x1::IfcDerivedUnitEnum::IfcDerivedUnitEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcDerivedUnitEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x1::IfcDerivedUnitEnum::IfcDerivedUnitEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcDerivedUnitEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -3426,12 +3536,14 @@ Ifc4x1::IfcDirectionSenseEnum::IfcDirectionSenseEnum(IfcEntityInstanceData* e) {
}
Ifc4x1::IfcDirectionSenseEnum::IfcDirectionSenseEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcDirectionSenseEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x1::IfcDirectionSenseEnum::IfcDirectionSenseEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcDirectionSenseEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -3461,12 +3573,14 @@ Ifc4x1::IfcDiscreteAccessoryTypeEnum::IfcDiscreteAccessoryTypeEnum(IfcEntityInst
}
Ifc4x1::IfcDiscreteAccessoryTypeEnum::IfcDiscreteAccessoryTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcDiscreteAccessoryTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x1::IfcDiscreteAccessoryTypeEnum::IfcDiscreteAccessoryTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcDiscreteAccessoryTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -3499,12 +3613,14 @@ Ifc4x1::IfcDistributionChamberElementTypeEnum::IfcDistributionChamberElementType
}
Ifc4x1::IfcDistributionChamberElementTypeEnum::IfcDistributionChamberElementTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcDistributionChamberElementTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x1::IfcDistributionChamberElementTypeEnum::IfcDistributionChamberElementTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcDistributionChamberElementTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -3542,12 +3658,14 @@ Ifc4x1::IfcDistributionPortTypeEnum::IfcDistributionPortTypeEnum(IfcEntityInstan
}
Ifc4x1::IfcDistributionPortTypeEnum::IfcDistributionPortTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcDistributionPortTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x1::IfcDistributionPortTypeEnum::IfcDistributionPortTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcDistributionPortTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -3581,12 +3699,14 @@ Ifc4x1::IfcDistributionSystemEnum::IfcDistributionSystemEnum(IfcEntityInstanceDa
}
Ifc4x1::IfcDistributionSystemEnum::IfcDistributionSystemEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcDistributionSystemEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x1::IfcDistributionSystemEnum::IfcDistributionSystemEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcDistributionSystemEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -3658,12 +3778,14 @@ Ifc4x1::IfcDocumentConfidentialityEnum::IfcDocumentConfidentialityEnum(IfcEntity
}
Ifc4x1::IfcDocumentConfidentialityEnum::IfcDocumentConfidentialityEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcDocumentConfidentialityEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x1::IfcDocumentConfidentialityEnum::IfcDocumentConfidentialityEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcDocumentConfidentialityEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -3697,12 +3819,14 @@ Ifc4x1::IfcDocumentStatusEnum::IfcDocumentStatusEnum(IfcEntityInstanceData* e) {
}
Ifc4x1::IfcDocumentStatusEnum::IfcDocumentStatusEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcDocumentStatusEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x1::IfcDocumentStatusEnum::IfcDocumentStatusEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcDocumentStatusEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -3735,12 +3859,14 @@ Ifc4x1::IfcDoorPanelOperationEnum::IfcDoorPanelOperationEnum(IfcEntityInstanceDa
}
Ifc4x1::IfcDoorPanelOperationEnum::IfcDoorPanelOperationEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcDoorPanelOperationEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x1::IfcDoorPanelOperationEnum::IfcDoorPanelOperationEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcDoorPanelOperationEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -3777,12 +3903,14 @@ Ifc4x1::IfcDoorPanelPositionEnum::IfcDoorPanelPositionEnum(IfcEntityInstanceData
}
Ifc4x1::IfcDoorPanelPositionEnum::IfcDoorPanelPositionEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcDoorPanelPositionEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x1::IfcDoorPanelPositionEnum::IfcDoorPanelPositionEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcDoorPanelPositionEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -3814,12 +3942,14 @@ Ifc4x1::IfcDoorStyleConstructionEnum::IfcDoorStyleConstructionEnum(IfcEntityInst
}
Ifc4x1::IfcDoorStyleConstructionEnum::IfcDoorStyleConstructionEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcDoorStyleConstructionEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x1::IfcDoorStyleConstructionEnum::IfcDoorStyleConstructionEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcDoorStyleConstructionEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -3856,12 +3986,14 @@ Ifc4x1::IfcDoorStyleOperationEnum::IfcDoorStyleOperationEnum(IfcEntityInstanceDa
}
Ifc4x1::IfcDoorStyleOperationEnum::IfcDoorStyleOperationEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcDoorStyleOperationEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x1::IfcDoorStyleOperationEnum::IfcDoorStyleOperationEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcDoorStyleOperationEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -3907,12 +4039,14 @@ Ifc4x1::IfcDoorTypeEnum::IfcDoorTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4x1::IfcDoorTypeEnum::IfcDoorTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcDoorTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x1::IfcDoorTypeEnum::IfcDoorTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcDoorTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -3945,12 +4079,14 @@ Ifc4x1::IfcDoorTypeOperationEnum::IfcDoorTypeOperationEnum(IfcEntityInstanceData
}
Ifc4x1::IfcDoorTypeOperationEnum::IfcDoorTypeOperationEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcDoorTypeOperationEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x1::IfcDoorTypeOperationEnum::IfcDoorTypeOperationEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcDoorTypeOperationEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -3998,12 +4134,14 @@ Ifc4x1::IfcDuctFittingTypeEnum::IfcDuctFittingTypeEnum(IfcEntityInstanceData* e)
}
Ifc4x1::IfcDuctFittingTypeEnum::IfcDuctFittingTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcDuctFittingTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x1::IfcDuctFittingTypeEnum::IfcDuctFittingTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcDuctFittingTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -4040,12 +4178,14 @@ Ifc4x1::IfcDuctSegmentTypeEnum::IfcDuctSegmentTypeEnum(IfcEntityInstanceData* e)
}
Ifc4x1::IfcDuctSegmentTypeEnum::IfcDuctSegmentTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcDuctSegmentTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x1::IfcDuctSegmentTypeEnum::IfcDuctSegmentTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcDuctSegmentTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -4077,12 +4217,14 @@ Ifc4x1::IfcDuctSilencerTypeEnum::IfcDuctSilencerTypeEnum(IfcEntityInstanceData*
}
Ifc4x1::IfcDuctSilencerTypeEnum::IfcDuctSilencerTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcDuctSilencerTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x1::IfcDuctSilencerTypeEnum::IfcDuctSilencerTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcDuctSilencerTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -4115,12 +4257,14 @@ Ifc4x1::IfcElectricApplianceTypeEnum::IfcElectricApplianceTypeEnum(IfcEntityInst
}
Ifc4x1::IfcElectricApplianceTypeEnum::IfcElectricApplianceTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcElectricApplianceTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x1::IfcElectricApplianceTypeEnum::IfcElectricApplianceTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcElectricApplianceTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -4166,12 +4310,14 @@ Ifc4x1::IfcElectricDistributionBoardTypeEnum::IfcElectricDistributionBoardTypeEn
}
Ifc4x1::IfcElectricDistributionBoardTypeEnum::IfcElectricDistributionBoardTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcElectricDistributionBoardTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x1::IfcElectricDistributionBoardTypeEnum::IfcElectricDistributionBoardTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcElectricDistributionBoardTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -4205,12 +4351,14 @@ Ifc4x1::IfcElectricFlowStorageDeviceTypeEnum::IfcElectricFlowStorageDeviceTypeEn
}
Ifc4x1::IfcElectricFlowStorageDeviceTypeEnum::IfcElectricFlowStorageDeviceTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcElectricFlowStorageDeviceTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x1::IfcElectricFlowStorageDeviceTypeEnum::IfcElectricFlowStorageDeviceTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcElectricFlowStorageDeviceTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -4245,12 +4393,14 @@ Ifc4x1::IfcElectricGeneratorTypeEnum::IfcElectricGeneratorTypeEnum(IfcEntityInst
}
Ifc4x1::IfcElectricGeneratorTypeEnum::IfcElectricGeneratorTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcElectricGeneratorTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x1::IfcElectricGeneratorTypeEnum::IfcElectricGeneratorTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcElectricGeneratorTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -4283,12 +4433,14 @@ Ifc4x1::IfcElectricMotorTypeEnum::IfcElectricMotorTypeEnum(IfcEntityInstanceData
}
Ifc4x1::IfcElectricMotorTypeEnum::IfcElectricMotorTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcElectricMotorTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x1::IfcElectricMotorTypeEnum::IfcElectricMotorTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcElectricMotorTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -4323,12 +4475,14 @@ Ifc4x1::IfcElectricTimeControlTypeEnum::IfcElectricTimeControlTypeEnum(IfcEntity
}
Ifc4x1::IfcElectricTimeControlTypeEnum::IfcElectricTimeControlTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcElectricTimeControlTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x1::IfcElectricTimeControlTypeEnum::IfcElectricTimeControlTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcElectricTimeControlTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -4361,12 +4515,14 @@ Ifc4x1::IfcElementAssemblyTypeEnum::IfcElementAssemblyTypeEnum(IfcEntityInstance
}
Ifc4x1::IfcElementAssemblyTypeEnum::IfcElementAssemblyTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcElementAssemblyTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x1::IfcElementAssemblyTypeEnum::IfcElementAssemblyTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcElementAssemblyTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -4405,12 +4561,14 @@ Ifc4x1::IfcElementCompositionEnum::IfcElementCompositionEnum(IfcEntityInstanceDa
}
Ifc4x1::IfcElementCompositionEnum::IfcElementCompositionEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcElementCompositionEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x1::IfcElementCompositionEnum::IfcElementCompositionEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcElementCompositionEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -4441,12 +4599,14 @@ Ifc4x1::IfcEngineTypeEnum::IfcEngineTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4x1::IfcEngineTypeEnum::IfcEngineTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcEngineTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x1::IfcEngineTypeEnum::IfcEngineTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcEngineTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -4478,12 +4638,14 @@ Ifc4x1::IfcEvaporativeCoolerTypeEnum::IfcEvaporativeCoolerTypeEnum(IfcEntityInst
}
Ifc4x1::IfcEvaporativeCoolerTypeEnum::IfcEvaporativeCoolerTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcEvaporativeCoolerTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x1::IfcEvaporativeCoolerTypeEnum::IfcEvaporativeCoolerTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcEvaporativeCoolerTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -4522,12 +4684,14 @@ Ifc4x1::IfcEvaporatorTypeEnum::IfcEvaporatorTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4x1::IfcEvaporatorTypeEnum::IfcEvaporatorTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcEvaporatorTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x1::IfcEvaporatorTypeEnum::IfcEvaporatorTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcEvaporatorTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -4563,12 +4727,14 @@ Ifc4x1::IfcEventTriggerTypeEnum::IfcEventTriggerTypeEnum(IfcEntityInstanceData*
}
Ifc4x1::IfcEventTriggerTypeEnum::IfcEventTriggerTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcEventTriggerTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x1::IfcEventTriggerTypeEnum::IfcEventTriggerTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcEventTriggerTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -4602,12 +4768,14 @@ Ifc4x1::IfcEventTypeEnum::IfcEventTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4x1::IfcEventTypeEnum::IfcEventTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcEventTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x1::IfcEventTypeEnum::IfcEventTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcEventTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -4640,12 +4808,14 @@ Ifc4x1::IfcExternalSpatialElementTypeEnum::IfcExternalSpatialElementTypeEnum(Ifc
}
Ifc4x1::IfcExternalSpatialElementTypeEnum::IfcExternalSpatialElementTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcExternalSpatialElementTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x1::IfcExternalSpatialElementTypeEnum::IfcExternalSpatialElementTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcExternalSpatialElementTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -4679,12 +4849,14 @@ Ifc4x1::IfcFanTypeEnum::IfcFanTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4x1::IfcFanTypeEnum::IfcFanTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcFanTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x1::IfcFanTypeEnum::IfcFanTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcFanTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -4721,12 +4893,14 @@ Ifc4x1::IfcFastenerTypeEnum::IfcFastenerTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4x1::IfcFastenerTypeEnum::IfcFastenerTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcFastenerTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x1::IfcFastenerTypeEnum::IfcFastenerTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcFastenerTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -4759,12 +4933,14 @@ Ifc4x1::IfcFilterTypeEnum::IfcFilterTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4x1::IfcFilterTypeEnum::IfcFilterTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcFilterTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x1::IfcFilterTypeEnum::IfcFilterTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcFilterTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -4800,12 +4976,14 @@ Ifc4x1::IfcFireSuppressionTerminalTypeEnum::IfcFireSuppressionTerminalTypeEnum(I
}
Ifc4x1::IfcFireSuppressionTerminalTypeEnum::IfcFireSuppressionTerminalTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcFireSuppressionTerminalTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x1::IfcFireSuppressionTerminalTypeEnum::IfcFireSuppressionTerminalTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcFireSuppressionTerminalTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -4840,12 +5018,14 @@ Ifc4x1::IfcFlowDirectionEnum::IfcFlowDirectionEnum(IfcEntityInstanceData* e) {
}
Ifc4x1::IfcFlowDirectionEnum::IfcFlowDirectionEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcFlowDirectionEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x1::IfcFlowDirectionEnum::IfcFlowDirectionEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcFlowDirectionEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -4877,12 +5057,14 @@ Ifc4x1::IfcFlowInstrumentTypeEnum::IfcFlowInstrumentTypeEnum(IfcEntityInstanceDa
}
Ifc4x1::IfcFlowInstrumentTypeEnum::IfcFlowInstrumentTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcFlowInstrumentTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x1::IfcFlowInstrumentTypeEnum::IfcFlowInstrumentTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcFlowInstrumentTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -4920,12 +5102,14 @@ Ifc4x1::IfcFlowMeterTypeEnum::IfcFlowMeterTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4x1::IfcFlowMeterTypeEnum::IfcFlowMeterTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcFlowMeterTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x1::IfcFlowMeterTypeEnum::IfcFlowMeterTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcFlowMeterTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -4959,12 +5143,14 @@ Ifc4x1::IfcFootingTypeEnum::IfcFootingTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4x1::IfcFootingTypeEnum::IfcFootingTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcFootingTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x1::IfcFootingTypeEnum::IfcFootingTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcFootingTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -4999,12 +5185,14 @@ Ifc4x1::IfcFurnitureTypeEnum::IfcFurnitureTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4x1::IfcFurnitureTypeEnum::IfcFurnitureTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcFurnitureTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x1::IfcFurnitureTypeEnum::IfcFurnitureTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcFurnitureTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -5041,12 +5229,14 @@ Ifc4x1::IfcGeographicElementTypeEnum::IfcGeographicElementTypeEnum(IfcEntityInst
}
Ifc4x1::IfcGeographicElementTypeEnum::IfcGeographicElementTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcGeographicElementTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x1::IfcGeographicElementTypeEnum::IfcGeographicElementTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcGeographicElementTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -5077,12 +5267,14 @@ Ifc4x1::IfcGeometricProjectionEnum::IfcGeometricProjectionEnum(IfcEntityInstance
}
Ifc4x1::IfcGeometricProjectionEnum::IfcGeometricProjectionEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcGeometricProjectionEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x1::IfcGeometricProjectionEnum::IfcGeometricProjectionEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcGeometricProjectionEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -5119,12 +5311,14 @@ Ifc4x1::IfcGlobalOrLocalEnum::IfcGlobalOrLocalEnum(IfcEntityInstanceData* e) {
}
Ifc4x1::IfcGlobalOrLocalEnum::IfcGlobalOrLocalEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcGlobalOrLocalEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x1::IfcGlobalOrLocalEnum::IfcGlobalOrLocalEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcGlobalOrLocalEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -5154,12 +5348,14 @@ Ifc4x1::IfcGridTypeEnum::IfcGridTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4x1::IfcGridTypeEnum::IfcGridTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcGridTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x1::IfcGridTypeEnum::IfcGridTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcGridTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -5193,12 +5389,14 @@ Ifc4x1::IfcHeatExchangerTypeEnum::IfcHeatExchangerTypeEnum(IfcEntityInstanceData
}
Ifc4x1::IfcHeatExchangerTypeEnum::IfcHeatExchangerTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcHeatExchangerTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x1::IfcHeatExchangerTypeEnum::IfcHeatExchangerTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcHeatExchangerTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -5230,12 +5428,14 @@ Ifc4x1::IfcHumidifierTypeEnum::IfcHumidifierTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4x1::IfcHumidifierTypeEnum::IfcHumidifierTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcHumidifierTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x1::IfcHumidifierTypeEnum::IfcHumidifierTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcHumidifierTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -5278,12 +5478,14 @@ Ifc4x1::IfcInterceptorTypeEnum::IfcInterceptorTypeEnum(IfcEntityInstanceData* e)
}
Ifc4x1::IfcInterceptorTypeEnum::IfcInterceptorTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcInterceptorTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x1::IfcInterceptorTypeEnum::IfcInterceptorTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcInterceptorTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -5317,12 +5519,14 @@ Ifc4x1::IfcInternalOrExternalEnum::IfcInternalOrExternalEnum(IfcEntityInstanceDa
}
Ifc4x1::IfcInternalOrExternalEnum::IfcInternalOrExternalEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcInternalOrExternalEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x1::IfcInternalOrExternalEnum::IfcInternalOrExternalEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcInternalOrExternalEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -5356,12 +5560,14 @@ Ifc4x1::IfcInventoryTypeEnum::IfcInventoryTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4x1::IfcInventoryTypeEnum::IfcInventoryTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcInventoryTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x1::IfcInventoryTypeEnum::IfcInventoryTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcInventoryTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -5394,12 +5600,14 @@ Ifc4x1::IfcJunctionBoxTypeEnum::IfcJunctionBoxTypeEnum(IfcEntityInstanceData* e)
}
Ifc4x1::IfcJunctionBoxTypeEnum::IfcJunctionBoxTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcJunctionBoxTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x1::IfcJunctionBoxTypeEnum::IfcJunctionBoxTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcJunctionBoxTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -5431,12 +5639,14 @@ Ifc4x1::IfcKnotType::IfcKnotType(IfcEntityInstanceData* e) {
}
Ifc4x1::IfcKnotType::IfcKnotType(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcKnotType_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x1::IfcKnotType::IfcKnotType(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcKnotType_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -5468,12 +5678,14 @@ Ifc4x1::IfcLaborResourceTypeEnum::IfcLaborResourceTypeEnum(IfcEntityInstanceData
}
Ifc4x1::IfcLaborResourceTypeEnum::IfcLaborResourceTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcLaborResourceTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x1::IfcLaborResourceTypeEnum::IfcLaborResourceTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcLaborResourceTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -5522,12 +5734,14 @@ Ifc4x1::IfcLampTypeEnum::IfcLampTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4x1::IfcLampTypeEnum::IfcLampTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcLampTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x1::IfcLampTypeEnum::IfcLampTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcLampTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -5566,12 +5780,14 @@ Ifc4x1::IfcLayerSetDirectionEnum::IfcLayerSetDirectionEnum(IfcEntityInstanceData
}
Ifc4x1::IfcLayerSetDirectionEnum::IfcLayerSetDirectionEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcLayerSetDirectionEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x1::IfcLayerSetDirectionEnum::IfcLayerSetDirectionEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcLayerSetDirectionEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -5602,12 +5818,14 @@ Ifc4x1::IfcLightDistributionCurveEnum::IfcLightDistributionCurveEnum(IfcEntityIn
}
Ifc4x1::IfcLightDistributionCurveEnum::IfcLightDistributionCurveEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcLightDistributionCurveEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x1::IfcLightDistributionCurveEnum::IfcLightDistributionCurveEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcLightDistributionCurveEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -5639,12 +5857,14 @@ Ifc4x1::IfcLightEmissionSourceEnum::IfcLightEmissionSourceEnum(IfcEntityInstance
}
Ifc4x1::IfcLightEmissionSourceEnum::IfcLightEmissionSourceEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcLightEmissionSourceEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x1::IfcLightEmissionSourceEnum::IfcLightEmissionSourceEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcLightEmissionSourceEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -5683,12 +5903,14 @@ Ifc4x1::IfcLightFixtureTypeEnum::IfcLightFixtureTypeEnum(IfcEntityInstanceData*
}
Ifc4x1::IfcLightFixtureTypeEnum::IfcLightFixtureTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcLightFixtureTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x1::IfcLightFixtureTypeEnum::IfcLightFixtureTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcLightFixtureTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -5721,12 +5943,14 @@ Ifc4x1::IfcLoadGroupTypeEnum::IfcLoadGroupTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4x1::IfcLoadGroupTypeEnum::IfcLoadGroupTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcLoadGroupTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x1::IfcLoadGroupTypeEnum::IfcLoadGroupTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcLoadGroupTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -5759,12 +5983,14 @@ Ifc4x1::IfcLogicalOperatorEnum::IfcLogicalOperatorEnum(IfcEntityInstanceData* e)
}
Ifc4x1::IfcLogicalOperatorEnum::IfcLogicalOperatorEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcLogicalOperatorEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x1::IfcLogicalOperatorEnum::IfcLogicalOperatorEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcLogicalOperatorEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -5797,12 +6023,14 @@ Ifc4x1::IfcMechanicalFastenerTypeEnum::IfcMechanicalFastenerTypeEnum(IfcEntityIn
}
Ifc4x1::IfcMechanicalFastenerTypeEnum::IfcMechanicalFastenerTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcMechanicalFastenerTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x1::IfcMechanicalFastenerTypeEnum::IfcMechanicalFastenerTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcMechanicalFastenerTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -5842,12 +6070,14 @@ Ifc4x1::IfcMedicalDeviceTypeEnum::IfcMedicalDeviceTypeEnum(IfcEntityInstanceData
}
Ifc4x1::IfcMedicalDeviceTypeEnum::IfcMedicalDeviceTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcMedicalDeviceTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x1::IfcMedicalDeviceTypeEnum::IfcMedicalDeviceTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcMedicalDeviceTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -5882,12 +6112,14 @@ Ifc4x1::IfcMemberTypeEnum::IfcMemberTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4x1::IfcMemberTypeEnum::IfcMemberTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcMemberTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x1::IfcMemberTypeEnum::IfcMemberTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcMemberTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -5929,12 +6161,14 @@ Ifc4x1::IfcMotorConnectionTypeEnum::IfcMotorConnectionTypeEnum(IfcEntityInstance
}
Ifc4x1::IfcMotorConnectionTypeEnum::IfcMotorConnectionTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcMotorConnectionTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x1::IfcMotorConnectionTypeEnum::IfcMotorConnectionTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcMotorConnectionTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -5967,12 +6201,14 @@ Ifc4x1::IfcNullStyle::IfcNullStyle(IfcEntityInstanceData* e) {
}
Ifc4x1::IfcNullStyle::IfcNullStyle(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcNullStyle_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x1::IfcNullStyle::IfcNullStyle(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcNullStyle_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -6001,12 +6237,14 @@ Ifc4x1::IfcObjectTypeEnum::IfcObjectTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4x1::IfcObjectTypeEnum::IfcObjectTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcObjectTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x1::IfcObjectTypeEnum::IfcObjectTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcObjectTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -6042,12 +6280,14 @@ Ifc4x1::IfcObjectiveEnum::IfcObjectiveEnum(IfcEntityInstanceData* e) {
}
Ifc4x1::IfcObjectiveEnum::IfcObjectiveEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcObjectiveEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x1::IfcObjectiveEnum::IfcObjectiveEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcObjectiveEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -6088,12 +6328,14 @@ Ifc4x1::IfcOccupantTypeEnum::IfcOccupantTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4x1::IfcOccupantTypeEnum::IfcOccupantTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcOccupantTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x1::IfcOccupantTypeEnum::IfcOccupantTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcOccupantTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -6130,12 +6372,14 @@ Ifc4x1::IfcOpeningElementTypeEnum::IfcOpeningElementTypeEnum(IfcEntityInstanceDa
}
Ifc4x1::IfcOpeningElementTypeEnum::IfcOpeningElementTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcOpeningElementTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x1::IfcOpeningElementTypeEnum::IfcOpeningElementTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcOpeningElementTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -6167,12 +6411,14 @@ Ifc4x1::IfcOutletTypeEnum::IfcOutletTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4x1::IfcOutletTypeEnum::IfcOutletTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcOutletTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x1::IfcOutletTypeEnum::IfcOutletTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcOutletTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -6207,12 +6453,14 @@ Ifc4x1::IfcPerformanceHistoryTypeEnum::IfcPerformanceHistoryTypeEnum(IfcEntityIn
}
Ifc4x1::IfcPerformanceHistoryTypeEnum::IfcPerformanceHistoryTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcPerformanceHistoryTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x1::IfcPerformanceHistoryTypeEnum::IfcPerformanceHistoryTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcPerformanceHistoryTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -6242,12 +6490,14 @@ Ifc4x1::IfcPermeableCoveringOperationEnum::IfcPermeableCoveringOperationEnum(Ifc
}
Ifc4x1::IfcPermeableCoveringOperationEnum::IfcPermeableCoveringOperationEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcPermeableCoveringOperationEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x1::IfcPermeableCoveringOperationEnum::IfcPermeableCoveringOperationEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcPermeableCoveringOperationEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -6280,12 +6530,14 @@ Ifc4x1::IfcPermitTypeEnum::IfcPermitTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4x1::IfcPermitTypeEnum::IfcPermitTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcPermitTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x1::IfcPermitTypeEnum::IfcPermitTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcPermitTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -6318,12 +6570,14 @@ Ifc4x1::IfcPhysicalOrVirtualEnum::IfcPhysicalOrVirtualEnum(IfcEntityInstanceData
}
Ifc4x1::IfcPhysicalOrVirtualEnum::IfcPhysicalOrVirtualEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcPhysicalOrVirtualEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x1::IfcPhysicalOrVirtualEnum::IfcPhysicalOrVirtualEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcPhysicalOrVirtualEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -6354,12 +6608,14 @@ Ifc4x1::IfcPileConstructionEnum::IfcPileConstructionEnum(IfcEntityInstanceData*
}
Ifc4x1::IfcPileConstructionEnum::IfcPileConstructionEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcPileConstructionEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x1::IfcPileConstructionEnum::IfcPileConstructionEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcPileConstructionEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -6393,12 +6649,14 @@ Ifc4x1::IfcPileTypeEnum::IfcPileTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4x1::IfcPileTypeEnum::IfcPileTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcPileTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x1::IfcPileTypeEnum::IfcPileTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcPileTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -6434,12 +6692,14 @@ Ifc4x1::IfcPipeFittingTypeEnum::IfcPipeFittingTypeEnum(IfcEntityInstanceData* e)
}
Ifc4x1::IfcPipeFittingTypeEnum::IfcPipeFittingTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcPipeFittingTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x1::IfcPipeFittingTypeEnum::IfcPipeFittingTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcPipeFittingTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -6476,12 +6736,14 @@ Ifc4x1::IfcPipeSegmentTypeEnum::IfcPipeSegmentTypeEnum(IfcEntityInstanceData* e)
}
Ifc4x1::IfcPipeSegmentTypeEnum::IfcPipeSegmentTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcPipeSegmentTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x1::IfcPipeSegmentTypeEnum::IfcPipeSegmentTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcPipeSegmentTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -6516,12 +6778,14 @@ Ifc4x1::IfcPlateTypeEnum::IfcPlateTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4x1::IfcPlateTypeEnum::IfcPlateTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcPlateTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x1::IfcPlateTypeEnum::IfcPlateTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcPlateTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -6553,12 +6817,14 @@ Ifc4x1::IfcPreferredSurfaceCurveRepresentation::IfcPreferredSurfaceCurveRepresen
}
Ifc4x1::IfcPreferredSurfaceCurveRepresentation::IfcPreferredSurfaceCurveRepresentation(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcPreferredSurfaceCurveRepresentation_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x1::IfcPreferredSurfaceCurveRepresentation::IfcPreferredSurfaceCurveRepresentation(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcPreferredSurfaceCurveRepresentation_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -6589,12 +6855,14 @@ Ifc4x1::IfcProcedureTypeEnum::IfcProcedureTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4x1::IfcProcedureTypeEnum::IfcProcedureTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcProcedureTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x1::IfcProcedureTypeEnum::IfcProcedureTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcProcedureTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -6631,12 +6899,14 @@ Ifc4x1::IfcProfileTypeEnum::IfcProfileTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4x1::IfcProfileTypeEnum::IfcProfileTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcProfileTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x1::IfcProfileTypeEnum::IfcProfileTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcProfileTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -6666,12 +6936,14 @@ Ifc4x1::IfcProjectOrderTypeEnum::IfcProjectOrderTypeEnum(IfcEntityInstanceData*
}
Ifc4x1::IfcProjectOrderTypeEnum::IfcProjectOrderTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcProjectOrderTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x1::IfcProjectOrderTypeEnum::IfcProjectOrderTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcProjectOrderTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -6706,12 +6978,14 @@ Ifc4x1::IfcProjectedOrTrueLengthEnum::IfcProjectedOrTrueLengthEnum(IfcEntityInst
}
Ifc4x1::IfcProjectedOrTrueLengthEnum::IfcProjectedOrTrueLengthEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcProjectedOrTrueLengthEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x1::IfcProjectedOrTrueLengthEnum::IfcProjectedOrTrueLengthEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcProjectedOrTrueLengthEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -6741,12 +7015,14 @@ Ifc4x1::IfcProjectionElementTypeEnum::IfcProjectionElementTypeEnum(IfcEntityInst
}
Ifc4x1::IfcProjectionElementTypeEnum::IfcProjectionElementTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcProjectionElementTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x1::IfcProjectionElementTypeEnum::IfcProjectionElementTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcProjectionElementTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -6776,12 +7052,14 @@ Ifc4x1::IfcPropertySetTemplateTypeEnum::IfcPropertySetTemplateTypeEnum(IfcEntity
}
Ifc4x1::IfcPropertySetTemplateTypeEnum::IfcPropertySetTemplateTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcPropertySetTemplateTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x1::IfcPropertySetTemplateTypeEnum::IfcPropertySetTemplateTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcPropertySetTemplateTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -6817,12 +7095,14 @@ Ifc4x1::IfcProtectiveDeviceTrippingUnitTypeEnum::IfcProtectiveDeviceTrippingUnit
}
Ifc4x1::IfcProtectiveDeviceTrippingUnitTypeEnum::IfcProtectiveDeviceTrippingUnitTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcProtectiveDeviceTrippingUnitTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x1::IfcProtectiveDeviceTrippingUnitTypeEnum::IfcProtectiveDeviceTrippingUnitTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcProtectiveDeviceTrippingUnitTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -6856,12 +7136,14 @@ Ifc4x1::IfcProtectiveDeviceTypeEnum::IfcProtectiveDeviceTypeEnum(IfcEntityInstan
}
Ifc4x1::IfcProtectiveDeviceTypeEnum::IfcProtectiveDeviceTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcProtectiveDeviceTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x1::IfcProtectiveDeviceTypeEnum::IfcProtectiveDeviceTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcProtectiveDeviceTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -6898,12 +7180,14 @@ Ifc4x1::IfcPumpTypeEnum::IfcPumpTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4x1::IfcPumpTypeEnum::IfcPumpTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcPumpTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x1::IfcPumpTypeEnum::IfcPumpTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcPumpTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -6940,12 +7224,14 @@ Ifc4x1::IfcRailingTypeEnum::IfcRailingTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4x1::IfcRailingTypeEnum::IfcRailingTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcRailingTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x1::IfcRailingTypeEnum::IfcRailingTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcRailingTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -6978,12 +7264,14 @@ Ifc4x1::IfcRampFlightTypeEnum::IfcRampFlightTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4x1::IfcRampFlightTypeEnum::IfcRampFlightTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcRampFlightTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x1::IfcRampFlightTypeEnum::IfcRampFlightTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcRampFlightTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -7015,12 +7303,14 @@ Ifc4x1::IfcRampTypeEnum::IfcRampTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4x1::IfcRampTypeEnum::IfcRampTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcRampTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x1::IfcRampTypeEnum::IfcRampTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcRampTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -7056,12 +7346,14 @@ Ifc4x1::IfcRecurrenceTypeEnum::IfcRecurrenceTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4x1::IfcRecurrenceTypeEnum::IfcRecurrenceTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcRecurrenceTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x1::IfcRecurrenceTypeEnum::IfcRecurrenceTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcRecurrenceTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -7097,12 +7389,14 @@ Ifc4x1::IfcReferentTypeEnum::IfcReferentTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4x1::IfcReferentTypeEnum::IfcReferentTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcReferentTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x1::IfcReferentTypeEnum::IfcReferentTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcReferentTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -7135,12 +7429,14 @@ Ifc4x1::IfcReflectanceMethodEnum::IfcReflectanceMethodEnum(IfcEntityInstanceData
}
Ifc4x1::IfcReflectanceMethodEnum::IfcReflectanceMethodEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcReflectanceMethodEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x1::IfcReflectanceMethodEnum::IfcReflectanceMethodEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcReflectanceMethodEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -7178,12 +7474,14 @@ Ifc4x1::IfcReinforcingBarRoleEnum::IfcReinforcingBarRoleEnum(IfcEntityInstanceDa
}
Ifc4x1::IfcReinforcingBarRoleEnum::IfcReinforcingBarRoleEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcReinforcingBarRoleEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x1::IfcReinforcingBarRoleEnum::IfcReinforcingBarRoleEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcReinforcingBarRoleEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -7221,12 +7519,14 @@ Ifc4x1::IfcReinforcingBarSurfaceEnum::IfcReinforcingBarSurfaceEnum(IfcEntityInst
}
Ifc4x1::IfcReinforcingBarSurfaceEnum::IfcReinforcingBarSurfaceEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcReinforcingBarSurfaceEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x1::IfcReinforcingBarSurfaceEnum::IfcReinforcingBarSurfaceEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcReinforcingBarSurfaceEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -7256,12 +7556,14 @@ Ifc4x1::IfcReinforcingBarTypeEnum::IfcReinforcingBarTypeEnum(IfcEntityInstanceDa
}
Ifc4x1::IfcReinforcingBarTypeEnum::IfcReinforcingBarTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcReinforcingBarTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x1::IfcReinforcingBarTypeEnum::IfcReinforcingBarTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcReinforcingBarTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -7299,12 +7601,14 @@ Ifc4x1::IfcReinforcingMeshTypeEnum::IfcReinforcingMeshTypeEnum(IfcEntityInstance
}
Ifc4x1::IfcReinforcingMeshTypeEnum::IfcReinforcingMeshTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcReinforcingMeshTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x1::IfcReinforcingMeshTypeEnum::IfcReinforcingMeshTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcReinforcingMeshTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -7334,12 +7638,14 @@ Ifc4x1::IfcRoleEnum::IfcRoleEnum(IfcEntityInstanceData* e) {
}
Ifc4x1::IfcRoleEnum::IfcRoleEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcRoleEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x1::IfcRoleEnum::IfcRoleEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcRoleEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -7390,12 +7696,14 @@ Ifc4x1::IfcRoofTypeEnum::IfcRoofTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4x1::IfcRoofTypeEnum::IfcRoofTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcRoofTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x1::IfcRoofTypeEnum::IfcRoofTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcRoofTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -7438,12 +7746,14 @@ Ifc4x1::IfcSIPrefix::IfcSIPrefix(IfcEntityInstanceData* e) {
}
Ifc4x1::IfcSIPrefix::IfcSIPrefix(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcSIPrefix_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x1::IfcSIPrefix::IfcSIPrefix(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcSIPrefix_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -7487,12 +7797,14 @@ Ifc4x1::IfcSIUnitName::IfcSIUnitName(IfcEntityInstanceData* e) {
}
Ifc4x1::IfcSIUnitName::IfcSIUnitName(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcSIUnitName_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x1::IfcSIUnitName::IfcSIUnitName(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcSIUnitName_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -7550,12 +7862,14 @@ Ifc4x1::IfcSanitaryTerminalTypeEnum::IfcSanitaryTerminalTypeEnum(IfcEntityInstan
}
Ifc4x1::IfcSanitaryTerminalTypeEnum::IfcSanitaryTerminalTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcSanitaryTerminalTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x1::IfcSanitaryTerminalTypeEnum::IfcSanitaryTerminalTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcSanitaryTerminalTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -7595,12 +7909,14 @@ Ifc4x1::IfcSectionTypeEnum::IfcSectionTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4x1::IfcSectionTypeEnum::IfcSectionTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcSectionTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x1::IfcSectionTypeEnum::IfcSectionTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcSectionTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -7630,12 +7946,14 @@ Ifc4x1::IfcSensorTypeEnum::IfcSensorTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4x1::IfcSensorTypeEnum::IfcSensorTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcSensorTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x1::IfcSensorTypeEnum::IfcSensorTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcSensorTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -7689,12 +8007,14 @@ Ifc4x1::IfcSequenceEnum::IfcSequenceEnum(IfcEntityInstanceData* e) {
}
Ifc4x1::IfcSequenceEnum::IfcSequenceEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcSequenceEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x1::IfcSequenceEnum::IfcSequenceEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcSequenceEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -7728,12 +8048,14 @@ Ifc4x1::IfcShadingDeviceTypeEnum::IfcShadingDeviceTypeEnum(IfcEntityInstanceData
}
Ifc4x1::IfcShadingDeviceTypeEnum::IfcShadingDeviceTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcShadingDeviceTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x1::IfcShadingDeviceTypeEnum::IfcShadingDeviceTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcShadingDeviceTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -7766,12 +8088,14 @@ Ifc4x1::IfcSimplePropertyTemplateTypeEnum::IfcSimplePropertyTemplateTypeEnum(Ifc
}
Ifc4x1::IfcSimplePropertyTemplateTypeEnum::IfcSimplePropertyTemplateTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcSimplePropertyTemplateTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x1::IfcSimplePropertyTemplateTypeEnum::IfcSimplePropertyTemplateTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcSimplePropertyTemplateTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -7811,12 +8135,14 @@ Ifc4x1::IfcSlabTypeEnum::IfcSlabTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4x1::IfcSlabTypeEnum::IfcSlabTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcSlabTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x1::IfcSlabTypeEnum::IfcSlabTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcSlabTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -7850,12 +8176,14 @@ Ifc4x1::IfcSolarDeviceTypeEnum::IfcSolarDeviceTypeEnum(IfcEntityInstanceData* e)
}
Ifc4x1::IfcSolarDeviceTypeEnum::IfcSolarDeviceTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcSolarDeviceTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x1::IfcSolarDeviceTypeEnum::IfcSolarDeviceTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcSolarDeviceTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -7887,12 +8215,14 @@ Ifc4x1::IfcSpaceHeaterTypeEnum::IfcSpaceHeaterTypeEnum(IfcEntityInstanceData* e)
}
Ifc4x1::IfcSpaceHeaterTypeEnum::IfcSpaceHeaterTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcSpaceHeaterTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x1::IfcSpaceHeaterTypeEnum::IfcSpaceHeaterTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcSpaceHeaterTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -7924,12 +8254,14 @@ Ifc4x1::IfcSpaceTypeEnum::IfcSpaceTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4x1::IfcSpaceTypeEnum::IfcSpaceTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcSpaceTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x1::IfcSpaceTypeEnum::IfcSpaceTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcSpaceTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -7964,12 +8296,14 @@ Ifc4x1::IfcSpatialZoneTypeEnum::IfcSpatialZoneTypeEnum(IfcEntityInstanceData* e)
}
Ifc4x1::IfcSpatialZoneTypeEnum::IfcSpatialZoneTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcSpatialZoneTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x1::IfcSpatialZoneTypeEnum::IfcSpatialZoneTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcSpatialZoneTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -8007,12 +8341,14 @@ Ifc4x1::IfcStackTerminalTypeEnum::IfcStackTerminalTypeEnum(IfcEntityInstanceData
}
Ifc4x1::IfcStackTerminalTypeEnum::IfcStackTerminalTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcStackTerminalTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x1::IfcStackTerminalTypeEnum::IfcStackTerminalTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcStackTerminalTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -8045,12 +8381,14 @@ Ifc4x1::IfcStairFlightTypeEnum::IfcStairFlightTypeEnum(IfcEntityInstanceData* e)
}
Ifc4x1::IfcStairFlightTypeEnum::IfcStairFlightTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcStairFlightTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x1::IfcStairFlightTypeEnum::IfcStairFlightTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcStairFlightTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -8085,12 +8423,14 @@ Ifc4x1::IfcStairTypeEnum::IfcStairTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4x1::IfcStairTypeEnum::IfcStairTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcStairTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x1::IfcStairTypeEnum::IfcStairTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcStairTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -8134,12 +8474,14 @@ Ifc4x1::IfcStateEnum::IfcStateEnum(IfcEntityInstanceData* e) {
}
Ifc4x1::IfcStateEnum::IfcStateEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcStateEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x1::IfcStateEnum::IfcStateEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcStateEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -8172,12 +8514,14 @@ Ifc4x1::IfcStructuralCurveActivityTypeEnum::IfcStructuralCurveActivityTypeEnum(I
}
Ifc4x1::IfcStructuralCurveActivityTypeEnum::IfcStructuralCurveActivityTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcStructuralCurveActivityTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x1::IfcStructuralCurveActivityTypeEnum::IfcStructuralCurveActivityTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcStructuralCurveActivityTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -8214,12 +8558,14 @@ Ifc4x1::IfcStructuralCurveMemberTypeEnum::IfcStructuralCurveMemberTypeEnum(IfcEn
}
Ifc4x1::IfcStructuralCurveMemberTypeEnum::IfcStructuralCurveMemberTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcStructuralCurveMemberTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x1::IfcStructuralCurveMemberTypeEnum::IfcStructuralCurveMemberTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcStructuralCurveMemberTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -8254,12 +8600,14 @@ Ifc4x1::IfcStructuralSurfaceActivityTypeEnum::IfcStructuralSurfaceActivityTypeEn
}
Ifc4x1::IfcStructuralSurfaceActivityTypeEnum::IfcStructuralSurfaceActivityTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcStructuralSurfaceActivityTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x1::IfcStructuralSurfaceActivityTypeEnum::IfcStructuralSurfaceActivityTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcStructuralSurfaceActivityTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -8293,12 +8641,14 @@ Ifc4x1::IfcStructuralSurfaceMemberTypeEnum::IfcStructuralSurfaceMemberTypeEnum(I
}
Ifc4x1::IfcStructuralSurfaceMemberTypeEnum::IfcStructuralSurfaceMemberTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcStructuralSurfaceMemberTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x1::IfcStructuralSurfaceMemberTypeEnum::IfcStructuralSurfaceMemberTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcStructuralSurfaceMemberTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -8331,12 +8681,14 @@ Ifc4x1::IfcSubContractResourceTypeEnum::IfcSubContractResourceTypeEnum(IfcEntity
}
Ifc4x1::IfcSubContractResourceTypeEnum::IfcSubContractResourceTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcSubContractResourceTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x1::IfcSubContractResourceTypeEnum::IfcSubContractResourceTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcSubContractResourceTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -8368,12 +8720,14 @@ Ifc4x1::IfcSurfaceFeatureTypeEnum::IfcSurfaceFeatureTypeEnum(IfcEntityInstanceDa
}
Ifc4x1::IfcSurfaceFeatureTypeEnum::IfcSurfaceFeatureTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcSurfaceFeatureTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x1::IfcSurfaceFeatureTypeEnum::IfcSurfaceFeatureTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcSurfaceFeatureTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -8406,12 +8760,14 @@ Ifc4x1::IfcSurfaceSide::IfcSurfaceSide(IfcEntityInstanceData* e) {
}
Ifc4x1::IfcSurfaceSide::IfcSurfaceSide(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcSurfaceSide_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x1::IfcSurfaceSide::IfcSurfaceSide(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcSurfaceSide_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -8442,12 +8798,14 @@ Ifc4x1::IfcSwitchingDeviceTypeEnum::IfcSwitchingDeviceTypeEnum(IfcEntityInstance
}
Ifc4x1::IfcSwitchingDeviceTypeEnum::IfcSwitchingDeviceTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcSwitchingDeviceTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x1::IfcSwitchingDeviceTypeEnum::IfcSwitchingDeviceTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcSwitchingDeviceTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -8486,12 +8844,14 @@ Ifc4x1::IfcSystemFurnitureElementTypeEnum::IfcSystemFurnitureElementTypeEnum(Ifc
}
Ifc4x1::IfcSystemFurnitureElementTypeEnum::IfcSystemFurnitureElementTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcSystemFurnitureElementTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x1::IfcSystemFurnitureElementTypeEnum::IfcSystemFurnitureElementTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcSystemFurnitureElementTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -8523,12 +8883,14 @@ Ifc4x1::IfcTankTypeEnum::IfcTankTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4x1::IfcTankTypeEnum::IfcTankTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcTankTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x1::IfcTankTypeEnum::IfcTankTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcTankTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -8565,12 +8927,14 @@ Ifc4x1::IfcTaskDurationEnum::IfcTaskDurationEnum(IfcEntityInstanceData* e) {
}
Ifc4x1::IfcTaskDurationEnum::IfcTaskDurationEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcTaskDurationEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x1::IfcTaskDurationEnum::IfcTaskDurationEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcTaskDurationEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -8601,12 +8965,14 @@ Ifc4x1::IfcTaskTypeEnum::IfcTaskTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4x1::IfcTaskTypeEnum::IfcTaskTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcTaskTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x1::IfcTaskTypeEnum::IfcTaskTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcTaskTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -8648,12 +9014,14 @@ Ifc4x1::IfcTendonAnchorTypeEnum::IfcTendonAnchorTypeEnum(IfcEntityInstanceData*
}
Ifc4x1::IfcTendonAnchorTypeEnum::IfcTendonAnchorTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcTendonAnchorTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x1::IfcTendonAnchorTypeEnum::IfcTendonAnchorTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcTendonAnchorTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -8686,12 +9054,14 @@ Ifc4x1::IfcTendonTypeEnum::IfcTendonTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4x1::IfcTendonTypeEnum::IfcTendonTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcTendonTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x1::IfcTendonTypeEnum::IfcTendonTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcTendonTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -8725,12 +9095,14 @@ Ifc4x1::IfcTextPath::IfcTextPath(IfcEntityInstanceData* e) {
}
Ifc4x1::IfcTextPath::IfcTextPath(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcTextPath_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x1::IfcTextPath::IfcTextPath(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcTextPath_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -8762,12 +9134,14 @@ Ifc4x1::IfcTimeSeriesDataTypeEnum::IfcTimeSeriesDataTypeEnum(IfcEntityInstanceDa
}
Ifc4x1::IfcTimeSeriesDataTypeEnum::IfcTimeSeriesDataTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcTimeSeriesDataTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x1::IfcTimeSeriesDataTypeEnum::IfcTimeSeriesDataTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcTimeSeriesDataTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -8802,12 +9176,14 @@ Ifc4x1::IfcTransformerTypeEnum::IfcTransformerTypeEnum(IfcEntityInstanceData* e)
}
Ifc4x1::IfcTransformerTypeEnum::IfcTransformerTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcTransformerTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x1::IfcTransformerTypeEnum::IfcTransformerTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcTransformerTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -8842,12 +9218,14 @@ Ifc4x1::IfcTransitionCode::IfcTransitionCode(IfcEntityInstanceData* e) {
}
Ifc4x1::IfcTransitionCode::IfcTransitionCode(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcTransitionCode_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x1::IfcTransitionCode::IfcTransitionCode(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcTransitionCode_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -8879,12 +9257,14 @@ Ifc4x1::IfcTransitionCurveType::IfcTransitionCurveType(IfcEntityInstanceData* e)
}
Ifc4x1::IfcTransitionCurveType::IfcTransitionCurveType(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcTransitionCurveType_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x1::IfcTransitionCurveType::IfcTransitionCurveType(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcTransitionCurveType_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -8918,12 +9298,14 @@ Ifc4x1::IfcTransportElementTypeEnum::IfcTransportElementTypeEnum(IfcEntityInstan
}
Ifc4x1::IfcTransportElementTypeEnum::IfcTransportElementTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcTransportElementTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x1::IfcTransportElementTypeEnum::IfcTransportElementTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcTransportElementTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -8958,12 +9340,14 @@ Ifc4x1::IfcTrimmingPreference::IfcTrimmingPreference(IfcEntityInstanceData* e) {
}
Ifc4x1::IfcTrimmingPreference::IfcTrimmingPreference(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcTrimmingPreference_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x1::IfcTrimmingPreference::IfcTrimmingPreference(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcTrimmingPreference_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -8994,12 +9378,14 @@ Ifc4x1::IfcTubeBundleTypeEnum::IfcTubeBundleTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4x1::IfcTubeBundleTypeEnum::IfcTubeBundleTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcTubeBundleTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x1::IfcTubeBundleTypeEnum::IfcTubeBundleTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcTubeBundleTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -9030,12 +9416,14 @@ Ifc4x1::IfcUnitEnum::IfcUnitEnum(IfcEntityInstanceData* e) {
}
Ifc4x1::IfcUnitEnum::IfcUnitEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcUnitEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x1::IfcUnitEnum::IfcUnitEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcUnitEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -9093,12 +9481,14 @@ Ifc4x1::IfcUnitaryControlElementTypeEnum::IfcUnitaryControlElementTypeEnum(IfcEn
}
Ifc4x1::IfcUnitaryControlElementTypeEnum::IfcUnitaryControlElementTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcUnitaryControlElementTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x1::IfcUnitaryControlElementTypeEnum::IfcUnitaryControlElementTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcUnitaryControlElementTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -9136,12 +9526,14 @@ Ifc4x1::IfcUnitaryEquipmentTypeEnum::IfcUnitaryEquipmentTypeEnum(IfcEntityInstan
}
Ifc4x1::IfcUnitaryEquipmentTypeEnum::IfcUnitaryEquipmentTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcUnitaryEquipmentTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x1::IfcUnitaryEquipmentTypeEnum::IfcUnitaryEquipmentTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcUnitaryEquipmentTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -9176,12 +9568,14 @@ Ifc4x1::IfcValveTypeEnum::IfcValveTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4x1::IfcValveTypeEnum::IfcValveTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcValveTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x1::IfcValveTypeEnum::IfcValveTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcValveTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -9232,12 +9626,14 @@ Ifc4x1::IfcVibrationIsolatorTypeEnum::IfcVibrationIsolatorTypeEnum(IfcEntityInst
}
Ifc4x1::IfcVibrationIsolatorTypeEnum::IfcVibrationIsolatorTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcVibrationIsolatorTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x1::IfcVibrationIsolatorTypeEnum::IfcVibrationIsolatorTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcVibrationIsolatorTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -9269,12 +9665,14 @@ Ifc4x1::IfcVoidingFeatureTypeEnum::IfcVoidingFeatureTypeEnum(IfcEntityInstanceDa
}
Ifc4x1::IfcVoidingFeatureTypeEnum::IfcVoidingFeatureTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcVoidingFeatureTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x1::IfcVoidingFeatureTypeEnum::IfcVoidingFeatureTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcVoidingFeatureTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -9310,12 +9708,14 @@ Ifc4x1::IfcWallTypeEnum::IfcWallTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4x1::IfcWallTypeEnum::IfcWallTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcWallTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x1::IfcWallTypeEnum::IfcWallTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcWallTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -9354,12 +9754,14 @@ Ifc4x1::IfcWasteTerminalTypeEnum::IfcWasteTerminalTypeEnum(IfcEntityInstanceData
}
Ifc4x1::IfcWasteTerminalTypeEnum::IfcWasteTerminalTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcWasteTerminalTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x1::IfcWasteTerminalTypeEnum::IfcWasteTerminalTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcWasteTerminalTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -9396,12 +9798,14 @@ Ifc4x1::IfcWindowPanelOperationEnum::IfcWindowPanelOperationEnum(IfcEntityInstan
}
Ifc4x1::IfcWindowPanelOperationEnum::IfcWindowPanelOperationEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcWindowPanelOperationEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x1::IfcWindowPanelOperationEnum::IfcWindowPanelOperationEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcWindowPanelOperationEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -9443,12 +9847,14 @@ Ifc4x1::IfcWindowPanelPositionEnum::IfcWindowPanelPositionEnum(IfcEntityInstance
}
Ifc4x1::IfcWindowPanelPositionEnum::IfcWindowPanelPositionEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcWindowPanelPositionEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x1::IfcWindowPanelPositionEnum::IfcWindowPanelPositionEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcWindowPanelPositionEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -9482,12 +9888,14 @@ Ifc4x1::IfcWindowStyleConstructionEnum::IfcWindowStyleConstructionEnum(IfcEntity
}
Ifc4x1::IfcWindowStyleConstructionEnum::IfcWindowStyleConstructionEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcWindowStyleConstructionEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x1::IfcWindowStyleConstructionEnum::IfcWindowStyleConstructionEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcWindowStyleConstructionEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -9523,12 +9931,14 @@ Ifc4x1::IfcWindowStyleOperationEnum::IfcWindowStyleOperationEnum(IfcEntityInstan
}
Ifc4x1::IfcWindowStyleOperationEnum::IfcWindowStyleOperationEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcWindowStyleOperationEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x1::IfcWindowStyleOperationEnum::IfcWindowStyleOperationEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcWindowStyleOperationEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -9567,12 +9977,14 @@ Ifc4x1::IfcWindowTypeEnum::IfcWindowTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4x1::IfcWindowTypeEnum::IfcWindowTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcWindowTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x1::IfcWindowTypeEnum::IfcWindowTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcWindowTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -9605,12 +10017,14 @@ Ifc4x1::IfcWindowTypePartitioningEnum::IfcWindowTypePartitioningEnum(IfcEntityIn
}
Ifc4x1::IfcWindowTypePartitioningEnum::IfcWindowTypePartitioningEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcWindowTypePartitioningEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x1::IfcWindowTypePartitioningEnum::IfcWindowTypePartitioningEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcWindowTypePartitioningEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -9649,12 +10063,14 @@ Ifc4x1::IfcWorkCalendarTypeEnum::IfcWorkCalendarTypeEnum(IfcEntityInstanceData*
}
Ifc4x1::IfcWorkCalendarTypeEnum::IfcWorkCalendarTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcWorkCalendarTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x1::IfcWorkCalendarTypeEnum::IfcWorkCalendarTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcWorkCalendarTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -9687,12 +10103,14 @@ Ifc4x1::IfcWorkPlanTypeEnum::IfcWorkPlanTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4x1::IfcWorkPlanTypeEnum::IfcWorkPlanTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcWorkPlanTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x1::IfcWorkPlanTypeEnum::IfcWorkPlanTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcWorkPlanTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -9725,12 +10143,14 @@ Ifc4x1::IfcWorkScheduleTypeEnum::IfcWorkScheduleTypeEnum(IfcEntityInstanceData*
}
Ifc4x1::IfcWorkScheduleTypeEnum::IfcWorkScheduleTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcWorkScheduleTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x1::IfcWorkScheduleTypeEnum::IfcWorkScheduleTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X1_IfcWorkScheduleTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
diff --git a/src/ifcparse/Ifc4x2.cpp b/src/ifcparse/Ifc4x2.cpp
index 6515b7d2d1..ccd3efa967 100644
--- a/src/ifcparse/Ifc4x2.cpp
+++ b/src/ifcparse/Ifc4x2.cpp
@@ -1210,12 +1210,14 @@ Ifc4x2::IfcActionRequestTypeEnum::IfcActionRequestTypeEnum(IfcEntityInstanceData
}
Ifc4x2::IfcActionRequestTypeEnum::IfcActionRequestTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcActionRequestTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x2::IfcActionRequestTypeEnum::IfcActionRequestTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcActionRequestTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -1250,12 +1252,14 @@ Ifc4x2::IfcActionSourceTypeEnum::IfcActionSourceTypeEnum(IfcEntityInstanceData*
}
Ifc4x2::IfcActionSourceTypeEnum::IfcActionSourceTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcActionSourceTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x2::IfcActionSourceTypeEnum::IfcActionSourceTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcActionSourceTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -1310,12 +1314,14 @@ Ifc4x2::IfcActionTypeEnum::IfcActionTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4x2::IfcActionTypeEnum::IfcActionTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcActionTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x2::IfcActionTypeEnum::IfcActionTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcActionTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -1348,12 +1354,14 @@ Ifc4x2::IfcActuatorTypeEnum::IfcActuatorTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4x2::IfcActuatorTypeEnum::IfcActuatorTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcActuatorTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x2::IfcActuatorTypeEnum::IfcActuatorTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcActuatorTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -1388,12 +1396,14 @@ Ifc4x2::IfcAddressTypeEnum::IfcAddressTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4x2::IfcAddressTypeEnum::IfcAddressTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcAddressTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x2::IfcAddressTypeEnum::IfcAddressTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcAddressTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -1426,12 +1436,14 @@ Ifc4x2::IfcAirTerminalBoxTypeEnum::IfcAirTerminalBoxTypeEnum(IfcEntityInstanceDa
}
Ifc4x2::IfcAirTerminalBoxTypeEnum::IfcAirTerminalBoxTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcAirTerminalBoxTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x2::IfcAirTerminalBoxTypeEnum::IfcAirTerminalBoxTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcAirTerminalBoxTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -1464,12 +1476,14 @@ Ifc4x2::IfcAirTerminalTypeEnum::IfcAirTerminalTypeEnum(IfcEntityInstanceData* e)
}
Ifc4x2::IfcAirTerminalTypeEnum::IfcAirTerminalTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcAirTerminalTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x2::IfcAirTerminalTypeEnum::IfcAirTerminalTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcAirTerminalTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -1503,12 +1517,14 @@ Ifc4x2::IfcAirToAirHeatRecoveryTypeEnum::IfcAirToAirHeatRecoveryTypeEnum(IfcEnti
}
Ifc4x2::IfcAirToAirHeatRecoveryTypeEnum::IfcAirToAirHeatRecoveryTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcAirToAirHeatRecoveryTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x2::IfcAirToAirHeatRecoveryTypeEnum::IfcAirToAirHeatRecoveryTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcAirToAirHeatRecoveryTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -1547,12 +1563,14 @@ Ifc4x2::IfcAlarmTypeEnum::IfcAlarmTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4x2::IfcAlarmTypeEnum::IfcAlarmTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcAlarmTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x2::IfcAlarmTypeEnum::IfcAlarmTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcAlarmTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -1588,12 +1606,14 @@ Ifc4x2::IfcAlignmentTypeEnum::IfcAlignmentTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4x2::IfcAlignmentTypeEnum::IfcAlignmentTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcAlignmentTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x2::IfcAlignmentTypeEnum::IfcAlignmentTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcAlignmentTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -1623,12 +1643,14 @@ Ifc4x2::IfcAnalysisModelTypeEnum::IfcAnalysisModelTypeEnum(IfcEntityInstanceData
}
Ifc4x2::IfcAnalysisModelTypeEnum::IfcAnalysisModelTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcAnalysisModelTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x2::IfcAnalysisModelTypeEnum::IfcAnalysisModelTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcAnalysisModelTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -1661,12 +1683,14 @@ Ifc4x2::IfcAnalysisTheoryTypeEnum::IfcAnalysisTheoryTypeEnum(IfcEntityInstanceDa
}
Ifc4x2::IfcAnalysisTheoryTypeEnum::IfcAnalysisTheoryTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcAnalysisTheoryTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x2::IfcAnalysisTheoryTypeEnum::IfcAnalysisTheoryTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcAnalysisTheoryTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -1700,12 +1724,14 @@ Ifc4x2::IfcArithmeticOperatorEnum::IfcArithmeticOperatorEnum(IfcEntityInstanceDa
}
Ifc4x2::IfcArithmeticOperatorEnum::IfcArithmeticOperatorEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcArithmeticOperatorEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x2::IfcArithmeticOperatorEnum::IfcArithmeticOperatorEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcArithmeticOperatorEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -1737,12 +1763,14 @@ Ifc4x2::IfcAssemblyPlaceEnum::IfcAssemblyPlaceEnum(IfcEntityInstanceData* e) {
}
Ifc4x2::IfcAssemblyPlaceEnum::IfcAssemblyPlaceEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcAssemblyPlaceEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x2::IfcAssemblyPlaceEnum::IfcAssemblyPlaceEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcAssemblyPlaceEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -1773,12 +1801,14 @@ Ifc4x2::IfcAudioVisualApplianceTypeEnum::IfcAudioVisualApplianceTypeEnum(IfcEnti
}
Ifc4x2::IfcAudioVisualApplianceTypeEnum::IfcAudioVisualApplianceTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcAudioVisualApplianceTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x2::IfcAudioVisualApplianceTypeEnum::IfcAudioVisualApplianceTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcAudioVisualApplianceTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -1819,12 +1849,14 @@ Ifc4x2::IfcBSplineCurveForm::IfcBSplineCurveForm(IfcEntityInstanceData* e) {
}
Ifc4x2::IfcBSplineCurveForm::IfcBSplineCurveForm(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcBSplineCurveForm_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x2::IfcBSplineCurveForm::IfcBSplineCurveForm(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcBSplineCurveForm_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -1858,12 +1890,14 @@ Ifc4x2::IfcBSplineSurfaceForm::IfcBSplineSurfaceForm(IfcEntityInstanceData* e) {
}
Ifc4x2::IfcBSplineSurfaceForm::IfcBSplineSurfaceForm(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcBSplineSurfaceForm_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x2::IfcBSplineSurfaceForm::IfcBSplineSurfaceForm(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcBSplineSurfaceForm_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -1902,12 +1936,14 @@ Ifc4x2::IfcBeamTypeEnum::IfcBeamTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4x2::IfcBeamTypeEnum::IfcBeamTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcBeamTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x2::IfcBeamTypeEnum::IfcBeamTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcBeamTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -1949,12 +1985,14 @@ Ifc4x2::IfcBearingTypeDisplacementEnum::IfcBearingTypeDisplacementEnum(IfcEntity
}
Ifc4x2::IfcBearingTypeDisplacementEnum::IfcBearingTypeDisplacementEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcBearingTypeDisplacementEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x2::IfcBearingTypeDisplacementEnum::IfcBearingTypeDisplacementEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcBearingTypeDisplacementEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -1987,12 +2025,14 @@ Ifc4x2::IfcBearingTypeEnum::IfcBearingTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4x2::IfcBearingTypeEnum::IfcBearingTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcBearingTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x2::IfcBearingTypeEnum::IfcBearingTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcBearingTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -2030,12 +2070,14 @@ Ifc4x2::IfcBenchmarkEnum::IfcBenchmarkEnum(IfcEntityInstanceData* e) {
}
Ifc4x2::IfcBenchmarkEnum::IfcBenchmarkEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcBenchmarkEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x2::IfcBenchmarkEnum::IfcBenchmarkEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcBenchmarkEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -2073,12 +2115,14 @@ Ifc4x2::IfcBoilerTypeEnum::IfcBoilerTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4x2::IfcBoilerTypeEnum::IfcBoilerTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcBoilerTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x2::IfcBoilerTypeEnum::IfcBoilerTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcBoilerTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -2110,12 +2154,14 @@ Ifc4x2::IfcBooleanOperator::IfcBooleanOperator(IfcEntityInstanceData* e) {
}
Ifc4x2::IfcBooleanOperator::IfcBooleanOperator(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcBooleanOperator_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x2::IfcBooleanOperator::IfcBooleanOperator(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcBooleanOperator_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -2146,12 +2192,14 @@ Ifc4x2::IfcBridgePartTypeEnum::IfcBridgePartTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4x2::IfcBridgePartTypeEnum::IfcBridgePartTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcBridgePartTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x2::IfcBridgePartTypeEnum::IfcBridgePartTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcBridgePartTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -2191,12 +2239,14 @@ Ifc4x2::IfcBridgeTypeEnum::IfcBridgeTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4x2::IfcBridgeTypeEnum::IfcBridgeTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcBridgeTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x2::IfcBridgeTypeEnum::IfcBridgeTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcBridgeTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -2234,12 +2284,14 @@ Ifc4x2::IfcBuildingElementPartTypeEnum::IfcBuildingElementPartTypeEnum(IfcEntity
}
Ifc4x2::IfcBuildingElementPartTypeEnum::IfcBuildingElementPartTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcBuildingElementPartTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x2::IfcBuildingElementPartTypeEnum::IfcBuildingElementPartTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcBuildingElementPartTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -2272,12 +2324,14 @@ Ifc4x2::IfcBuildingElementProxyTypeEnum::IfcBuildingElementProxyTypeEnum(IfcEnti
}
Ifc4x2::IfcBuildingElementProxyTypeEnum::IfcBuildingElementProxyTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcBuildingElementProxyTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x2::IfcBuildingElementProxyTypeEnum::IfcBuildingElementProxyTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcBuildingElementProxyTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -2312,12 +2366,14 @@ Ifc4x2::IfcBuildingSystemTypeEnum::IfcBuildingSystemTypeEnum(IfcEntityInstanceDa
}
Ifc4x2::IfcBuildingSystemTypeEnum::IfcBuildingSystemTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcBuildingSystemTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x2::IfcBuildingSystemTypeEnum::IfcBuildingSystemTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcBuildingSystemTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -2355,12 +2411,14 @@ Ifc4x2::IfcBurnerTypeEnum::IfcBurnerTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4x2::IfcBurnerTypeEnum::IfcBurnerTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcBurnerTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x2::IfcBurnerTypeEnum::IfcBurnerTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcBurnerTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -2390,12 +2448,14 @@ Ifc4x2::IfcCableCarrierFittingTypeEnum::IfcCableCarrierFittingTypeEnum(IfcEntity
}
Ifc4x2::IfcCableCarrierFittingTypeEnum::IfcCableCarrierFittingTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcCableCarrierFittingTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x2::IfcCableCarrierFittingTypeEnum::IfcCableCarrierFittingTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcCableCarrierFittingTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -2429,12 +2489,14 @@ Ifc4x2::IfcCableCarrierSegmentTypeEnum::IfcCableCarrierSegmentTypeEnum(IfcEntity
}
Ifc4x2::IfcCableCarrierSegmentTypeEnum::IfcCableCarrierSegmentTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcCableCarrierSegmentTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x2::IfcCableCarrierSegmentTypeEnum::IfcCableCarrierSegmentTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcCableCarrierSegmentTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -2468,12 +2530,14 @@ Ifc4x2::IfcCableFittingTypeEnum::IfcCableFittingTypeEnum(IfcEntityInstanceData*
}
Ifc4x2::IfcCableFittingTypeEnum::IfcCableFittingTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcCableFittingTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x2::IfcCableFittingTypeEnum::IfcCableFittingTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcCableFittingTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -2508,12 +2572,14 @@ Ifc4x2::IfcCableSegmentTypeEnum::IfcCableSegmentTypeEnum(IfcEntityInstanceData*
}
Ifc4x2::IfcCableSegmentTypeEnum::IfcCableSegmentTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcCableSegmentTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x2::IfcCableSegmentTypeEnum::IfcCableSegmentTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcCableSegmentTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -2547,12 +2613,14 @@ Ifc4x2::IfcCaissonFoundationTypeEnum::IfcCaissonFoundationTypeEnum(IfcEntityInst
}
Ifc4x2::IfcCaissonFoundationTypeEnum::IfcCaissonFoundationTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcCaissonFoundationTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x2::IfcCaissonFoundationTypeEnum::IfcCaissonFoundationTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcCaissonFoundationTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -2584,12 +2652,14 @@ Ifc4x2::IfcChangeActionEnum::IfcChangeActionEnum(IfcEntityInstanceData* e) {
}
Ifc4x2::IfcChangeActionEnum::IfcChangeActionEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcChangeActionEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x2::IfcChangeActionEnum::IfcChangeActionEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcChangeActionEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -2622,12 +2692,14 @@ Ifc4x2::IfcChillerTypeEnum::IfcChillerTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4x2::IfcChillerTypeEnum::IfcChillerTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcChillerTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x2::IfcChillerTypeEnum::IfcChillerTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcChillerTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -2660,12 +2732,14 @@ Ifc4x2::IfcChimneyTypeEnum::IfcChimneyTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4x2::IfcChimneyTypeEnum::IfcChimneyTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcChimneyTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x2::IfcChimneyTypeEnum::IfcChimneyTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcChimneyTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -2695,12 +2769,14 @@ Ifc4x2::IfcCoilTypeEnum::IfcCoilTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4x2::IfcCoilTypeEnum::IfcCoilTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcCoilTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x2::IfcCoilTypeEnum::IfcCoilTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcCoilTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -2737,12 +2813,14 @@ Ifc4x2::IfcColumnTypeEnum::IfcColumnTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4x2::IfcColumnTypeEnum::IfcColumnTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcColumnTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x2::IfcColumnTypeEnum::IfcColumnTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcColumnTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -2777,12 +2855,14 @@ Ifc4x2::IfcCommunicationsApplianceTypeEnum::IfcCommunicationsApplianceTypeEnum(I
}
Ifc4x2::IfcCommunicationsApplianceTypeEnum::IfcCommunicationsApplianceTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcCommunicationsApplianceTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x2::IfcCommunicationsApplianceTypeEnum::IfcCommunicationsApplianceTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcCommunicationsApplianceTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -2824,12 +2904,14 @@ Ifc4x2::IfcComplexPropertyTemplateTypeEnum::IfcComplexPropertyTemplateTypeEnum(I
}
Ifc4x2::IfcComplexPropertyTemplateTypeEnum::IfcComplexPropertyTemplateTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcComplexPropertyTemplateTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x2::IfcComplexPropertyTemplateTypeEnum::IfcComplexPropertyTemplateTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcComplexPropertyTemplateTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -2859,12 +2941,14 @@ Ifc4x2::IfcCompressorTypeEnum::IfcCompressorTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4x2::IfcCompressorTypeEnum::IfcCompressorTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcCompressorTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x2::IfcCompressorTypeEnum::IfcCompressorTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcCompressorTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -2909,12 +2993,14 @@ Ifc4x2::IfcCondenserTypeEnum::IfcCondenserTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4x2::IfcCondenserTypeEnum::IfcCondenserTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcCondenserTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x2::IfcCondenserTypeEnum::IfcCondenserTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcCondenserTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -2951,12 +3037,14 @@ Ifc4x2::IfcConnectionTypeEnum::IfcConnectionTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4x2::IfcConnectionTypeEnum::IfcConnectionTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcConnectionTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x2::IfcConnectionTypeEnum::IfcConnectionTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcConnectionTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -2988,12 +3076,14 @@ Ifc4x2::IfcConstraintEnum::IfcConstraintEnum(IfcEntityInstanceData* e) {
}
Ifc4x2::IfcConstraintEnum::IfcConstraintEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcConstraintEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x2::IfcConstraintEnum::IfcConstraintEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcConstraintEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -3026,12 +3116,14 @@ Ifc4x2::IfcConstructionEquipmentResourceTypeEnum::IfcConstructionEquipmentResour
}
Ifc4x2::IfcConstructionEquipmentResourceTypeEnum::IfcConstructionEquipmentResourceTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcConstructionEquipmentResourceTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x2::IfcConstructionEquipmentResourceTypeEnum::IfcConstructionEquipmentResourceTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcConstructionEquipmentResourceTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -3069,12 +3161,14 @@ Ifc4x2::IfcConstructionMaterialResourceTypeEnum::IfcConstructionMaterialResource
}
Ifc4x2::IfcConstructionMaterialResourceTypeEnum::IfcConstructionMaterialResourceTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcConstructionMaterialResourceTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x2::IfcConstructionMaterialResourceTypeEnum::IfcConstructionMaterialResourceTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcConstructionMaterialResourceTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -3113,12 +3207,14 @@ Ifc4x2::IfcConstructionProductResourceTypeEnum::IfcConstructionProductResourceTy
}
Ifc4x2::IfcConstructionProductResourceTypeEnum::IfcConstructionProductResourceTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcConstructionProductResourceTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x2::IfcConstructionProductResourceTypeEnum::IfcConstructionProductResourceTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcConstructionProductResourceTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -3150,12 +3246,14 @@ Ifc4x2::IfcControllerTypeEnum::IfcControllerTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4x2::IfcControllerTypeEnum::IfcControllerTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcControllerTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x2::IfcControllerTypeEnum::IfcControllerTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcControllerTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -3190,12 +3288,14 @@ Ifc4x2::IfcCooledBeamTypeEnum::IfcCooledBeamTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4x2::IfcCooledBeamTypeEnum::IfcCooledBeamTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcCooledBeamTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x2::IfcCooledBeamTypeEnum::IfcCooledBeamTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcCooledBeamTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -3227,12 +3327,14 @@ Ifc4x2::IfcCoolingTowerTypeEnum::IfcCoolingTowerTypeEnum(IfcEntityInstanceData*
}
Ifc4x2::IfcCoolingTowerTypeEnum::IfcCoolingTowerTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcCoolingTowerTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x2::IfcCoolingTowerTypeEnum::IfcCoolingTowerTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcCoolingTowerTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -3265,12 +3367,14 @@ Ifc4x2::IfcCostItemTypeEnum::IfcCostItemTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4x2::IfcCostItemTypeEnum::IfcCostItemTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcCostItemTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x2::IfcCostItemTypeEnum::IfcCostItemTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcCostItemTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -3300,12 +3404,14 @@ Ifc4x2::IfcCostScheduleTypeEnum::IfcCostScheduleTypeEnum(IfcEntityInstanceData*
}
Ifc4x2::IfcCostScheduleTypeEnum::IfcCostScheduleTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcCostScheduleTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x2::IfcCostScheduleTypeEnum::IfcCostScheduleTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcCostScheduleTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -3342,12 +3448,14 @@ Ifc4x2::IfcCoveringTypeEnum::IfcCoveringTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4x2::IfcCoveringTypeEnum::IfcCoveringTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcCoveringTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x2::IfcCoveringTypeEnum::IfcCoveringTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcCoveringTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -3388,12 +3496,14 @@ Ifc4x2::IfcCrewResourceTypeEnum::IfcCrewResourceTypeEnum(IfcEntityInstanceData*
}
Ifc4x2::IfcCrewResourceTypeEnum::IfcCrewResourceTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcCrewResourceTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x2::IfcCrewResourceTypeEnum::IfcCrewResourceTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcCrewResourceTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -3425,12 +3535,14 @@ Ifc4x2::IfcCurtainWallTypeEnum::IfcCurtainWallTypeEnum(IfcEntityInstanceData* e)
}
Ifc4x2::IfcCurtainWallTypeEnum::IfcCurtainWallTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcCurtainWallTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x2::IfcCurtainWallTypeEnum::IfcCurtainWallTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcCurtainWallTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -3460,12 +3572,14 @@ Ifc4x2::IfcCurveInterpolationEnum::IfcCurveInterpolationEnum(IfcEntityInstanceDa
}
Ifc4x2::IfcCurveInterpolationEnum::IfcCurveInterpolationEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcCurveInterpolationEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x2::IfcCurveInterpolationEnum::IfcCurveInterpolationEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcCurveInterpolationEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -3497,12 +3611,14 @@ Ifc4x2::IfcDamperTypeEnum::IfcDamperTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4x2::IfcDamperTypeEnum::IfcDamperTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcDamperTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x2::IfcDamperTypeEnum::IfcDamperTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcDamperTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -3543,12 +3659,14 @@ Ifc4x2::IfcDataOriginEnum::IfcDataOriginEnum(IfcEntityInstanceData* e) {
}
Ifc4x2::IfcDataOriginEnum::IfcDataOriginEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcDataOriginEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x2::IfcDataOriginEnum::IfcDataOriginEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcDataOriginEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -3581,12 +3699,14 @@ Ifc4x2::IfcDerivedUnitEnum::IfcDerivedUnitEnum(IfcEntityInstanceData* e) {
}
Ifc4x2::IfcDerivedUnitEnum::IfcDerivedUnitEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcDerivedUnitEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x2::IfcDerivedUnitEnum::IfcDerivedUnitEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcDerivedUnitEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -3667,12 +3787,14 @@ Ifc4x2::IfcDirectionSenseEnum::IfcDirectionSenseEnum(IfcEntityInstanceData* e) {
}
Ifc4x2::IfcDirectionSenseEnum::IfcDirectionSenseEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcDirectionSenseEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x2::IfcDirectionSenseEnum::IfcDirectionSenseEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcDirectionSenseEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -3702,12 +3824,14 @@ Ifc4x2::IfcDiscreteAccessoryTypeEnum::IfcDiscreteAccessoryTypeEnum(IfcEntityInst
}
Ifc4x2::IfcDiscreteAccessoryTypeEnum::IfcDiscreteAccessoryTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcDiscreteAccessoryTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x2::IfcDiscreteAccessoryTypeEnum::IfcDiscreteAccessoryTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcDiscreteAccessoryTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -3741,12 +3865,14 @@ Ifc4x2::IfcDistributionChamberElementTypeEnum::IfcDistributionChamberElementType
}
Ifc4x2::IfcDistributionChamberElementTypeEnum::IfcDistributionChamberElementTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcDistributionChamberElementTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x2::IfcDistributionChamberElementTypeEnum::IfcDistributionChamberElementTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcDistributionChamberElementTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -3784,12 +3910,14 @@ Ifc4x2::IfcDistributionPortTypeEnum::IfcDistributionPortTypeEnum(IfcEntityInstan
}
Ifc4x2::IfcDistributionPortTypeEnum::IfcDistributionPortTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcDistributionPortTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x2::IfcDistributionPortTypeEnum::IfcDistributionPortTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcDistributionPortTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -3823,12 +3951,14 @@ Ifc4x2::IfcDistributionSystemEnum::IfcDistributionSystemEnum(IfcEntityInstanceDa
}
Ifc4x2::IfcDistributionSystemEnum::IfcDistributionSystemEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcDistributionSystemEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x2::IfcDistributionSystemEnum::IfcDistributionSystemEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcDistributionSystemEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -3900,12 +4030,14 @@ Ifc4x2::IfcDocumentConfidentialityEnum::IfcDocumentConfidentialityEnum(IfcEntity
}
Ifc4x2::IfcDocumentConfidentialityEnum::IfcDocumentConfidentialityEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcDocumentConfidentialityEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x2::IfcDocumentConfidentialityEnum::IfcDocumentConfidentialityEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcDocumentConfidentialityEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -3939,12 +4071,14 @@ Ifc4x2::IfcDocumentStatusEnum::IfcDocumentStatusEnum(IfcEntityInstanceData* e) {
}
Ifc4x2::IfcDocumentStatusEnum::IfcDocumentStatusEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcDocumentStatusEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x2::IfcDocumentStatusEnum::IfcDocumentStatusEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcDocumentStatusEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -3977,12 +4111,14 @@ Ifc4x2::IfcDoorPanelOperationEnum::IfcDoorPanelOperationEnum(IfcEntityInstanceDa
}
Ifc4x2::IfcDoorPanelOperationEnum::IfcDoorPanelOperationEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcDoorPanelOperationEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x2::IfcDoorPanelOperationEnum::IfcDoorPanelOperationEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcDoorPanelOperationEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -4019,12 +4155,14 @@ Ifc4x2::IfcDoorPanelPositionEnum::IfcDoorPanelPositionEnum(IfcEntityInstanceData
}
Ifc4x2::IfcDoorPanelPositionEnum::IfcDoorPanelPositionEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcDoorPanelPositionEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x2::IfcDoorPanelPositionEnum::IfcDoorPanelPositionEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcDoorPanelPositionEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -4056,12 +4194,14 @@ Ifc4x2::IfcDoorStyleConstructionEnum::IfcDoorStyleConstructionEnum(IfcEntityInst
}
Ifc4x2::IfcDoorStyleConstructionEnum::IfcDoorStyleConstructionEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcDoorStyleConstructionEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x2::IfcDoorStyleConstructionEnum::IfcDoorStyleConstructionEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcDoorStyleConstructionEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -4098,12 +4238,14 @@ Ifc4x2::IfcDoorStyleOperationEnum::IfcDoorStyleOperationEnum(IfcEntityInstanceDa
}
Ifc4x2::IfcDoorStyleOperationEnum::IfcDoorStyleOperationEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcDoorStyleOperationEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x2::IfcDoorStyleOperationEnum::IfcDoorStyleOperationEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcDoorStyleOperationEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -4149,12 +4291,14 @@ Ifc4x2::IfcDoorTypeEnum::IfcDoorTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4x2::IfcDoorTypeEnum::IfcDoorTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcDoorTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x2::IfcDoorTypeEnum::IfcDoorTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcDoorTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -4187,12 +4331,14 @@ Ifc4x2::IfcDoorTypeOperationEnum::IfcDoorTypeOperationEnum(IfcEntityInstanceData
}
Ifc4x2::IfcDoorTypeOperationEnum::IfcDoorTypeOperationEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcDoorTypeOperationEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x2::IfcDoorTypeOperationEnum::IfcDoorTypeOperationEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcDoorTypeOperationEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -4240,12 +4386,14 @@ Ifc4x2::IfcDuctFittingTypeEnum::IfcDuctFittingTypeEnum(IfcEntityInstanceData* e)
}
Ifc4x2::IfcDuctFittingTypeEnum::IfcDuctFittingTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcDuctFittingTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x2::IfcDuctFittingTypeEnum::IfcDuctFittingTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcDuctFittingTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -4282,12 +4430,14 @@ Ifc4x2::IfcDuctSegmentTypeEnum::IfcDuctSegmentTypeEnum(IfcEntityInstanceData* e)
}
Ifc4x2::IfcDuctSegmentTypeEnum::IfcDuctSegmentTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcDuctSegmentTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x2::IfcDuctSegmentTypeEnum::IfcDuctSegmentTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcDuctSegmentTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -4319,12 +4469,14 @@ Ifc4x2::IfcDuctSilencerTypeEnum::IfcDuctSilencerTypeEnum(IfcEntityInstanceData*
}
Ifc4x2::IfcDuctSilencerTypeEnum::IfcDuctSilencerTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcDuctSilencerTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x2::IfcDuctSilencerTypeEnum::IfcDuctSilencerTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcDuctSilencerTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -4357,12 +4509,14 @@ Ifc4x2::IfcElectricApplianceTypeEnum::IfcElectricApplianceTypeEnum(IfcEntityInst
}
Ifc4x2::IfcElectricApplianceTypeEnum::IfcElectricApplianceTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcElectricApplianceTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x2::IfcElectricApplianceTypeEnum::IfcElectricApplianceTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcElectricApplianceTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -4408,12 +4562,14 @@ Ifc4x2::IfcElectricDistributionBoardTypeEnum::IfcElectricDistributionBoardTypeEn
}
Ifc4x2::IfcElectricDistributionBoardTypeEnum::IfcElectricDistributionBoardTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcElectricDistributionBoardTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x2::IfcElectricDistributionBoardTypeEnum::IfcElectricDistributionBoardTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcElectricDistributionBoardTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -4447,12 +4603,14 @@ Ifc4x2::IfcElectricFlowStorageDeviceTypeEnum::IfcElectricFlowStorageDeviceTypeEn
}
Ifc4x2::IfcElectricFlowStorageDeviceTypeEnum::IfcElectricFlowStorageDeviceTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcElectricFlowStorageDeviceTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x2::IfcElectricFlowStorageDeviceTypeEnum::IfcElectricFlowStorageDeviceTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcElectricFlowStorageDeviceTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -4487,12 +4645,14 @@ Ifc4x2::IfcElectricGeneratorTypeEnum::IfcElectricGeneratorTypeEnum(IfcEntityInst
}
Ifc4x2::IfcElectricGeneratorTypeEnum::IfcElectricGeneratorTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcElectricGeneratorTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x2::IfcElectricGeneratorTypeEnum::IfcElectricGeneratorTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcElectricGeneratorTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -4525,12 +4685,14 @@ Ifc4x2::IfcElectricMotorTypeEnum::IfcElectricMotorTypeEnum(IfcEntityInstanceData
}
Ifc4x2::IfcElectricMotorTypeEnum::IfcElectricMotorTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcElectricMotorTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x2::IfcElectricMotorTypeEnum::IfcElectricMotorTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcElectricMotorTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -4565,12 +4727,14 @@ Ifc4x2::IfcElectricTimeControlTypeEnum::IfcElectricTimeControlTypeEnum(IfcEntity
}
Ifc4x2::IfcElectricTimeControlTypeEnum::IfcElectricTimeControlTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcElectricTimeControlTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x2::IfcElectricTimeControlTypeEnum::IfcElectricTimeControlTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcElectricTimeControlTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -4603,12 +4767,14 @@ Ifc4x2::IfcElementAssemblyTypeEnum::IfcElementAssemblyTypeEnum(IfcEntityInstance
}
Ifc4x2::IfcElementAssemblyTypeEnum::IfcElementAssemblyTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcElementAssemblyTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x2::IfcElementAssemblyTypeEnum::IfcElementAssemblyTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcElementAssemblyTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -4652,12 +4818,14 @@ Ifc4x2::IfcElementCompositionEnum::IfcElementCompositionEnum(IfcEntityInstanceDa
}
Ifc4x2::IfcElementCompositionEnum::IfcElementCompositionEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcElementCompositionEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x2::IfcElementCompositionEnum::IfcElementCompositionEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcElementCompositionEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -4688,12 +4856,14 @@ Ifc4x2::IfcEngineTypeEnum::IfcEngineTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4x2::IfcEngineTypeEnum::IfcEngineTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcEngineTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x2::IfcEngineTypeEnum::IfcEngineTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcEngineTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -4725,12 +4895,14 @@ Ifc4x2::IfcEvaporativeCoolerTypeEnum::IfcEvaporativeCoolerTypeEnum(IfcEntityInst
}
Ifc4x2::IfcEvaporativeCoolerTypeEnum::IfcEvaporativeCoolerTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcEvaporativeCoolerTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x2::IfcEvaporativeCoolerTypeEnum::IfcEvaporativeCoolerTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcEvaporativeCoolerTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -4769,12 +4941,14 @@ Ifc4x2::IfcEvaporatorTypeEnum::IfcEvaporatorTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4x2::IfcEvaporatorTypeEnum::IfcEvaporatorTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcEvaporatorTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x2::IfcEvaporatorTypeEnum::IfcEvaporatorTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcEvaporatorTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -4810,12 +4984,14 @@ Ifc4x2::IfcEventTriggerTypeEnum::IfcEventTriggerTypeEnum(IfcEntityInstanceData*
}
Ifc4x2::IfcEventTriggerTypeEnum::IfcEventTriggerTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcEventTriggerTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x2::IfcEventTriggerTypeEnum::IfcEventTriggerTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcEventTriggerTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -4849,12 +5025,14 @@ Ifc4x2::IfcEventTypeEnum::IfcEventTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4x2::IfcEventTypeEnum::IfcEventTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcEventTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x2::IfcEventTypeEnum::IfcEventTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcEventTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -4887,12 +5065,14 @@ Ifc4x2::IfcExternalSpatialElementTypeEnum::IfcExternalSpatialElementTypeEnum(Ifc
}
Ifc4x2::IfcExternalSpatialElementTypeEnum::IfcExternalSpatialElementTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcExternalSpatialElementTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x2::IfcExternalSpatialElementTypeEnum::IfcExternalSpatialElementTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcExternalSpatialElementTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -4926,12 +5106,14 @@ Ifc4x2::IfcFanTypeEnum::IfcFanTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4x2::IfcFanTypeEnum::IfcFanTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcFanTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x2::IfcFanTypeEnum::IfcFanTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcFanTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -4968,12 +5150,14 @@ Ifc4x2::IfcFastenerTypeEnum::IfcFastenerTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4x2::IfcFastenerTypeEnum::IfcFastenerTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcFastenerTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x2::IfcFastenerTypeEnum::IfcFastenerTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcFastenerTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -5006,12 +5190,14 @@ Ifc4x2::IfcFilterTypeEnum::IfcFilterTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4x2::IfcFilterTypeEnum::IfcFilterTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcFilterTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x2::IfcFilterTypeEnum::IfcFilterTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcFilterTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -5047,12 +5233,14 @@ Ifc4x2::IfcFireSuppressionTerminalTypeEnum::IfcFireSuppressionTerminalTypeEnum(I
}
Ifc4x2::IfcFireSuppressionTerminalTypeEnum::IfcFireSuppressionTerminalTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcFireSuppressionTerminalTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x2::IfcFireSuppressionTerminalTypeEnum::IfcFireSuppressionTerminalTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcFireSuppressionTerminalTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -5087,12 +5275,14 @@ Ifc4x2::IfcFlowDirectionEnum::IfcFlowDirectionEnum(IfcEntityInstanceData* e) {
}
Ifc4x2::IfcFlowDirectionEnum::IfcFlowDirectionEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcFlowDirectionEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x2::IfcFlowDirectionEnum::IfcFlowDirectionEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcFlowDirectionEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -5124,12 +5314,14 @@ Ifc4x2::IfcFlowInstrumentTypeEnum::IfcFlowInstrumentTypeEnum(IfcEntityInstanceDa
}
Ifc4x2::IfcFlowInstrumentTypeEnum::IfcFlowInstrumentTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcFlowInstrumentTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x2::IfcFlowInstrumentTypeEnum::IfcFlowInstrumentTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcFlowInstrumentTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -5167,12 +5359,14 @@ Ifc4x2::IfcFlowMeterTypeEnum::IfcFlowMeterTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4x2::IfcFlowMeterTypeEnum::IfcFlowMeterTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcFlowMeterTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x2::IfcFlowMeterTypeEnum::IfcFlowMeterTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcFlowMeterTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -5206,12 +5400,14 @@ Ifc4x2::IfcFootingTypeEnum::IfcFootingTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4x2::IfcFootingTypeEnum::IfcFootingTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcFootingTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x2::IfcFootingTypeEnum::IfcFootingTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcFootingTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -5246,12 +5442,14 @@ Ifc4x2::IfcFurnitureTypeEnum::IfcFurnitureTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4x2::IfcFurnitureTypeEnum::IfcFurnitureTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcFurnitureTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x2::IfcFurnitureTypeEnum::IfcFurnitureTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcFurnitureTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -5288,12 +5486,14 @@ Ifc4x2::IfcGeographicElementTypeEnum::IfcGeographicElementTypeEnum(IfcEntityInst
}
Ifc4x2::IfcGeographicElementTypeEnum::IfcGeographicElementTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcGeographicElementTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x2::IfcGeographicElementTypeEnum::IfcGeographicElementTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcGeographicElementTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -5325,12 +5525,14 @@ Ifc4x2::IfcGeometricProjectionEnum::IfcGeometricProjectionEnum(IfcEntityInstance
}
Ifc4x2::IfcGeometricProjectionEnum::IfcGeometricProjectionEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcGeometricProjectionEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x2::IfcGeometricProjectionEnum::IfcGeometricProjectionEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcGeometricProjectionEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -5367,12 +5569,14 @@ Ifc4x2::IfcGlobalOrLocalEnum::IfcGlobalOrLocalEnum(IfcEntityInstanceData* e) {
}
Ifc4x2::IfcGlobalOrLocalEnum::IfcGlobalOrLocalEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcGlobalOrLocalEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x2::IfcGlobalOrLocalEnum::IfcGlobalOrLocalEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcGlobalOrLocalEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -5402,12 +5606,14 @@ Ifc4x2::IfcGridTypeEnum::IfcGridTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4x2::IfcGridTypeEnum::IfcGridTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcGridTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x2::IfcGridTypeEnum::IfcGridTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcGridTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -5441,12 +5647,14 @@ Ifc4x2::IfcHeatExchangerTypeEnum::IfcHeatExchangerTypeEnum(IfcEntityInstanceData
}
Ifc4x2::IfcHeatExchangerTypeEnum::IfcHeatExchangerTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcHeatExchangerTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x2::IfcHeatExchangerTypeEnum::IfcHeatExchangerTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcHeatExchangerTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -5478,12 +5686,14 @@ Ifc4x2::IfcHumidifierTypeEnum::IfcHumidifierTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4x2::IfcHumidifierTypeEnum::IfcHumidifierTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcHumidifierTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x2::IfcHumidifierTypeEnum::IfcHumidifierTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcHumidifierTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -5526,12 +5736,14 @@ Ifc4x2::IfcInterceptorTypeEnum::IfcInterceptorTypeEnum(IfcEntityInstanceData* e)
}
Ifc4x2::IfcInterceptorTypeEnum::IfcInterceptorTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcInterceptorTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x2::IfcInterceptorTypeEnum::IfcInterceptorTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcInterceptorTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -5565,12 +5777,14 @@ Ifc4x2::IfcInternalOrExternalEnum::IfcInternalOrExternalEnum(IfcEntityInstanceDa
}
Ifc4x2::IfcInternalOrExternalEnum::IfcInternalOrExternalEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcInternalOrExternalEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x2::IfcInternalOrExternalEnum::IfcInternalOrExternalEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcInternalOrExternalEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -5604,12 +5818,14 @@ Ifc4x2::IfcInventoryTypeEnum::IfcInventoryTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4x2::IfcInventoryTypeEnum::IfcInventoryTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcInventoryTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x2::IfcInventoryTypeEnum::IfcInventoryTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcInventoryTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -5642,12 +5858,14 @@ Ifc4x2::IfcJunctionBoxTypeEnum::IfcJunctionBoxTypeEnum(IfcEntityInstanceData* e)
}
Ifc4x2::IfcJunctionBoxTypeEnum::IfcJunctionBoxTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcJunctionBoxTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x2::IfcJunctionBoxTypeEnum::IfcJunctionBoxTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcJunctionBoxTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -5679,12 +5897,14 @@ Ifc4x2::IfcKnotType::IfcKnotType(IfcEntityInstanceData* e) {
}
Ifc4x2::IfcKnotType::IfcKnotType(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcKnotType_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x2::IfcKnotType::IfcKnotType(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcKnotType_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -5716,12 +5936,14 @@ Ifc4x2::IfcLaborResourceTypeEnum::IfcLaborResourceTypeEnum(IfcEntityInstanceData
}
Ifc4x2::IfcLaborResourceTypeEnum::IfcLaborResourceTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcLaborResourceTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x2::IfcLaborResourceTypeEnum::IfcLaborResourceTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcLaborResourceTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -5770,12 +5992,14 @@ Ifc4x2::IfcLampTypeEnum::IfcLampTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4x2::IfcLampTypeEnum::IfcLampTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcLampTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x2::IfcLampTypeEnum::IfcLampTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcLampTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -5814,12 +6038,14 @@ Ifc4x2::IfcLayerSetDirectionEnum::IfcLayerSetDirectionEnum(IfcEntityInstanceData
}
Ifc4x2::IfcLayerSetDirectionEnum::IfcLayerSetDirectionEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcLayerSetDirectionEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x2::IfcLayerSetDirectionEnum::IfcLayerSetDirectionEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcLayerSetDirectionEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -5850,12 +6076,14 @@ Ifc4x2::IfcLightDistributionCurveEnum::IfcLightDistributionCurveEnum(IfcEntityIn
}
Ifc4x2::IfcLightDistributionCurveEnum::IfcLightDistributionCurveEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcLightDistributionCurveEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x2::IfcLightDistributionCurveEnum::IfcLightDistributionCurveEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcLightDistributionCurveEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -5887,12 +6115,14 @@ Ifc4x2::IfcLightEmissionSourceEnum::IfcLightEmissionSourceEnum(IfcEntityInstance
}
Ifc4x2::IfcLightEmissionSourceEnum::IfcLightEmissionSourceEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcLightEmissionSourceEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x2::IfcLightEmissionSourceEnum::IfcLightEmissionSourceEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcLightEmissionSourceEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -5931,12 +6161,14 @@ Ifc4x2::IfcLightFixtureTypeEnum::IfcLightFixtureTypeEnum(IfcEntityInstanceData*
}
Ifc4x2::IfcLightFixtureTypeEnum::IfcLightFixtureTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcLightFixtureTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x2::IfcLightFixtureTypeEnum::IfcLightFixtureTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcLightFixtureTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -5969,12 +6201,14 @@ Ifc4x2::IfcLoadGroupTypeEnum::IfcLoadGroupTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4x2::IfcLoadGroupTypeEnum::IfcLoadGroupTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcLoadGroupTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x2::IfcLoadGroupTypeEnum::IfcLoadGroupTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcLoadGroupTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -6007,12 +6241,14 @@ Ifc4x2::IfcLogicalOperatorEnum::IfcLogicalOperatorEnum(IfcEntityInstanceData* e)
}
Ifc4x2::IfcLogicalOperatorEnum::IfcLogicalOperatorEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcLogicalOperatorEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x2::IfcLogicalOperatorEnum::IfcLogicalOperatorEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcLogicalOperatorEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -6045,12 +6281,14 @@ Ifc4x2::IfcMechanicalFastenerTypeEnum::IfcMechanicalFastenerTypeEnum(IfcEntityIn
}
Ifc4x2::IfcMechanicalFastenerTypeEnum::IfcMechanicalFastenerTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcMechanicalFastenerTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x2::IfcMechanicalFastenerTypeEnum::IfcMechanicalFastenerTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcMechanicalFastenerTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -6091,12 +6329,14 @@ Ifc4x2::IfcMedicalDeviceTypeEnum::IfcMedicalDeviceTypeEnum(IfcEntityInstanceData
}
Ifc4x2::IfcMedicalDeviceTypeEnum::IfcMedicalDeviceTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcMedicalDeviceTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x2::IfcMedicalDeviceTypeEnum::IfcMedicalDeviceTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcMedicalDeviceTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -6131,12 +6371,14 @@ Ifc4x2::IfcMemberTypeEnum::IfcMemberTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4x2::IfcMemberTypeEnum::IfcMemberTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcMemberTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x2::IfcMemberTypeEnum::IfcMemberTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcMemberTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -6183,12 +6425,14 @@ Ifc4x2::IfcMotorConnectionTypeEnum::IfcMotorConnectionTypeEnum(IfcEntityInstance
}
Ifc4x2::IfcMotorConnectionTypeEnum::IfcMotorConnectionTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcMotorConnectionTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x2::IfcMotorConnectionTypeEnum::IfcMotorConnectionTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcMotorConnectionTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -6221,12 +6465,14 @@ Ifc4x2::IfcNullStyle::IfcNullStyle(IfcEntityInstanceData* e) {
}
Ifc4x2::IfcNullStyle::IfcNullStyle(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcNullStyle_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x2::IfcNullStyle::IfcNullStyle(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcNullStyle_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -6255,12 +6501,14 @@ Ifc4x2::IfcObjectTypeEnum::IfcObjectTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4x2::IfcObjectTypeEnum::IfcObjectTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcObjectTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x2::IfcObjectTypeEnum::IfcObjectTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcObjectTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -6296,12 +6544,14 @@ Ifc4x2::IfcObjectiveEnum::IfcObjectiveEnum(IfcEntityInstanceData* e) {
}
Ifc4x2::IfcObjectiveEnum::IfcObjectiveEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcObjectiveEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x2::IfcObjectiveEnum::IfcObjectiveEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcObjectiveEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -6342,12 +6592,14 @@ Ifc4x2::IfcOccupantTypeEnum::IfcOccupantTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4x2::IfcOccupantTypeEnum::IfcOccupantTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcOccupantTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x2::IfcOccupantTypeEnum::IfcOccupantTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcOccupantTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -6384,12 +6636,14 @@ Ifc4x2::IfcOpeningElementTypeEnum::IfcOpeningElementTypeEnum(IfcEntityInstanceDa
}
Ifc4x2::IfcOpeningElementTypeEnum::IfcOpeningElementTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcOpeningElementTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x2::IfcOpeningElementTypeEnum::IfcOpeningElementTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcOpeningElementTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -6421,12 +6675,14 @@ Ifc4x2::IfcOutletTypeEnum::IfcOutletTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4x2::IfcOutletTypeEnum::IfcOutletTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcOutletTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x2::IfcOutletTypeEnum::IfcOutletTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcOutletTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -6461,12 +6717,14 @@ Ifc4x2::IfcPerformanceHistoryTypeEnum::IfcPerformanceHistoryTypeEnum(IfcEntityIn
}
Ifc4x2::IfcPerformanceHistoryTypeEnum::IfcPerformanceHistoryTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcPerformanceHistoryTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x2::IfcPerformanceHistoryTypeEnum::IfcPerformanceHistoryTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcPerformanceHistoryTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -6496,12 +6754,14 @@ Ifc4x2::IfcPermeableCoveringOperationEnum::IfcPermeableCoveringOperationEnum(Ifc
}
Ifc4x2::IfcPermeableCoveringOperationEnum::IfcPermeableCoveringOperationEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcPermeableCoveringOperationEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x2::IfcPermeableCoveringOperationEnum::IfcPermeableCoveringOperationEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcPermeableCoveringOperationEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -6534,12 +6794,14 @@ Ifc4x2::IfcPermitTypeEnum::IfcPermitTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4x2::IfcPermitTypeEnum::IfcPermitTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcPermitTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x2::IfcPermitTypeEnum::IfcPermitTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcPermitTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -6572,12 +6834,14 @@ Ifc4x2::IfcPhysicalOrVirtualEnum::IfcPhysicalOrVirtualEnum(IfcEntityInstanceData
}
Ifc4x2::IfcPhysicalOrVirtualEnum::IfcPhysicalOrVirtualEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcPhysicalOrVirtualEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x2::IfcPhysicalOrVirtualEnum::IfcPhysicalOrVirtualEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcPhysicalOrVirtualEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -6608,12 +6872,14 @@ Ifc4x2::IfcPileConstructionEnum::IfcPileConstructionEnum(IfcEntityInstanceData*
}
Ifc4x2::IfcPileConstructionEnum::IfcPileConstructionEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcPileConstructionEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x2::IfcPileConstructionEnum::IfcPileConstructionEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcPileConstructionEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -6647,12 +6913,14 @@ Ifc4x2::IfcPileTypeEnum::IfcPileTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4x2::IfcPileTypeEnum::IfcPileTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcPileTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x2::IfcPileTypeEnum::IfcPileTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcPileTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -6688,12 +6956,14 @@ Ifc4x2::IfcPipeFittingTypeEnum::IfcPipeFittingTypeEnum(IfcEntityInstanceData* e)
}
Ifc4x2::IfcPipeFittingTypeEnum::IfcPipeFittingTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcPipeFittingTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x2::IfcPipeFittingTypeEnum::IfcPipeFittingTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcPipeFittingTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -6730,12 +7000,14 @@ Ifc4x2::IfcPipeSegmentTypeEnum::IfcPipeSegmentTypeEnum(IfcEntityInstanceData* e)
}
Ifc4x2::IfcPipeSegmentTypeEnum::IfcPipeSegmentTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcPipeSegmentTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x2::IfcPipeSegmentTypeEnum::IfcPipeSegmentTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcPipeSegmentTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -6770,12 +7042,14 @@ Ifc4x2::IfcPlateTypeEnum::IfcPlateTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4x2::IfcPlateTypeEnum::IfcPlateTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcPlateTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x2::IfcPlateTypeEnum::IfcPlateTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcPlateTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -6814,12 +7088,14 @@ Ifc4x2::IfcPreferredSurfaceCurveRepresentation::IfcPreferredSurfaceCurveRepresen
}
Ifc4x2::IfcPreferredSurfaceCurveRepresentation::IfcPreferredSurfaceCurveRepresentation(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcPreferredSurfaceCurveRepresentation_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x2::IfcPreferredSurfaceCurveRepresentation::IfcPreferredSurfaceCurveRepresentation(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcPreferredSurfaceCurveRepresentation_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -6850,12 +7126,14 @@ Ifc4x2::IfcProcedureTypeEnum::IfcProcedureTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4x2::IfcProcedureTypeEnum::IfcProcedureTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcProcedureTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x2::IfcProcedureTypeEnum::IfcProcedureTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcProcedureTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -6892,12 +7170,14 @@ Ifc4x2::IfcProfileTypeEnum::IfcProfileTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4x2::IfcProfileTypeEnum::IfcProfileTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcProfileTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x2::IfcProfileTypeEnum::IfcProfileTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcProfileTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -6927,12 +7207,14 @@ Ifc4x2::IfcProjectOrderTypeEnum::IfcProjectOrderTypeEnum(IfcEntityInstanceData*
}
Ifc4x2::IfcProjectOrderTypeEnum::IfcProjectOrderTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcProjectOrderTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x2::IfcProjectOrderTypeEnum::IfcProjectOrderTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcProjectOrderTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -6967,12 +7249,14 @@ Ifc4x2::IfcProjectedOrTrueLengthEnum::IfcProjectedOrTrueLengthEnum(IfcEntityInst
}
Ifc4x2::IfcProjectedOrTrueLengthEnum::IfcProjectedOrTrueLengthEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcProjectedOrTrueLengthEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x2::IfcProjectedOrTrueLengthEnum::IfcProjectedOrTrueLengthEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcProjectedOrTrueLengthEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -7002,12 +7286,14 @@ Ifc4x2::IfcProjectionElementTypeEnum::IfcProjectionElementTypeEnum(IfcEntityInst
}
Ifc4x2::IfcProjectionElementTypeEnum::IfcProjectionElementTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcProjectionElementTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x2::IfcProjectionElementTypeEnum::IfcProjectionElementTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcProjectionElementTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -7039,12 +7325,14 @@ Ifc4x2::IfcPropertySetTemplateTypeEnum::IfcPropertySetTemplateTypeEnum(IfcEntity
}
Ifc4x2::IfcPropertySetTemplateTypeEnum::IfcPropertySetTemplateTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcPropertySetTemplateTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x2::IfcPropertySetTemplateTypeEnum::IfcPropertySetTemplateTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcPropertySetTemplateTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -7080,12 +7368,14 @@ Ifc4x2::IfcProtectiveDeviceTrippingUnitTypeEnum::IfcProtectiveDeviceTrippingUnit
}
Ifc4x2::IfcProtectiveDeviceTrippingUnitTypeEnum::IfcProtectiveDeviceTrippingUnitTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcProtectiveDeviceTrippingUnitTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x2::IfcProtectiveDeviceTrippingUnitTypeEnum::IfcProtectiveDeviceTrippingUnitTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcProtectiveDeviceTrippingUnitTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -7119,12 +7409,14 @@ Ifc4x2::IfcProtectiveDeviceTypeEnum::IfcProtectiveDeviceTypeEnum(IfcEntityInstan
}
Ifc4x2::IfcProtectiveDeviceTypeEnum::IfcProtectiveDeviceTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcProtectiveDeviceTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x2::IfcProtectiveDeviceTypeEnum::IfcProtectiveDeviceTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcProtectiveDeviceTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -7161,12 +7453,14 @@ Ifc4x2::IfcPumpTypeEnum::IfcPumpTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4x2::IfcPumpTypeEnum::IfcPumpTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcPumpTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x2::IfcPumpTypeEnum::IfcPumpTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcPumpTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -7203,12 +7497,14 @@ Ifc4x2::IfcRailingTypeEnum::IfcRailingTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4x2::IfcRailingTypeEnum::IfcRailingTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcRailingTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x2::IfcRailingTypeEnum::IfcRailingTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcRailingTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -7241,12 +7537,14 @@ Ifc4x2::IfcRampFlightTypeEnum::IfcRampFlightTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4x2::IfcRampFlightTypeEnum::IfcRampFlightTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcRampFlightTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x2::IfcRampFlightTypeEnum::IfcRampFlightTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcRampFlightTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -7278,12 +7576,14 @@ Ifc4x2::IfcRampTypeEnum::IfcRampTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4x2::IfcRampTypeEnum::IfcRampTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcRampTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x2::IfcRampTypeEnum::IfcRampTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcRampTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -7319,12 +7619,14 @@ Ifc4x2::IfcRecurrenceTypeEnum::IfcRecurrenceTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4x2::IfcRecurrenceTypeEnum::IfcRecurrenceTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcRecurrenceTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x2::IfcRecurrenceTypeEnum::IfcRecurrenceTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcRecurrenceTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -7360,12 +7662,14 @@ Ifc4x2::IfcReferentTypeEnum::IfcReferentTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4x2::IfcReferentTypeEnum::IfcReferentTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcReferentTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x2::IfcReferentTypeEnum::IfcReferentTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcReferentTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -7398,12 +7702,14 @@ Ifc4x2::IfcReflectanceMethodEnum::IfcReflectanceMethodEnum(IfcEntityInstanceData
}
Ifc4x2::IfcReflectanceMethodEnum::IfcReflectanceMethodEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcReflectanceMethodEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x2::IfcReflectanceMethodEnum::IfcReflectanceMethodEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcReflectanceMethodEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -7441,12 +7747,14 @@ Ifc4x2::IfcReinforcingBarRoleEnum::IfcReinforcingBarRoleEnum(IfcEntityInstanceDa
}
Ifc4x2::IfcReinforcingBarRoleEnum::IfcReinforcingBarRoleEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcReinforcingBarRoleEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x2::IfcReinforcingBarRoleEnum::IfcReinforcingBarRoleEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcReinforcingBarRoleEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -7484,12 +7792,14 @@ Ifc4x2::IfcReinforcingBarSurfaceEnum::IfcReinforcingBarSurfaceEnum(IfcEntityInst
}
Ifc4x2::IfcReinforcingBarSurfaceEnum::IfcReinforcingBarSurfaceEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcReinforcingBarSurfaceEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x2::IfcReinforcingBarSurfaceEnum::IfcReinforcingBarSurfaceEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcReinforcingBarSurfaceEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -7519,12 +7829,14 @@ Ifc4x2::IfcReinforcingBarTypeEnum::IfcReinforcingBarTypeEnum(IfcEntityInstanceDa
}
Ifc4x2::IfcReinforcingBarTypeEnum::IfcReinforcingBarTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcReinforcingBarTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x2::IfcReinforcingBarTypeEnum::IfcReinforcingBarTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcReinforcingBarTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -7563,12 +7875,14 @@ Ifc4x2::IfcReinforcingMeshTypeEnum::IfcReinforcingMeshTypeEnum(IfcEntityInstance
}
Ifc4x2::IfcReinforcingMeshTypeEnum::IfcReinforcingMeshTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcReinforcingMeshTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x2::IfcReinforcingMeshTypeEnum::IfcReinforcingMeshTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcReinforcingMeshTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -7598,12 +7912,14 @@ Ifc4x2::IfcRoleEnum::IfcRoleEnum(IfcEntityInstanceData* e) {
}
Ifc4x2::IfcRoleEnum::IfcRoleEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcRoleEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x2::IfcRoleEnum::IfcRoleEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcRoleEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -7654,12 +7970,14 @@ Ifc4x2::IfcRoofTypeEnum::IfcRoofTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4x2::IfcRoofTypeEnum::IfcRoofTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcRoofTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x2::IfcRoofTypeEnum::IfcRoofTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcRoofTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -7702,12 +8020,14 @@ Ifc4x2::IfcSIPrefix::IfcSIPrefix(IfcEntityInstanceData* e) {
}
Ifc4x2::IfcSIPrefix::IfcSIPrefix(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcSIPrefix_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x2::IfcSIPrefix::IfcSIPrefix(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcSIPrefix_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -7751,12 +8071,14 @@ Ifc4x2::IfcSIUnitName::IfcSIUnitName(IfcEntityInstanceData* e) {
}
Ifc4x2::IfcSIUnitName::IfcSIUnitName(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcSIUnitName_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x2::IfcSIUnitName::IfcSIUnitName(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcSIUnitName_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -7814,12 +8136,14 @@ Ifc4x2::IfcSanitaryTerminalTypeEnum::IfcSanitaryTerminalTypeEnum(IfcEntityInstan
}
Ifc4x2::IfcSanitaryTerminalTypeEnum::IfcSanitaryTerminalTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcSanitaryTerminalTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x2::IfcSanitaryTerminalTypeEnum::IfcSanitaryTerminalTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcSanitaryTerminalTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -7859,12 +8183,14 @@ Ifc4x2::IfcSectionTypeEnum::IfcSectionTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4x2::IfcSectionTypeEnum::IfcSectionTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcSectionTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x2::IfcSectionTypeEnum::IfcSectionTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcSectionTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -7894,12 +8220,14 @@ Ifc4x2::IfcSensorTypeEnum::IfcSensorTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4x2::IfcSensorTypeEnum::IfcSensorTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcSensorTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x2::IfcSensorTypeEnum::IfcSensorTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcSensorTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -7953,12 +8281,14 @@ Ifc4x2::IfcSequenceEnum::IfcSequenceEnum(IfcEntityInstanceData* e) {
}
Ifc4x2::IfcSequenceEnum::IfcSequenceEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcSequenceEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x2::IfcSequenceEnum::IfcSequenceEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcSequenceEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -7992,12 +8322,14 @@ Ifc4x2::IfcShadingDeviceTypeEnum::IfcShadingDeviceTypeEnum(IfcEntityInstanceData
}
Ifc4x2::IfcShadingDeviceTypeEnum::IfcShadingDeviceTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcShadingDeviceTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x2::IfcShadingDeviceTypeEnum::IfcShadingDeviceTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcShadingDeviceTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -8030,12 +8362,14 @@ Ifc4x2::IfcSimplePropertyTemplateTypeEnum::IfcSimplePropertyTemplateTypeEnum(Ifc
}
Ifc4x2::IfcSimplePropertyTemplateTypeEnum::IfcSimplePropertyTemplateTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcSimplePropertyTemplateTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x2::IfcSimplePropertyTemplateTypeEnum::IfcSimplePropertyTemplateTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcSimplePropertyTemplateTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -8075,12 +8409,14 @@ Ifc4x2::IfcSlabTypeEnum::IfcSlabTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4x2::IfcSlabTypeEnum::IfcSlabTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcSlabTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x2::IfcSlabTypeEnum::IfcSlabTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcSlabTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -8118,12 +8454,14 @@ Ifc4x2::IfcSolarDeviceTypeEnum::IfcSolarDeviceTypeEnum(IfcEntityInstanceData* e)
}
Ifc4x2::IfcSolarDeviceTypeEnum::IfcSolarDeviceTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcSolarDeviceTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x2::IfcSolarDeviceTypeEnum::IfcSolarDeviceTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcSolarDeviceTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -8155,12 +8493,14 @@ Ifc4x2::IfcSpaceHeaterTypeEnum::IfcSpaceHeaterTypeEnum(IfcEntityInstanceData* e)
}
Ifc4x2::IfcSpaceHeaterTypeEnum::IfcSpaceHeaterTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcSpaceHeaterTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x2::IfcSpaceHeaterTypeEnum::IfcSpaceHeaterTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcSpaceHeaterTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -8192,12 +8532,14 @@ Ifc4x2::IfcSpaceTypeEnum::IfcSpaceTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4x2::IfcSpaceTypeEnum::IfcSpaceTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcSpaceTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x2::IfcSpaceTypeEnum::IfcSpaceTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcSpaceTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -8232,12 +8574,14 @@ Ifc4x2::IfcSpatialZoneTypeEnum::IfcSpatialZoneTypeEnum(IfcEntityInstanceData* e)
}
Ifc4x2::IfcSpatialZoneTypeEnum::IfcSpatialZoneTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcSpatialZoneTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x2::IfcSpatialZoneTypeEnum::IfcSpatialZoneTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcSpatialZoneTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -8275,12 +8619,14 @@ Ifc4x2::IfcStackTerminalTypeEnum::IfcStackTerminalTypeEnum(IfcEntityInstanceData
}
Ifc4x2::IfcStackTerminalTypeEnum::IfcStackTerminalTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcStackTerminalTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x2::IfcStackTerminalTypeEnum::IfcStackTerminalTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcStackTerminalTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -8313,12 +8659,14 @@ Ifc4x2::IfcStairFlightTypeEnum::IfcStairFlightTypeEnum(IfcEntityInstanceData* e)
}
Ifc4x2::IfcStairFlightTypeEnum::IfcStairFlightTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcStairFlightTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x2::IfcStairFlightTypeEnum::IfcStairFlightTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcStairFlightTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -8353,12 +8701,14 @@ Ifc4x2::IfcStairTypeEnum::IfcStairTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4x2::IfcStairTypeEnum::IfcStairTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcStairTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x2::IfcStairTypeEnum::IfcStairTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcStairTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -8402,12 +8752,14 @@ Ifc4x2::IfcStateEnum::IfcStateEnum(IfcEntityInstanceData* e) {
}
Ifc4x2::IfcStateEnum::IfcStateEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcStateEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x2::IfcStateEnum::IfcStateEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcStateEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -8440,12 +8792,14 @@ Ifc4x2::IfcStructuralCurveActivityTypeEnum::IfcStructuralCurveActivityTypeEnum(I
}
Ifc4x2::IfcStructuralCurveActivityTypeEnum::IfcStructuralCurveActivityTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcStructuralCurveActivityTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x2::IfcStructuralCurveActivityTypeEnum::IfcStructuralCurveActivityTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcStructuralCurveActivityTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -8482,12 +8836,14 @@ Ifc4x2::IfcStructuralCurveMemberTypeEnum::IfcStructuralCurveMemberTypeEnum(IfcEn
}
Ifc4x2::IfcStructuralCurveMemberTypeEnum::IfcStructuralCurveMemberTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcStructuralCurveMemberTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x2::IfcStructuralCurveMemberTypeEnum::IfcStructuralCurveMemberTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcStructuralCurveMemberTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -8522,12 +8878,14 @@ Ifc4x2::IfcStructuralSurfaceActivityTypeEnum::IfcStructuralSurfaceActivityTypeEn
}
Ifc4x2::IfcStructuralSurfaceActivityTypeEnum::IfcStructuralSurfaceActivityTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcStructuralSurfaceActivityTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x2::IfcStructuralSurfaceActivityTypeEnum::IfcStructuralSurfaceActivityTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcStructuralSurfaceActivityTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -8561,12 +8919,14 @@ Ifc4x2::IfcStructuralSurfaceMemberTypeEnum::IfcStructuralSurfaceMemberTypeEnum(I
}
Ifc4x2::IfcStructuralSurfaceMemberTypeEnum::IfcStructuralSurfaceMemberTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcStructuralSurfaceMemberTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x2::IfcStructuralSurfaceMemberTypeEnum::IfcStructuralSurfaceMemberTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcStructuralSurfaceMemberTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -8599,12 +8959,14 @@ Ifc4x2::IfcSubContractResourceTypeEnum::IfcSubContractResourceTypeEnum(IfcEntity
}
Ifc4x2::IfcSubContractResourceTypeEnum::IfcSubContractResourceTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcSubContractResourceTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x2::IfcSubContractResourceTypeEnum::IfcSubContractResourceTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcSubContractResourceTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -8636,12 +8998,14 @@ Ifc4x2::IfcSurfaceFeatureTypeEnum::IfcSurfaceFeatureTypeEnum(IfcEntityInstanceDa
}
Ifc4x2::IfcSurfaceFeatureTypeEnum::IfcSurfaceFeatureTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcSurfaceFeatureTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x2::IfcSurfaceFeatureTypeEnum::IfcSurfaceFeatureTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcSurfaceFeatureTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -8675,12 +9039,14 @@ Ifc4x2::IfcSurfaceSide::IfcSurfaceSide(IfcEntityInstanceData* e) {
}
Ifc4x2::IfcSurfaceSide::IfcSurfaceSide(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcSurfaceSide_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x2::IfcSurfaceSide::IfcSurfaceSide(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcSurfaceSide_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -8711,12 +9077,14 @@ Ifc4x2::IfcSwitchingDeviceTypeEnum::IfcSwitchingDeviceTypeEnum(IfcEntityInstance
}
Ifc4x2::IfcSwitchingDeviceTypeEnum::IfcSwitchingDeviceTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcSwitchingDeviceTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x2::IfcSwitchingDeviceTypeEnum::IfcSwitchingDeviceTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcSwitchingDeviceTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -8755,12 +9123,14 @@ Ifc4x2::IfcSystemFurnitureElementTypeEnum::IfcSystemFurnitureElementTypeEnum(Ifc
}
Ifc4x2::IfcSystemFurnitureElementTypeEnum::IfcSystemFurnitureElementTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcSystemFurnitureElementTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x2::IfcSystemFurnitureElementTypeEnum::IfcSystemFurnitureElementTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcSystemFurnitureElementTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -8792,12 +9162,14 @@ Ifc4x2::IfcTankTypeEnum::IfcTankTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4x2::IfcTankTypeEnum::IfcTankTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcTankTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x2::IfcTankTypeEnum::IfcTankTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcTankTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -8834,12 +9206,14 @@ Ifc4x2::IfcTaskDurationEnum::IfcTaskDurationEnum(IfcEntityInstanceData* e) {
}
Ifc4x2::IfcTaskDurationEnum::IfcTaskDurationEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcTaskDurationEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x2::IfcTaskDurationEnum::IfcTaskDurationEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcTaskDurationEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -8870,12 +9244,14 @@ Ifc4x2::IfcTaskTypeEnum::IfcTaskTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4x2::IfcTaskTypeEnum::IfcTaskTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcTaskTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x2::IfcTaskTypeEnum::IfcTaskTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcTaskTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -8917,12 +9293,14 @@ Ifc4x2::IfcTendonAnchorTypeEnum::IfcTendonAnchorTypeEnum(IfcEntityInstanceData*
}
Ifc4x2::IfcTendonAnchorTypeEnum::IfcTendonAnchorTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcTendonAnchorTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x2::IfcTendonAnchorTypeEnum::IfcTendonAnchorTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcTendonAnchorTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -8955,12 +9333,14 @@ Ifc4x2::IfcTendonConduitTypeEnum::IfcTendonConduitTypeEnum(IfcEntityInstanceData
}
Ifc4x2::IfcTendonConduitTypeEnum::IfcTendonConduitTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcTendonConduitTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x2::IfcTendonConduitTypeEnum::IfcTendonConduitTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcTendonConduitTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -8995,12 +9375,14 @@ Ifc4x2::IfcTendonTypeEnum::IfcTendonTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4x2::IfcTendonTypeEnum::IfcTendonTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcTendonTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x2::IfcTendonTypeEnum::IfcTendonTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcTendonTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -9034,12 +9416,14 @@ Ifc4x2::IfcTextPath::IfcTextPath(IfcEntityInstanceData* e) {
}
Ifc4x2::IfcTextPath::IfcTextPath(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcTextPath_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x2::IfcTextPath::IfcTextPath(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcTextPath_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -9071,12 +9455,14 @@ Ifc4x2::IfcTimeSeriesDataTypeEnum::IfcTimeSeriesDataTypeEnum(IfcEntityInstanceDa
}
Ifc4x2::IfcTimeSeriesDataTypeEnum::IfcTimeSeriesDataTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcTimeSeriesDataTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x2::IfcTimeSeriesDataTypeEnum::IfcTimeSeriesDataTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcTimeSeriesDataTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -9111,12 +9497,14 @@ Ifc4x2::IfcTransformerTypeEnum::IfcTransformerTypeEnum(IfcEntityInstanceData* e)
}
Ifc4x2::IfcTransformerTypeEnum::IfcTransformerTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcTransformerTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x2::IfcTransformerTypeEnum::IfcTransformerTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcTransformerTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -9151,12 +9539,14 @@ Ifc4x2::IfcTransitionCode::IfcTransitionCode(IfcEntityInstanceData* e) {
}
Ifc4x2::IfcTransitionCode::IfcTransitionCode(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcTransitionCode_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x2::IfcTransitionCode::IfcTransitionCode(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcTransitionCode_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -9188,12 +9578,14 @@ Ifc4x2::IfcTransitionCurveType::IfcTransitionCurveType(IfcEntityInstanceData* e)
}
Ifc4x2::IfcTransitionCurveType::IfcTransitionCurveType(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcTransitionCurveType_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x2::IfcTransitionCurveType::IfcTransitionCurveType(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcTransitionCurveType_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -9227,12 +9619,14 @@ Ifc4x2::IfcTransportElementTypeEnum::IfcTransportElementTypeEnum(IfcEntityInstan
}
Ifc4x2::IfcTransportElementTypeEnum::IfcTransportElementTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcTransportElementTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x2::IfcTransportElementTypeEnum::IfcTransportElementTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcTransportElementTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -9267,12 +9661,14 @@ Ifc4x2::IfcTrimmingPreference::IfcTrimmingPreference(IfcEntityInstanceData* e) {
}
Ifc4x2::IfcTrimmingPreference::IfcTrimmingPreference(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcTrimmingPreference_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x2::IfcTrimmingPreference::IfcTrimmingPreference(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcTrimmingPreference_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -9303,12 +9699,14 @@ Ifc4x2::IfcTubeBundleTypeEnum::IfcTubeBundleTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4x2::IfcTubeBundleTypeEnum::IfcTubeBundleTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcTubeBundleTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x2::IfcTubeBundleTypeEnum::IfcTubeBundleTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcTubeBundleTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -9339,12 +9737,14 @@ Ifc4x2::IfcUnitEnum::IfcUnitEnum(IfcEntityInstanceData* e) {
}
Ifc4x2::IfcUnitEnum::IfcUnitEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcUnitEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x2::IfcUnitEnum::IfcUnitEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcUnitEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -9402,12 +9802,14 @@ Ifc4x2::IfcUnitaryControlElementTypeEnum::IfcUnitaryControlElementTypeEnum(IfcEn
}
Ifc4x2::IfcUnitaryControlElementTypeEnum::IfcUnitaryControlElementTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcUnitaryControlElementTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x2::IfcUnitaryControlElementTypeEnum::IfcUnitaryControlElementTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcUnitaryControlElementTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -9445,12 +9847,14 @@ Ifc4x2::IfcUnitaryEquipmentTypeEnum::IfcUnitaryEquipmentTypeEnum(IfcEntityInstan
}
Ifc4x2::IfcUnitaryEquipmentTypeEnum::IfcUnitaryEquipmentTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcUnitaryEquipmentTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x2::IfcUnitaryEquipmentTypeEnum::IfcUnitaryEquipmentTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcUnitaryEquipmentTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -9485,12 +9889,14 @@ Ifc4x2::IfcValveTypeEnum::IfcValveTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4x2::IfcValveTypeEnum::IfcValveTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcValveTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x2::IfcValveTypeEnum::IfcValveTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcValveTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -9541,12 +9947,14 @@ Ifc4x2::IfcVibrationDamperTypeEnum::IfcVibrationDamperTypeEnum(IfcEntityInstance
}
Ifc4x2::IfcVibrationDamperTypeEnum::IfcVibrationDamperTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcVibrationDamperTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x2::IfcVibrationDamperTypeEnum::IfcVibrationDamperTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcVibrationDamperTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -9582,12 +9990,14 @@ Ifc4x2::IfcVibrationIsolatorTypeEnum::IfcVibrationIsolatorTypeEnum(IfcEntityInst
}
Ifc4x2::IfcVibrationIsolatorTypeEnum::IfcVibrationIsolatorTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcVibrationIsolatorTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x2::IfcVibrationIsolatorTypeEnum::IfcVibrationIsolatorTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcVibrationIsolatorTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -9620,12 +10030,14 @@ Ifc4x2::IfcVoidingFeatureTypeEnum::IfcVoidingFeatureTypeEnum(IfcEntityInstanceDa
}
Ifc4x2::IfcVoidingFeatureTypeEnum::IfcVoidingFeatureTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcVoidingFeatureTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x2::IfcVoidingFeatureTypeEnum::IfcVoidingFeatureTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcVoidingFeatureTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -9661,12 +10073,14 @@ Ifc4x2::IfcWallTypeEnum::IfcWallTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4x2::IfcWallTypeEnum::IfcWallTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcWallTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x2::IfcWallTypeEnum::IfcWallTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcWallTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -9706,12 +10120,14 @@ Ifc4x2::IfcWasteTerminalTypeEnum::IfcWasteTerminalTypeEnum(IfcEntityInstanceData
}
Ifc4x2::IfcWasteTerminalTypeEnum::IfcWasteTerminalTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcWasteTerminalTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x2::IfcWasteTerminalTypeEnum::IfcWasteTerminalTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcWasteTerminalTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -9748,12 +10164,14 @@ Ifc4x2::IfcWindowPanelOperationEnum::IfcWindowPanelOperationEnum(IfcEntityInstan
}
Ifc4x2::IfcWindowPanelOperationEnum::IfcWindowPanelOperationEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcWindowPanelOperationEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x2::IfcWindowPanelOperationEnum::IfcWindowPanelOperationEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcWindowPanelOperationEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -9795,12 +10213,14 @@ Ifc4x2::IfcWindowPanelPositionEnum::IfcWindowPanelPositionEnum(IfcEntityInstance
}
Ifc4x2::IfcWindowPanelPositionEnum::IfcWindowPanelPositionEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcWindowPanelPositionEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x2::IfcWindowPanelPositionEnum::IfcWindowPanelPositionEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcWindowPanelPositionEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -9834,12 +10254,14 @@ Ifc4x2::IfcWindowStyleConstructionEnum::IfcWindowStyleConstructionEnum(IfcEntity
}
Ifc4x2::IfcWindowStyleConstructionEnum::IfcWindowStyleConstructionEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcWindowStyleConstructionEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x2::IfcWindowStyleConstructionEnum::IfcWindowStyleConstructionEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcWindowStyleConstructionEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -9875,12 +10297,14 @@ Ifc4x2::IfcWindowStyleOperationEnum::IfcWindowStyleOperationEnum(IfcEntityInstan
}
Ifc4x2::IfcWindowStyleOperationEnum::IfcWindowStyleOperationEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcWindowStyleOperationEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x2::IfcWindowStyleOperationEnum::IfcWindowStyleOperationEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcWindowStyleOperationEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -9919,12 +10343,14 @@ Ifc4x2::IfcWindowTypeEnum::IfcWindowTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4x2::IfcWindowTypeEnum::IfcWindowTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcWindowTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x2::IfcWindowTypeEnum::IfcWindowTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcWindowTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -9957,12 +10383,14 @@ Ifc4x2::IfcWindowTypePartitioningEnum::IfcWindowTypePartitioningEnum(IfcEntityIn
}
Ifc4x2::IfcWindowTypePartitioningEnum::IfcWindowTypePartitioningEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcWindowTypePartitioningEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x2::IfcWindowTypePartitioningEnum::IfcWindowTypePartitioningEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcWindowTypePartitioningEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -10001,12 +10429,14 @@ Ifc4x2::IfcWorkCalendarTypeEnum::IfcWorkCalendarTypeEnum(IfcEntityInstanceData*
}
Ifc4x2::IfcWorkCalendarTypeEnum::IfcWorkCalendarTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcWorkCalendarTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x2::IfcWorkCalendarTypeEnum::IfcWorkCalendarTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcWorkCalendarTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -10039,12 +10469,14 @@ Ifc4x2::IfcWorkPlanTypeEnum::IfcWorkPlanTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4x2::IfcWorkPlanTypeEnum::IfcWorkPlanTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcWorkPlanTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x2::IfcWorkPlanTypeEnum::IfcWorkPlanTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcWorkPlanTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -10077,12 +10509,14 @@ Ifc4x2::IfcWorkScheduleTypeEnum::IfcWorkScheduleTypeEnum(IfcEntityInstanceData*
}
Ifc4x2::IfcWorkScheduleTypeEnum::IfcWorkScheduleTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcWorkScheduleTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x2::IfcWorkScheduleTypeEnum::IfcWorkScheduleTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X2_IfcWorkScheduleTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
diff --git a/src/ifcparse/Ifc4x3_rc1.cpp b/src/ifcparse/Ifc4x3_rc1.cpp
index 65cf8550d7..620a3aa24c 100644
--- a/src/ifcparse/Ifc4x3_rc1.cpp
+++ b/src/ifcparse/Ifc4x3_rc1.cpp
@@ -1298,12 +1298,14 @@ Ifc4x3_rc1::IfcActionRequestTypeEnum::IfcActionRequestTypeEnum(IfcEntityInstance
}
Ifc4x3_rc1::IfcActionRequestTypeEnum::IfcActionRequestTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcActionRequestTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc1::IfcActionRequestTypeEnum::IfcActionRequestTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcActionRequestTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -1338,12 +1340,14 @@ Ifc4x3_rc1::IfcActionSourceTypeEnum::IfcActionSourceTypeEnum(IfcEntityInstanceDa
}
Ifc4x3_rc1::IfcActionSourceTypeEnum::IfcActionSourceTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcActionSourceTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc1::IfcActionSourceTypeEnum::IfcActionSourceTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcActionSourceTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -1398,12 +1402,14 @@ Ifc4x3_rc1::IfcActionTypeEnum::IfcActionTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4x3_rc1::IfcActionTypeEnum::IfcActionTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcActionTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc1::IfcActionTypeEnum::IfcActionTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcActionTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -1436,12 +1442,14 @@ Ifc4x3_rc1::IfcActuatorTypeEnum::IfcActuatorTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4x3_rc1::IfcActuatorTypeEnum::IfcActuatorTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcActuatorTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc1::IfcActuatorTypeEnum::IfcActuatorTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcActuatorTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -1476,12 +1484,14 @@ Ifc4x3_rc1::IfcAddressTypeEnum::IfcAddressTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4x3_rc1::IfcAddressTypeEnum::IfcAddressTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcAddressTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc1::IfcAddressTypeEnum::IfcAddressTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcAddressTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -1514,12 +1524,14 @@ Ifc4x3_rc1::IfcAirTerminalBoxTypeEnum::IfcAirTerminalBoxTypeEnum(IfcEntityInstan
}
Ifc4x3_rc1::IfcAirTerminalBoxTypeEnum::IfcAirTerminalBoxTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcAirTerminalBoxTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc1::IfcAirTerminalBoxTypeEnum::IfcAirTerminalBoxTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcAirTerminalBoxTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -1552,12 +1564,14 @@ Ifc4x3_rc1::IfcAirTerminalTypeEnum::IfcAirTerminalTypeEnum(IfcEntityInstanceData
}
Ifc4x3_rc1::IfcAirTerminalTypeEnum::IfcAirTerminalTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcAirTerminalTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc1::IfcAirTerminalTypeEnum::IfcAirTerminalTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcAirTerminalTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -1591,12 +1605,14 @@ Ifc4x3_rc1::IfcAirToAirHeatRecoveryTypeEnum::IfcAirToAirHeatRecoveryTypeEnum(Ifc
}
Ifc4x3_rc1::IfcAirToAirHeatRecoveryTypeEnum::IfcAirToAirHeatRecoveryTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcAirToAirHeatRecoveryTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc1::IfcAirToAirHeatRecoveryTypeEnum::IfcAirToAirHeatRecoveryTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcAirToAirHeatRecoveryTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -1635,12 +1651,14 @@ Ifc4x3_rc1::IfcAlarmTypeEnum::IfcAlarmTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4x3_rc1::IfcAlarmTypeEnum::IfcAlarmTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcAlarmTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc1::IfcAlarmTypeEnum::IfcAlarmTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcAlarmTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -1678,12 +1696,14 @@ Ifc4x3_rc1::IfcAlignmentTypeEnum::IfcAlignmentTypeEnum(IfcEntityInstanceData* e)
}
Ifc4x3_rc1::IfcAlignmentTypeEnum::IfcAlignmentTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcAlignmentTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc1::IfcAlignmentTypeEnum::IfcAlignmentTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcAlignmentTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -1713,12 +1733,14 @@ Ifc4x3_rc1::IfcAnalysisModelTypeEnum::IfcAnalysisModelTypeEnum(IfcEntityInstance
}
Ifc4x3_rc1::IfcAnalysisModelTypeEnum::IfcAnalysisModelTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcAnalysisModelTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc1::IfcAnalysisModelTypeEnum::IfcAnalysisModelTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcAnalysisModelTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -1751,12 +1773,14 @@ Ifc4x3_rc1::IfcAnalysisTheoryTypeEnum::IfcAnalysisTheoryTypeEnum(IfcEntityInstan
}
Ifc4x3_rc1::IfcAnalysisTheoryTypeEnum::IfcAnalysisTheoryTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcAnalysisTheoryTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc1::IfcAnalysisTheoryTypeEnum::IfcAnalysisTheoryTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcAnalysisTheoryTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -1790,12 +1814,14 @@ Ifc4x3_rc1::IfcAnnotationTypeEnum::IfcAnnotationTypeEnum(IfcEntityInstanceData*
}
Ifc4x3_rc1::IfcAnnotationTypeEnum::IfcAnnotationTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcAnnotationTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc1::IfcAnnotationTypeEnum::IfcAnnotationTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcAnnotationTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -1834,12 +1860,14 @@ Ifc4x3_rc1::IfcArithmeticOperatorEnum::IfcArithmeticOperatorEnum(IfcEntityInstan
}
Ifc4x3_rc1::IfcArithmeticOperatorEnum::IfcArithmeticOperatorEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcArithmeticOperatorEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc1::IfcArithmeticOperatorEnum::IfcArithmeticOperatorEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcArithmeticOperatorEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -1871,12 +1899,14 @@ Ifc4x3_rc1::IfcAssemblyPlaceEnum::IfcAssemblyPlaceEnum(IfcEntityInstanceData* e)
}
Ifc4x3_rc1::IfcAssemblyPlaceEnum::IfcAssemblyPlaceEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcAssemblyPlaceEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc1::IfcAssemblyPlaceEnum::IfcAssemblyPlaceEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcAssemblyPlaceEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -1907,12 +1937,14 @@ Ifc4x3_rc1::IfcAudioVisualApplianceTypeEnum::IfcAudioVisualApplianceTypeEnum(Ifc
}
Ifc4x3_rc1::IfcAudioVisualApplianceTypeEnum::IfcAudioVisualApplianceTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcAudioVisualApplianceTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc1::IfcAudioVisualApplianceTypeEnum::IfcAudioVisualApplianceTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcAudioVisualApplianceTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -1954,12 +1986,14 @@ Ifc4x3_rc1::IfcBSplineCurveForm::IfcBSplineCurveForm(IfcEntityInstanceData* e) {
}
Ifc4x3_rc1::IfcBSplineCurveForm::IfcBSplineCurveForm(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcBSplineCurveForm_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc1::IfcBSplineCurveForm::IfcBSplineCurveForm(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcBSplineCurveForm_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -1993,12 +2027,14 @@ Ifc4x3_rc1::IfcBSplineSurfaceForm::IfcBSplineSurfaceForm(IfcEntityInstanceData*
}
Ifc4x3_rc1::IfcBSplineSurfaceForm::IfcBSplineSurfaceForm(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcBSplineSurfaceForm_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc1::IfcBSplineSurfaceForm::IfcBSplineSurfaceForm(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcBSplineSurfaceForm_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -2037,12 +2073,14 @@ Ifc4x3_rc1::IfcBeamTypeEnum::IfcBeamTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4x3_rc1::IfcBeamTypeEnum::IfcBeamTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcBeamTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc1::IfcBeamTypeEnum::IfcBeamTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcBeamTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -2084,12 +2122,14 @@ Ifc4x3_rc1::IfcBearingTypeDisplacementEnum::IfcBearingTypeDisplacementEnum(IfcEn
}
Ifc4x3_rc1::IfcBearingTypeDisplacementEnum::IfcBearingTypeDisplacementEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcBearingTypeDisplacementEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc1::IfcBearingTypeDisplacementEnum::IfcBearingTypeDisplacementEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcBearingTypeDisplacementEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -2122,12 +2162,14 @@ Ifc4x3_rc1::IfcBearingTypeEnum::IfcBearingTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4x3_rc1::IfcBearingTypeEnum::IfcBearingTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcBearingTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc1::IfcBearingTypeEnum::IfcBearingTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcBearingTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -2165,12 +2207,14 @@ Ifc4x3_rc1::IfcBenchmarkEnum::IfcBenchmarkEnum(IfcEntityInstanceData* e) {
}
Ifc4x3_rc1::IfcBenchmarkEnum::IfcBenchmarkEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcBenchmarkEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc1::IfcBenchmarkEnum::IfcBenchmarkEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcBenchmarkEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -2208,12 +2252,14 @@ Ifc4x3_rc1::IfcBoilerTypeEnum::IfcBoilerTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4x3_rc1::IfcBoilerTypeEnum::IfcBoilerTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcBoilerTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc1::IfcBoilerTypeEnum::IfcBoilerTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcBoilerTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -2245,12 +2291,14 @@ Ifc4x3_rc1::IfcBooleanOperator::IfcBooleanOperator(IfcEntityInstanceData* e) {
}
Ifc4x3_rc1::IfcBooleanOperator::IfcBooleanOperator(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcBooleanOperator_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc1::IfcBooleanOperator::IfcBooleanOperator(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcBooleanOperator_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -2281,12 +2329,14 @@ Ifc4x3_rc1::IfcBridgePartTypeEnum::IfcBridgePartTypeEnum(IfcEntityInstanceData*
}
Ifc4x3_rc1::IfcBridgePartTypeEnum::IfcBridgePartTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcBridgePartTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc1::IfcBridgePartTypeEnum::IfcBridgePartTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcBridgePartTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -2326,12 +2376,14 @@ Ifc4x3_rc1::IfcBridgeTypeEnum::IfcBridgeTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4x3_rc1::IfcBridgeTypeEnum::IfcBridgeTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcBridgeTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc1::IfcBridgeTypeEnum::IfcBridgeTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcBridgeTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -2369,12 +2421,14 @@ Ifc4x3_rc1::IfcBuildingElementPartTypeEnum::IfcBuildingElementPartTypeEnum(IfcEn
}
Ifc4x3_rc1::IfcBuildingElementPartTypeEnum::IfcBuildingElementPartTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcBuildingElementPartTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc1::IfcBuildingElementPartTypeEnum::IfcBuildingElementPartTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcBuildingElementPartTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -2409,12 +2463,14 @@ Ifc4x3_rc1::IfcBuildingElementProxyTypeEnum::IfcBuildingElementProxyTypeEnum(Ifc
}
Ifc4x3_rc1::IfcBuildingElementProxyTypeEnum::IfcBuildingElementProxyTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcBuildingElementProxyTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc1::IfcBuildingElementProxyTypeEnum::IfcBuildingElementProxyTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcBuildingElementProxyTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -2449,12 +2505,14 @@ Ifc4x3_rc1::IfcBuildingSystemTypeEnum::IfcBuildingSystemTypeEnum(IfcEntityInstan
}
Ifc4x3_rc1::IfcBuildingSystemTypeEnum::IfcBuildingSystemTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcBuildingSystemTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc1::IfcBuildingSystemTypeEnum::IfcBuildingSystemTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcBuildingSystemTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -2493,12 +2551,14 @@ Ifc4x3_rc1::IfcBuiltSystemTypeEnum::IfcBuiltSystemTypeEnum(IfcEntityInstanceData
}
Ifc4x3_rc1::IfcBuiltSystemTypeEnum::IfcBuiltSystemTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcBuiltSystemTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc1::IfcBuiltSystemTypeEnum::IfcBuiltSystemTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcBuiltSystemTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -2540,12 +2600,14 @@ Ifc4x3_rc1::IfcBurnerTypeEnum::IfcBurnerTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4x3_rc1::IfcBurnerTypeEnum::IfcBurnerTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcBurnerTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc1::IfcBurnerTypeEnum::IfcBurnerTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcBurnerTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -2575,12 +2637,14 @@ Ifc4x3_rc1::IfcCableCarrierFittingTypeEnum::IfcCableCarrierFittingTypeEnum(IfcEn
}
Ifc4x3_rc1::IfcCableCarrierFittingTypeEnum::IfcCableCarrierFittingTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcCableCarrierFittingTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc1::IfcCableCarrierFittingTypeEnum::IfcCableCarrierFittingTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcCableCarrierFittingTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -2614,12 +2678,14 @@ Ifc4x3_rc1::IfcCableCarrierSegmentTypeEnum::IfcCableCarrierSegmentTypeEnum(IfcEn
}
Ifc4x3_rc1::IfcCableCarrierSegmentTypeEnum::IfcCableCarrierSegmentTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcCableCarrierSegmentTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc1::IfcCableCarrierSegmentTypeEnum::IfcCableCarrierSegmentTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcCableCarrierSegmentTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -2656,12 +2722,14 @@ Ifc4x3_rc1::IfcCableFittingTypeEnum::IfcCableFittingTypeEnum(IfcEntityInstanceDa
}
Ifc4x3_rc1::IfcCableFittingTypeEnum::IfcCableFittingTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcCableFittingTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc1::IfcCableFittingTypeEnum::IfcCableFittingTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcCableFittingTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -2697,12 +2765,14 @@ Ifc4x3_rc1::IfcCableSegmentTypeEnum::IfcCableSegmentTypeEnum(IfcEntityInstanceDa
}
Ifc4x3_rc1::IfcCableSegmentTypeEnum::IfcCableSegmentTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcCableSegmentTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc1::IfcCableSegmentTypeEnum::IfcCableSegmentTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcCableSegmentTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -2742,12 +2812,14 @@ Ifc4x3_rc1::IfcCaissonFoundationTypeEnum::IfcCaissonFoundationTypeEnum(IfcEntity
}
Ifc4x3_rc1::IfcCaissonFoundationTypeEnum::IfcCaissonFoundationTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcCaissonFoundationTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc1::IfcCaissonFoundationTypeEnum::IfcCaissonFoundationTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcCaissonFoundationTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -2779,12 +2851,14 @@ Ifc4x3_rc1::IfcChangeActionEnum::IfcChangeActionEnum(IfcEntityInstanceData* e) {
}
Ifc4x3_rc1::IfcChangeActionEnum::IfcChangeActionEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcChangeActionEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc1::IfcChangeActionEnum::IfcChangeActionEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcChangeActionEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -2817,12 +2891,14 @@ Ifc4x3_rc1::IfcChillerTypeEnum::IfcChillerTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4x3_rc1::IfcChillerTypeEnum::IfcChillerTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcChillerTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc1::IfcChillerTypeEnum::IfcChillerTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcChillerTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -2855,12 +2931,14 @@ Ifc4x3_rc1::IfcChimneyTypeEnum::IfcChimneyTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4x3_rc1::IfcChimneyTypeEnum::IfcChimneyTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcChimneyTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc1::IfcChimneyTypeEnum::IfcChimneyTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcChimneyTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -2890,12 +2968,14 @@ Ifc4x3_rc1::IfcCoilTypeEnum::IfcCoilTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4x3_rc1::IfcCoilTypeEnum::IfcCoilTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcCoilTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc1::IfcCoilTypeEnum::IfcCoilTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcCoilTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -2932,12 +3012,14 @@ Ifc4x3_rc1::IfcColumnTypeEnum::IfcColumnTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4x3_rc1::IfcColumnTypeEnum::IfcColumnTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcColumnTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc1::IfcColumnTypeEnum::IfcColumnTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcColumnTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -2972,12 +3054,14 @@ Ifc4x3_rc1::IfcCommunicationsApplianceTypeEnum::IfcCommunicationsApplianceTypeEn
}
Ifc4x3_rc1::IfcCommunicationsApplianceTypeEnum::IfcCommunicationsApplianceTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcCommunicationsApplianceTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc1::IfcCommunicationsApplianceTypeEnum::IfcCommunicationsApplianceTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcCommunicationsApplianceTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -3028,12 +3112,14 @@ Ifc4x3_rc1::IfcComplexPropertyTemplateTypeEnum::IfcComplexPropertyTemplateTypeEn
}
Ifc4x3_rc1::IfcComplexPropertyTemplateTypeEnum::IfcComplexPropertyTemplateTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcComplexPropertyTemplateTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc1::IfcComplexPropertyTemplateTypeEnum::IfcComplexPropertyTemplateTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcComplexPropertyTemplateTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -3063,12 +3149,14 @@ Ifc4x3_rc1::IfcCompressorTypeEnum::IfcCompressorTypeEnum(IfcEntityInstanceData*
}
Ifc4x3_rc1::IfcCompressorTypeEnum::IfcCompressorTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcCompressorTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc1::IfcCompressorTypeEnum::IfcCompressorTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcCompressorTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -3113,12 +3201,14 @@ Ifc4x3_rc1::IfcCondenserTypeEnum::IfcCondenserTypeEnum(IfcEntityInstanceData* e)
}
Ifc4x3_rc1::IfcCondenserTypeEnum::IfcCondenserTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcCondenserTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc1::IfcCondenserTypeEnum::IfcCondenserTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcCondenserTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -3155,12 +3245,14 @@ Ifc4x3_rc1::IfcConnectionTypeEnum::IfcConnectionTypeEnum(IfcEntityInstanceData*
}
Ifc4x3_rc1::IfcConnectionTypeEnum::IfcConnectionTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcConnectionTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc1::IfcConnectionTypeEnum::IfcConnectionTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcConnectionTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -3192,12 +3284,14 @@ Ifc4x3_rc1::IfcConstraintEnum::IfcConstraintEnum(IfcEntityInstanceData* e) {
}
Ifc4x3_rc1::IfcConstraintEnum::IfcConstraintEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcConstraintEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc1::IfcConstraintEnum::IfcConstraintEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcConstraintEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -3230,12 +3324,14 @@ Ifc4x3_rc1::IfcConstructionEquipmentResourceTypeEnum::IfcConstructionEquipmentRe
}
Ifc4x3_rc1::IfcConstructionEquipmentResourceTypeEnum::IfcConstructionEquipmentResourceTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcConstructionEquipmentResourceTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc1::IfcConstructionEquipmentResourceTypeEnum::IfcConstructionEquipmentResourceTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcConstructionEquipmentResourceTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -3273,12 +3369,14 @@ Ifc4x3_rc1::IfcConstructionMaterialResourceTypeEnum::IfcConstructionMaterialReso
}
Ifc4x3_rc1::IfcConstructionMaterialResourceTypeEnum::IfcConstructionMaterialResourceTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcConstructionMaterialResourceTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc1::IfcConstructionMaterialResourceTypeEnum::IfcConstructionMaterialResourceTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcConstructionMaterialResourceTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -3317,12 +3415,14 @@ Ifc4x3_rc1::IfcConstructionProductResourceTypeEnum::IfcConstructionProductResour
}
Ifc4x3_rc1::IfcConstructionProductResourceTypeEnum::IfcConstructionProductResourceTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcConstructionProductResourceTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc1::IfcConstructionProductResourceTypeEnum::IfcConstructionProductResourceTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcConstructionProductResourceTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -3354,12 +3454,14 @@ Ifc4x3_rc1::IfcControllerTypeEnum::IfcControllerTypeEnum(IfcEntityInstanceData*
}
Ifc4x3_rc1::IfcControllerTypeEnum::IfcControllerTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcControllerTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc1::IfcControllerTypeEnum::IfcControllerTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcControllerTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -3394,12 +3496,14 @@ Ifc4x3_rc1::IfcConveyorSegmentTypeEnum::IfcConveyorSegmentTypeEnum(IfcEntityInst
}
Ifc4x3_rc1::IfcConveyorSegmentTypeEnum::IfcConveyorSegmentTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcConveyorSegmentTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc1::IfcConveyorSegmentTypeEnum::IfcConveyorSegmentTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcConveyorSegmentTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -3433,12 +3537,14 @@ Ifc4x3_rc1::IfcCooledBeamTypeEnum::IfcCooledBeamTypeEnum(IfcEntityInstanceData*
}
Ifc4x3_rc1::IfcCooledBeamTypeEnum::IfcCooledBeamTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcCooledBeamTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc1::IfcCooledBeamTypeEnum::IfcCooledBeamTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcCooledBeamTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -3470,12 +3576,14 @@ Ifc4x3_rc1::IfcCoolingTowerTypeEnum::IfcCoolingTowerTypeEnum(IfcEntityInstanceDa
}
Ifc4x3_rc1::IfcCoolingTowerTypeEnum::IfcCoolingTowerTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcCoolingTowerTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc1::IfcCoolingTowerTypeEnum::IfcCoolingTowerTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcCoolingTowerTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -3508,12 +3616,14 @@ Ifc4x3_rc1::IfcCostItemTypeEnum::IfcCostItemTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4x3_rc1::IfcCostItemTypeEnum::IfcCostItemTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcCostItemTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc1::IfcCostItemTypeEnum::IfcCostItemTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcCostItemTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -3543,12 +3653,14 @@ Ifc4x3_rc1::IfcCostScheduleTypeEnum::IfcCostScheduleTypeEnum(IfcEntityInstanceDa
}
Ifc4x3_rc1::IfcCostScheduleTypeEnum::IfcCostScheduleTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcCostScheduleTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc1::IfcCostScheduleTypeEnum::IfcCostScheduleTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcCostScheduleTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -3585,12 +3697,14 @@ Ifc4x3_rc1::IfcCourseTypeEnum::IfcCourseTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4x3_rc1::IfcCourseTypeEnum::IfcCourseTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcCourseTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc1::IfcCourseTypeEnum::IfcCourseTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcCourseTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -3626,12 +3740,14 @@ Ifc4x3_rc1::IfcCoveringTypeEnum::IfcCoveringTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4x3_rc1::IfcCoveringTypeEnum::IfcCoveringTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcCoveringTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc1::IfcCoveringTypeEnum::IfcCoveringTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcCoveringTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -3672,12 +3788,14 @@ Ifc4x3_rc1::IfcCrewResourceTypeEnum::IfcCrewResourceTypeEnum(IfcEntityInstanceDa
}
Ifc4x3_rc1::IfcCrewResourceTypeEnum::IfcCrewResourceTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcCrewResourceTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc1::IfcCrewResourceTypeEnum::IfcCrewResourceTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcCrewResourceTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -3709,12 +3827,14 @@ Ifc4x3_rc1::IfcCurtainWallTypeEnum::IfcCurtainWallTypeEnum(IfcEntityInstanceData
}
Ifc4x3_rc1::IfcCurtainWallTypeEnum::IfcCurtainWallTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcCurtainWallTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc1::IfcCurtainWallTypeEnum::IfcCurtainWallTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcCurtainWallTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -3744,12 +3864,14 @@ Ifc4x3_rc1::IfcCurveInterpolationEnum::IfcCurveInterpolationEnum(IfcEntityInstan
}
Ifc4x3_rc1::IfcCurveInterpolationEnum::IfcCurveInterpolationEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcCurveInterpolationEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc1::IfcCurveInterpolationEnum::IfcCurveInterpolationEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcCurveInterpolationEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -3781,12 +3903,14 @@ Ifc4x3_rc1::IfcDamperTypeEnum::IfcDamperTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4x3_rc1::IfcDamperTypeEnum::IfcDamperTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcDamperTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc1::IfcDamperTypeEnum::IfcDamperTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcDamperTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -3827,12 +3951,14 @@ Ifc4x3_rc1::IfcDataOriginEnum::IfcDataOriginEnum(IfcEntityInstanceData* e) {
}
Ifc4x3_rc1::IfcDataOriginEnum::IfcDataOriginEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcDataOriginEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc1::IfcDataOriginEnum::IfcDataOriginEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcDataOriginEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -3865,12 +3991,14 @@ Ifc4x3_rc1::IfcDerivedUnitEnum::IfcDerivedUnitEnum(IfcEntityInstanceData* e) {
}
Ifc4x3_rc1::IfcDerivedUnitEnum::IfcDerivedUnitEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcDerivedUnitEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc1::IfcDerivedUnitEnum::IfcDerivedUnitEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcDerivedUnitEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -3951,12 +4079,14 @@ Ifc4x3_rc1::IfcDirectionSenseEnum::IfcDirectionSenseEnum(IfcEntityInstanceData*
}
Ifc4x3_rc1::IfcDirectionSenseEnum::IfcDirectionSenseEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcDirectionSenseEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc1::IfcDirectionSenseEnum::IfcDirectionSenseEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcDirectionSenseEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -3986,12 +4116,14 @@ Ifc4x3_rc1::IfcDiscreteAccessoryTypeEnum::IfcDiscreteAccessoryTypeEnum(IfcEntity
}
Ifc4x3_rc1::IfcDiscreteAccessoryTypeEnum::IfcDiscreteAccessoryTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcDiscreteAccessoryTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc1::IfcDiscreteAccessoryTypeEnum::IfcDiscreteAccessoryTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcDiscreteAccessoryTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -4038,12 +4170,14 @@ Ifc4x3_rc1::IfcDistributionBoardTypeEnum::IfcDistributionBoardTypeEnum(IfcEntity
}
Ifc4x3_rc1::IfcDistributionBoardTypeEnum::IfcDistributionBoardTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcDistributionBoardTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc1::IfcDistributionBoardTypeEnum::IfcDistributionBoardTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcDistributionBoardTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -4078,12 +4212,14 @@ Ifc4x3_rc1::IfcDistributionChamberElementTypeEnum::IfcDistributionChamberElement
}
Ifc4x3_rc1::IfcDistributionChamberElementTypeEnum::IfcDistributionChamberElementTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcDistributionChamberElementTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc1::IfcDistributionChamberElementTypeEnum::IfcDistributionChamberElementTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcDistributionChamberElementTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -4121,12 +4257,14 @@ Ifc4x3_rc1::IfcDistributionPortTypeEnum::IfcDistributionPortTypeEnum(IfcEntityIn
}
Ifc4x3_rc1::IfcDistributionPortTypeEnum::IfcDistributionPortTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcDistributionPortTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc1::IfcDistributionPortTypeEnum::IfcDistributionPortTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcDistributionPortTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -4161,12 +4299,14 @@ Ifc4x3_rc1::IfcDistributionSystemEnum::IfcDistributionSystemEnum(IfcEntityInstan
}
Ifc4x3_rc1::IfcDistributionSystemEnum::IfcDistributionSystemEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcDistributionSystemEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc1::IfcDistributionSystemEnum::IfcDistributionSystemEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcDistributionSystemEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -4241,12 +4381,14 @@ Ifc4x3_rc1::IfcDocumentConfidentialityEnum::IfcDocumentConfidentialityEnum(IfcEn
}
Ifc4x3_rc1::IfcDocumentConfidentialityEnum::IfcDocumentConfidentialityEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcDocumentConfidentialityEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc1::IfcDocumentConfidentialityEnum::IfcDocumentConfidentialityEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcDocumentConfidentialityEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -4280,12 +4422,14 @@ Ifc4x3_rc1::IfcDocumentStatusEnum::IfcDocumentStatusEnum(IfcEntityInstanceData*
}
Ifc4x3_rc1::IfcDocumentStatusEnum::IfcDocumentStatusEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcDocumentStatusEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc1::IfcDocumentStatusEnum::IfcDocumentStatusEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcDocumentStatusEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -4318,12 +4462,14 @@ Ifc4x3_rc1::IfcDoorPanelOperationEnum::IfcDoorPanelOperationEnum(IfcEntityInstan
}
Ifc4x3_rc1::IfcDoorPanelOperationEnum::IfcDoorPanelOperationEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcDoorPanelOperationEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc1::IfcDoorPanelOperationEnum::IfcDoorPanelOperationEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcDoorPanelOperationEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -4360,12 +4506,14 @@ Ifc4x3_rc1::IfcDoorPanelPositionEnum::IfcDoorPanelPositionEnum(IfcEntityInstance
}
Ifc4x3_rc1::IfcDoorPanelPositionEnum::IfcDoorPanelPositionEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcDoorPanelPositionEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc1::IfcDoorPanelPositionEnum::IfcDoorPanelPositionEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcDoorPanelPositionEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -4397,12 +4545,14 @@ Ifc4x3_rc1::IfcDoorStyleConstructionEnum::IfcDoorStyleConstructionEnum(IfcEntity
}
Ifc4x3_rc1::IfcDoorStyleConstructionEnum::IfcDoorStyleConstructionEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcDoorStyleConstructionEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc1::IfcDoorStyleConstructionEnum::IfcDoorStyleConstructionEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcDoorStyleConstructionEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -4439,12 +4589,14 @@ Ifc4x3_rc1::IfcDoorStyleOperationEnum::IfcDoorStyleOperationEnum(IfcEntityInstan
}
Ifc4x3_rc1::IfcDoorStyleOperationEnum::IfcDoorStyleOperationEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcDoorStyleOperationEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc1::IfcDoorStyleOperationEnum::IfcDoorStyleOperationEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcDoorStyleOperationEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -4490,12 +4642,14 @@ Ifc4x3_rc1::IfcDoorTypeEnum::IfcDoorTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4x3_rc1::IfcDoorTypeEnum::IfcDoorTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcDoorTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc1::IfcDoorTypeEnum::IfcDoorTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcDoorTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -4530,12 +4684,14 @@ Ifc4x3_rc1::IfcDoorTypeOperationEnum::IfcDoorTypeOperationEnum(IfcEntityInstance
}
Ifc4x3_rc1::IfcDoorTypeOperationEnum::IfcDoorTypeOperationEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcDoorTypeOperationEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc1::IfcDoorTypeOperationEnum::IfcDoorTypeOperationEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcDoorTypeOperationEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -4583,12 +4739,14 @@ Ifc4x3_rc1::IfcDuctFittingTypeEnum::IfcDuctFittingTypeEnum(IfcEntityInstanceData
}
Ifc4x3_rc1::IfcDuctFittingTypeEnum::IfcDuctFittingTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcDuctFittingTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc1::IfcDuctFittingTypeEnum::IfcDuctFittingTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcDuctFittingTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -4625,12 +4783,14 @@ Ifc4x3_rc1::IfcDuctSegmentTypeEnum::IfcDuctSegmentTypeEnum(IfcEntityInstanceData
}
Ifc4x3_rc1::IfcDuctSegmentTypeEnum::IfcDuctSegmentTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcDuctSegmentTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc1::IfcDuctSegmentTypeEnum::IfcDuctSegmentTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcDuctSegmentTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -4662,12 +4822,14 @@ Ifc4x3_rc1::IfcDuctSilencerTypeEnum::IfcDuctSilencerTypeEnum(IfcEntityInstanceDa
}
Ifc4x3_rc1::IfcDuctSilencerTypeEnum::IfcDuctSilencerTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcDuctSilencerTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc1::IfcDuctSilencerTypeEnum::IfcDuctSilencerTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcDuctSilencerTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -4700,12 +4862,14 @@ Ifc4x3_rc1::IfcEarthworksCutTypeEnum::IfcEarthworksCutTypeEnum(IfcEntityInstance
}
Ifc4x3_rc1::IfcEarthworksCutTypeEnum::IfcEarthworksCutTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcEarthworksCutTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc1::IfcEarthworksCutTypeEnum::IfcEarthworksCutTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcEarthworksCutTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -4744,12 +4908,14 @@ Ifc4x3_rc1::IfcEarthworksFillTypeEnum::IfcEarthworksFillTypeEnum(IfcEntityInstan
}
Ifc4x3_rc1::IfcEarthworksFillTypeEnum::IfcEarthworksFillTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcEarthworksFillTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc1::IfcEarthworksFillTypeEnum::IfcEarthworksFillTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcEarthworksFillTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -4786,12 +4952,14 @@ Ifc4x3_rc1::IfcElectricApplianceTypeEnum::IfcElectricApplianceTypeEnum(IfcEntity
}
Ifc4x3_rc1::IfcElectricApplianceTypeEnum::IfcElectricApplianceTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcElectricApplianceTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc1::IfcElectricApplianceTypeEnum::IfcElectricApplianceTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcElectricApplianceTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -4837,12 +5005,14 @@ Ifc4x3_rc1::IfcElectricDistributionBoardTypeEnum::IfcElectricDistributionBoardTy
}
Ifc4x3_rc1::IfcElectricDistributionBoardTypeEnum::IfcElectricDistributionBoardTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcElectricDistributionBoardTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc1::IfcElectricDistributionBoardTypeEnum::IfcElectricDistributionBoardTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcElectricDistributionBoardTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -4876,12 +5046,14 @@ Ifc4x3_rc1::IfcElectricFlowStorageDeviceTypeEnum::IfcElectricFlowStorageDeviceTy
}
Ifc4x3_rc1::IfcElectricFlowStorageDeviceTypeEnum::IfcElectricFlowStorageDeviceTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcElectricFlowStorageDeviceTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc1::IfcElectricFlowStorageDeviceTypeEnum::IfcElectricFlowStorageDeviceTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcElectricFlowStorageDeviceTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -4920,12 +5092,14 @@ Ifc4x3_rc1::IfcElectricFlowTreatmentDeviceTypeEnum::IfcElectricFlowTreatmentDevi
}
Ifc4x3_rc1::IfcElectricFlowTreatmentDeviceTypeEnum::IfcElectricFlowTreatmentDeviceTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcElectricFlowTreatmentDeviceTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc1::IfcElectricFlowTreatmentDeviceTypeEnum::IfcElectricFlowTreatmentDeviceTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcElectricFlowTreatmentDeviceTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -4956,12 +5130,14 @@ Ifc4x3_rc1::IfcElectricGeneratorTypeEnum::IfcElectricGeneratorTypeEnum(IfcEntity
}
Ifc4x3_rc1::IfcElectricGeneratorTypeEnum::IfcElectricGeneratorTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcElectricGeneratorTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc1::IfcElectricGeneratorTypeEnum::IfcElectricGeneratorTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcElectricGeneratorTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -4994,12 +5170,14 @@ Ifc4x3_rc1::IfcElectricMotorTypeEnum::IfcElectricMotorTypeEnum(IfcEntityInstance
}
Ifc4x3_rc1::IfcElectricMotorTypeEnum::IfcElectricMotorTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcElectricMotorTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc1::IfcElectricMotorTypeEnum::IfcElectricMotorTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcElectricMotorTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -5034,12 +5212,14 @@ Ifc4x3_rc1::IfcElectricTimeControlTypeEnum::IfcElectricTimeControlTypeEnum(IfcEn
}
Ifc4x3_rc1::IfcElectricTimeControlTypeEnum::IfcElectricTimeControlTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcElectricTimeControlTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc1::IfcElectricTimeControlTypeEnum::IfcElectricTimeControlTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcElectricTimeControlTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -5072,12 +5252,14 @@ Ifc4x3_rc1::IfcElementAssemblyTypeEnum::IfcElementAssemblyTypeEnum(IfcEntityInst
}
Ifc4x3_rc1::IfcElementAssemblyTypeEnum::IfcElementAssemblyTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcElementAssemblyTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc1::IfcElementAssemblyTypeEnum::IfcElementAssemblyTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcElementAssemblyTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -5135,12 +5317,14 @@ Ifc4x3_rc1::IfcElementCompositionEnum::IfcElementCompositionEnum(IfcEntityInstan
}
Ifc4x3_rc1::IfcElementCompositionEnum::IfcElementCompositionEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcElementCompositionEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc1::IfcElementCompositionEnum::IfcElementCompositionEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcElementCompositionEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -5171,12 +5355,14 @@ Ifc4x3_rc1::IfcEngineTypeEnum::IfcEngineTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4x3_rc1::IfcEngineTypeEnum::IfcEngineTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcEngineTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc1::IfcEngineTypeEnum::IfcEngineTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcEngineTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -5208,12 +5394,14 @@ Ifc4x3_rc1::IfcEvaporativeCoolerTypeEnum::IfcEvaporativeCoolerTypeEnum(IfcEntity
}
Ifc4x3_rc1::IfcEvaporativeCoolerTypeEnum::IfcEvaporativeCoolerTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcEvaporativeCoolerTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc1::IfcEvaporativeCoolerTypeEnum::IfcEvaporativeCoolerTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcEvaporativeCoolerTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -5252,12 +5440,14 @@ Ifc4x3_rc1::IfcEvaporatorTypeEnum::IfcEvaporatorTypeEnum(IfcEntityInstanceData*
}
Ifc4x3_rc1::IfcEvaporatorTypeEnum::IfcEvaporatorTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcEvaporatorTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc1::IfcEvaporatorTypeEnum::IfcEvaporatorTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcEvaporatorTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -5293,12 +5483,14 @@ Ifc4x3_rc1::IfcEventTriggerTypeEnum::IfcEventTriggerTypeEnum(IfcEntityInstanceDa
}
Ifc4x3_rc1::IfcEventTriggerTypeEnum::IfcEventTriggerTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcEventTriggerTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc1::IfcEventTriggerTypeEnum::IfcEventTriggerTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcEventTriggerTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -5332,12 +5524,14 @@ Ifc4x3_rc1::IfcEventTypeEnum::IfcEventTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4x3_rc1::IfcEventTypeEnum::IfcEventTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcEventTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc1::IfcEventTypeEnum::IfcEventTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcEventTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -5370,12 +5564,14 @@ Ifc4x3_rc1::IfcExternalSpatialElementTypeEnum::IfcExternalSpatialElementTypeEnum
}
Ifc4x3_rc1::IfcExternalSpatialElementTypeEnum::IfcExternalSpatialElementTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcExternalSpatialElementTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc1::IfcExternalSpatialElementTypeEnum::IfcExternalSpatialElementTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcExternalSpatialElementTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -5409,12 +5605,14 @@ Ifc4x3_rc1::IfcFacilityPartCommonTypeEnum::IfcFacilityPartCommonTypeEnum(IfcEnti
}
Ifc4x3_rc1::IfcFacilityPartCommonTypeEnum::IfcFacilityPartCommonTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcFacilityPartCommonTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc1::IfcFacilityPartCommonTypeEnum::IfcFacilityPartCommonTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcFacilityPartCommonTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -5452,12 +5650,14 @@ Ifc4x3_rc1::IfcFacilityUsageEnum::IfcFacilityUsageEnum(IfcEntityInstanceData* e)
}
Ifc4x3_rc1::IfcFacilityUsageEnum::IfcFacilityUsageEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcFacilityUsageEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc1::IfcFacilityUsageEnum::IfcFacilityUsageEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcFacilityUsageEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -5491,12 +5691,14 @@ Ifc4x3_rc1::IfcFanTypeEnum::IfcFanTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4x3_rc1::IfcFanTypeEnum::IfcFanTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcFanTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc1::IfcFanTypeEnum::IfcFanTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcFanTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -5533,12 +5735,14 @@ Ifc4x3_rc1::IfcFastenerTypeEnum::IfcFastenerTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4x3_rc1::IfcFastenerTypeEnum::IfcFastenerTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcFastenerTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc1::IfcFastenerTypeEnum::IfcFastenerTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcFastenerTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -5571,12 +5775,14 @@ Ifc4x3_rc1::IfcFilterTypeEnum::IfcFilterTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4x3_rc1::IfcFilterTypeEnum::IfcFilterTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcFilterTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc1::IfcFilterTypeEnum::IfcFilterTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcFilterTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -5612,12 +5818,14 @@ Ifc4x3_rc1::IfcFireSuppressionTerminalTypeEnum::IfcFireSuppressionTerminalTypeEn
}
Ifc4x3_rc1::IfcFireSuppressionTerminalTypeEnum::IfcFireSuppressionTerminalTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcFireSuppressionTerminalTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc1::IfcFireSuppressionTerminalTypeEnum::IfcFireSuppressionTerminalTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcFireSuppressionTerminalTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -5652,12 +5860,14 @@ Ifc4x3_rc1::IfcFlowDirectionEnum::IfcFlowDirectionEnum(IfcEntityInstanceData* e)
}
Ifc4x3_rc1::IfcFlowDirectionEnum::IfcFlowDirectionEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcFlowDirectionEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc1::IfcFlowDirectionEnum::IfcFlowDirectionEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcFlowDirectionEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -5689,12 +5899,14 @@ Ifc4x3_rc1::IfcFlowInstrumentTypeEnum::IfcFlowInstrumentTypeEnum(IfcEntityInstan
}
Ifc4x3_rc1::IfcFlowInstrumentTypeEnum::IfcFlowInstrumentTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcFlowInstrumentTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc1::IfcFlowInstrumentTypeEnum::IfcFlowInstrumentTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcFlowInstrumentTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -5734,12 +5946,14 @@ Ifc4x3_rc1::IfcFlowMeterTypeEnum::IfcFlowMeterTypeEnum(IfcEntityInstanceData* e)
}
Ifc4x3_rc1::IfcFlowMeterTypeEnum::IfcFlowMeterTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcFlowMeterTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc1::IfcFlowMeterTypeEnum::IfcFlowMeterTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcFlowMeterTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -5773,12 +5987,14 @@ Ifc4x3_rc1::IfcFootingTypeEnum::IfcFootingTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4x3_rc1::IfcFootingTypeEnum::IfcFootingTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcFootingTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc1::IfcFootingTypeEnum::IfcFootingTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcFootingTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -5813,12 +6029,14 @@ Ifc4x3_rc1::IfcFurnitureTypeEnum::IfcFurnitureTypeEnum(IfcEntityInstanceData* e)
}
Ifc4x3_rc1::IfcFurnitureTypeEnum::IfcFurnitureTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcFurnitureTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc1::IfcFurnitureTypeEnum::IfcFurnitureTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcFurnitureTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -5856,12 +6074,14 @@ Ifc4x3_rc1::IfcGeographicElementTypeEnum::IfcGeographicElementTypeEnum(IfcEntity
}
Ifc4x3_rc1::IfcGeographicElementTypeEnum::IfcGeographicElementTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcGeographicElementTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc1::IfcGeographicElementTypeEnum::IfcGeographicElementTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcGeographicElementTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -5893,12 +6113,14 @@ Ifc4x3_rc1::IfcGeometricProjectionEnum::IfcGeometricProjectionEnum(IfcEntityInst
}
Ifc4x3_rc1::IfcGeometricProjectionEnum::IfcGeometricProjectionEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcGeometricProjectionEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc1::IfcGeometricProjectionEnum::IfcGeometricProjectionEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcGeometricProjectionEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -5935,12 +6157,14 @@ Ifc4x3_rc1::IfcGlobalOrLocalEnum::IfcGlobalOrLocalEnum(IfcEntityInstanceData* e)
}
Ifc4x3_rc1::IfcGlobalOrLocalEnum::IfcGlobalOrLocalEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcGlobalOrLocalEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc1::IfcGlobalOrLocalEnum::IfcGlobalOrLocalEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcGlobalOrLocalEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -5970,12 +6194,14 @@ Ifc4x3_rc1::IfcGridTypeEnum::IfcGridTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4x3_rc1::IfcGridTypeEnum::IfcGridTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcGridTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc1::IfcGridTypeEnum::IfcGridTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcGridTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -6009,12 +6235,14 @@ Ifc4x3_rc1::IfcHeatExchangerTypeEnum::IfcHeatExchangerTypeEnum(IfcEntityInstance
}
Ifc4x3_rc1::IfcHeatExchangerTypeEnum::IfcHeatExchangerTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcHeatExchangerTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc1::IfcHeatExchangerTypeEnum::IfcHeatExchangerTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcHeatExchangerTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -6047,12 +6275,14 @@ Ifc4x3_rc1::IfcHumidifierTypeEnum::IfcHumidifierTypeEnum(IfcEntityInstanceData*
}
Ifc4x3_rc1::IfcHumidifierTypeEnum::IfcHumidifierTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcHumidifierTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc1::IfcHumidifierTypeEnum::IfcHumidifierTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcHumidifierTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -6095,12 +6325,14 @@ Ifc4x3_rc1::IfcImpactProtectionDeviceTypeEnum::IfcImpactProtectionDeviceTypeEnum
}
Ifc4x3_rc1::IfcImpactProtectionDeviceTypeEnum::IfcImpactProtectionDeviceTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcImpactProtectionDeviceTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc1::IfcImpactProtectionDeviceTypeEnum::IfcImpactProtectionDeviceTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcImpactProtectionDeviceTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -6134,12 +6366,14 @@ Ifc4x3_rc1::IfcInterceptorTypeEnum::IfcInterceptorTypeEnum(IfcEntityInstanceData
}
Ifc4x3_rc1::IfcInterceptorTypeEnum::IfcInterceptorTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcInterceptorTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc1::IfcInterceptorTypeEnum::IfcInterceptorTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcInterceptorTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -6173,12 +6407,14 @@ Ifc4x3_rc1::IfcInternalOrExternalEnum::IfcInternalOrExternalEnum(IfcEntityInstan
}
Ifc4x3_rc1::IfcInternalOrExternalEnum::IfcInternalOrExternalEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcInternalOrExternalEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc1::IfcInternalOrExternalEnum::IfcInternalOrExternalEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcInternalOrExternalEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -6212,12 +6448,14 @@ Ifc4x3_rc1::IfcInventoryTypeEnum::IfcInventoryTypeEnum(IfcEntityInstanceData* e)
}
Ifc4x3_rc1::IfcInventoryTypeEnum::IfcInventoryTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcInventoryTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc1::IfcInventoryTypeEnum::IfcInventoryTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcInventoryTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -6250,12 +6488,14 @@ Ifc4x3_rc1::IfcJunctionBoxTypeEnum::IfcJunctionBoxTypeEnum(IfcEntityInstanceData
}
Ifc4x3_rc1::IfcJunctionBoxTypeEnum::IfcJunctionBoxTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcJunctionBoxTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc1::IfcJunctionBoxTypeEnum::IfcJunctionBoxTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcJunctionBoxTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -6287,12 +6527,14 @@ Ifc4x3_rc1::IfcKnotType::IfcKnotType(IfcEntityInstanceData* e) {
}
Ifc4x3_rc1::IfcKnotType::IfcKnotType(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcKnotType_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc1::IfcKnotType::IfcKnotType(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcKnotType_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -6324,12 +6566,14 @@ Ifc4x3_rc1::IfcLaborResourceTypeEnum::IfcLaborResourceTypeEnum(IfcEntityInstance
}
Ifc4x3_rc1::IfcLaborResourceTypeEnum::IfcLaborResourceTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcLaborResourceTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc1::IfcLaborResourceTypeEnum::IfcLaborResourceTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcLaborResourceTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -6378,12 +6622,14 @@ Ifc4x3_rc1::IfcLampTypeEnum::IfcLampTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4x3_rc1::IfcLampTypeEnum::IfcLampTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcLampTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc1::IfcLampTypeEnum::IfcLampTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcLampTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -6422,12 +6668,14 @@ Ifc4x3_rc1::IfcLayerSetDirectionEnum::IfcLayerSetDirectionEnum(IfcEntityInstance
}
Ifc4x3_rc1::IfcLayerSetDirectionEnum::IfcLayerSetDirectionEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcLayerSetDirectionEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc1::IfcLayerSetDirectionEnum::IfcLayerSetDirectionEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcLayerSetDirectionEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -6458,12 +6706,14 @@ Ifc4x3_rc1::IfcLightDistributionCurveEnum::IfcLightDistributionCurveEnum(IfcEnti
}
Ifc4x3_rc1::IfcLightDistributionCurveEnum::IfcLightDistributionCurveEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcLightDistributionCurveEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc1::IfcLightDistributionCurveEnum::IfcLightDistributionCurveEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcLightDistributionCurveEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -6495,12 +6745,14 @@ Ifc4x3_rc1::IfcLightEmissionSourceEnum::IfcLightEmissionSourceEnum(IfcEntityInst
}
Ifc4x3_rc1::IfcLightEmissionSourceEnum::IfcLightEmissionSourceEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcLightEmissionSourceEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc1::IfcLightEmissionSourceEnum::IfcLightEmissionSourceEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcLightEmissionSourceEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -6539,12 +6791,14 @@ Ifc4x3_rc1::IfcLightFixtureTypeEnum::IfcLightFixtureTypeEnum(IfcEntityInstanceDa
}
Ifc4x3_rc1::IfcLightFixtureTypeEnum::IfcLightFixtureTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcLightFixtureTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc1::IfcLightFixtureTypeEnum::IfcLightFixtureTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcLightFixtureTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -6577,12 +6831,14 @@ Ifc4x3_rc1::IfcLiquidTerminalTypeEnum::IfcLiquidTerminalTypeEnum(IfcEntityInstan
}
Ifc4x3_rc1::IfcLiquidTerminalTypeEnum::IfcLiquidTerminalTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcLiquidTerminalTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc1::IfcLiquidTerminalTypeEnum::IfcLiquidTerminalTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcLiquidTerminalTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -6614,12 +6870,14 @@ Ifc4x3_rc1::IfcLoadGroupTypeEnum::IfcLoadGroupTypeEnum(IfcEntityInstanceData* e)
}
Ifc4x3_rc1::IfcLoadGroupTypeEnum::IfcLoadGroupTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcLoadGroupTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc1::IfcLoadGroupTypeEnum::IfcLoadGroupTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcLoadGroupTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -6652,12 +6910,14 @@ Ifc4x3_rc1::IfcLogicalOperatorEnum::IfcLogicalOperatorEnum(IfcEntityInstanceData
}
Ifc4x3_rc1::IfcLogicalOperatorEnum::IfcLogicalOperatorEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcLogicalOperatorEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc1::IfcLogicalOperatorEnum::IfcLogicalOperatorEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcLogicalOperatorEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -6690,12 +6950,14 @@ Ifc4x3_rc1::IfcMarineFacilityTypeEnum::IfcMarineFacilityTypeEnum(IfcEntityInstan
}
Ifc4x3_rc1::IfcMarineFacilityTypeEnum::IfcMarineFacilityTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcMarineFacilityTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc1::IfcMarineFacilityTypeEnum::IfcMarineFacilityTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcMarineFacilityTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -6744,12 +7006,14 @@ Ifc4x3_rc1::IfcMarinePartTypeEnum::IfcMarinePartTypeEnum(IfcEntityInstanceData*
}
Ifc4x3_rc1::IfcMarinePartTypeEnum::IfcMarinePartTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcMarinePartTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc1::IfcMarinePartTypeEnum::IfcMarinePartTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcMarinePartTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -6803,12 +7067,14 @@ Ifc4x3_rc1::IfcMechanicalFastenerTypeEnum::IfcMechanicalFastenerTypeEnum(IfcEnti
}
Ifc4x3_rc1::IfcMechanicalFastenerTypeEnum::IfcMechanicalFastenerTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcMechanicalFastenerTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc1::IfcMechanicalFastenerTypeEnum::IfcMechanicalFastenerTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcMechanicalFastenerTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -6853,12 +7119,14 @@ Ifc4x3_rc1::IfcMedicalDeviceTypeEnum::IfcMedicalDeviceTypeEnum(IfcEntityInstance
}
Ifc4x3_rc1::IfcMedicalDeviceTypeEnum::IfcMedicalDeviceTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcMedicalDeviceTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc1::IfcMedicalDeviceTypeEnum::IfcMedicalDeviceTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcMedicalDeviceTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -6893,12 +7161,14 @@ Ifc4x3_rc1::IfcMemberTypeEnum::IfcMemberTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4x3_rc1::IfcMemberTypeEnum::IfcMemberTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcMemberTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc1::IfcMemberTypeEnum::IfcMemberTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcMemberTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -6947,12 +7217,14 @@ Ifc4x3_rc1::IfcMobileTelecommunicationsApplianceTypeEnum::IfcMobileTelecommunica
}
Ifc4x3_rc1::IfcMobileTelecommunicationsApplianceTypeEnum::IfcMobileTelecommunicationsApplianceTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcMobileTelecommunicationsApplianceTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc1::IfcMobileTelecommunicationsApplianceTypeEnum::IfcMobileTelecommunicationsApplianceTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcMobileTelecommunicationsApplianceTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -6989,12 +7261,14 @@ Ifc4x3_rc1::IfcMooringDeviceTypeEnum::IfcMooringDeviceTypeEnum(IfcEntityInstance
}
Ifc4x3_rc1::IfcMooringDeviceTypeEnum::IfcMooringDeviceTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcMooringDeviceTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc1::IfcMooringDeviceTypeEnum::IfcMooringDeviceTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcMooringDeviceTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -7029,12 +7303,14 @@ Ifc4x3_rc1::IfcMotorConnectionTypeEnum::IfcMotorConnectionTypeEnum(IfcEntityInst
}
Ifc4x3_rc1::IfcMotorConnectionTypeEnum::IfcMotorConnectionTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcMotorConnectionTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc1::IfcMotorConnectionTypeEnum::IfcMotorConnectionTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcMotorConnectionTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -7067,12 +7343,14 @@ Ifc4x3_rc1::IfcNavigationElementTypeEnum::IfcNavigationElementTypeEnum(IfcEntity
}
Ifc4x3_rc1::IfcNavigationElementTypeEnum::IfcNavigationElementTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcNavigationElementTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc1::IfcNavigationElementTypeEnum::IfcNavigationElementTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcNavigationElementTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -7104,12 +7382,14 @@ Ifc4x3_rc1::IfcNullStyle::IfcNullStyle(IfcEntityInstanceData* e) {
}
Ifc4x3_rc1::IfcNullStyle::IfcNullStyle(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcNullStyle_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc1::IfcNullStyle::IfcNullStyle(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcNullStyle_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -7138,12 +7418,14 @@ Ifc4x3_rc1::IfcObjectTypeEnum::IfcObjectTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4x3_rc1::IfcObjectTypeEnum::IfcObjectTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcObjectTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc1::IfcObjectTypeEnum::IfcObjectTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcObjectTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -7179,12 +7461,14 @@ Ifc4x3_rc1::IfcObjectiveEnum::IfcObjectiveEnum(IfcEntityInstanceData* e) {
}
Ifc4x3_rc1::IfcObjectiveEnum::IfcObjectiveEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcObjectiveEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc1::IfcObjectiveEnum::IfcObjectiveEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcObjectiveEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -7225,12 +7509,14 @@ Ifc4x3_rc1::IfcOccupantTypeEnum::IfcOccupantTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4x3_rc1::IfcOccupantTypeEnum::IfcOccupantTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcOccupantTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc1::IfcOccupantTypeEnum::IfcOccupantTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcOccupantTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -7267,12 +7553,14 @@ Ifc4x3_rc1::IfcOpeningElementTypeEnum::IfcOpeningElementTypeEnum(IfcEntityInstan
}
Ifc4x3_rc1::IfcOpeningElementTypeEnum::IfcOpeningElementTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcOpeningElementTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc1::IfcOpeningElementTypeEnum::IfcOpeningElementTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcOpeningElementTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -7304,12 +7592,14 @@ Ifc4x3_rc1::IfcOutletTypeEnum::IfcOutletTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4x3_rc1::IfcOutletTypeEnum::IfcOutletTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcOutletTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc1::IfcOutletTypeEnum::IfcOutletTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcOutletTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -7344,12 +7634,14 @@ Ifc4x3_rc1::IfcPerformanceHistoryTypeEnum::IfcPerformanceHistoryTypeEnum(IfcEnti
}
Ifc4x3_rc1::IfcPerformanceHistoryTypeEnum::IfcPerformanceHistoryTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcPerformanceHistoryTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc1::IfcPerformanceHistoryTypeEnum::IfcPerformanceHistoryTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcPerformanceHistoryTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -7379,12 +7671,14 @@ Ifc4x3_rc1::IfcPermeableCoveringOperationEnum::IfcPermeableCoveringOperationEnum
}
Ifc4x3_rc1::IfcPermeableCoveringOperationEnum::IfcPermeableCoveringOperationEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcPermeableCoveringOperationEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc1::IfcPermeableCoveringOperationEnum::IfcPermeableCoveringOperationEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcPermeableCoveringOperationEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -7417,12 +7711,14 @@ Ifc4x3_rc1::IfcPermitTypeEnum::IfcPermitTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4x3_rc1::IfcPermitTypeEnum::IfcPermitTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcPermitTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc1::IfcPermitTypeEnum::IfcPermitTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcPermitTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -7455,12 +7751,14 @@ Ifc4x3_rc1::IfcPhysicalOrVirtualEnum::IfcPhysicalOrVirtualEnum(IfcEntityInstance
}
Ifc4x3_rc1::IfcPhysicalOrVirtualEnum::IfcPhysicalOrVirtualEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcPhysicalOrVirtualEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc1::IfcPhysicalOrVirtualEnum::IfcPhysicalOrVirtualEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcPhysicalOrVirtualEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -7491,12 +7789,14 @@ Ifc4x3_rc1::IfcPileConstructionEnum::IfcPileConstructionEnum(IfcEntityInstanceDa
}
Ifc4x3_rc1::IfcPileConstructionEnum::IfcPileConstructionEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcPileConstructionEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc1::IfcPileConstructionEnum::IfcPileConstructionEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcPileConstructionEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -7530,12 +7830,14 @@ Ifc4x3_rc1::IfcPileTypeEnum::IfcPileTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4x3_rc1::IfcPileTypeEnum::IfcPileTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcPileTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc1::IfcPileTypeEnum::IfcPileTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcPileTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -7571,12 +7873,14 @@ Ifc4x3_rc1::IfcPipeFittingTypeEnum::IfcPipeFittingTypeEnum(IfcEntityInstanceData
}
Ifc4x3_rc1::IfcPipeFittingTypeEnum::IfcPipeFittingTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcPipeFittingTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc1::IfcPipeFittingTypeEnum::IfcPipeFittingTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcPipeFittingTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -7613,12 +7917,14 @@ Ifc4x3_rc1::IfcPipeSegmentTypeEnum::IfcPipeSegmentTypeEnum(IfcEntityInstanceData
}
Ifc4x3_rc1::IfcPipeSegmentTypeEnum::IfcPipeSegmentTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcPipeSegmentTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc1::IfcPipeSegmentTypeEnum::IfcPipeSegmentTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcPipeSegmentTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -7653,12 +7959,14 @@ Ifc4x3_rc1::IfcPlateTypeEnum::IfcPlateTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4x3_rc1::IfcPlateTypeEnum::IfcPlateTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcPlateTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc1::IfcPlateTypeEnum::IfcPlateTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcPlateTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -7697,12 +8005,14 @@ Ifc4x3_rc1::IfcPreferredSurfaceCurveRepresentation::IfcPreferredSurfaceCurveRepr
}
Ifc4x3_rc1::IfcPreferredSurfaceCurveRepresentation::IfcPreferredSurfaceCurveRepresentation(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcPreferredSurfaceCurveRepresentation_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc1::IfcPreferredSurfaceCurveRepresentation::IfcPreferredSurfaceCurveRepresentation(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcPreferredSurfaceCurveRepresentation_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -7733,12 +8043,14 @@ Ifc4x3_rc1::IfcProcedureTypeEnum::IfcProcedureTypeEnum(IfcEntityInstanceData* e)
}
Ifc4x3_rc1::IfcProcedureTypeEnum::IfcProcedureTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcProcedureTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc1::IfcProcedureTypeEnum::IfcProcedureTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcProcedureTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -7775,12 +8087,14 @@ Ifc4x3_rc1::IfcProfileTypeEnum::IfcProfileTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4x3_rc1::IfcProfileTypeEnum::IfcProfileTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcProfileTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc1::IfcProfileTypeEnum::IfcProfileTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcProfileTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -7810,12 +8124,14 @@ Ifc4x3_rc1::IfcProjectOrderTypeEnum::IfcProjectOrderTypeEnum(IfcEntityInstanceDa
}
Ifc4x3_rc1::IfcProjectOrderTypeEnum::IfcProjectOrderTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcProjectOrderTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc1::IfcProjectOrderTypeEnum::IfcProjectOrderTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcProjectOrderTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -7850,12 +8166,14 @@ Ifc4x3_rc1::IfcProjectedOrTrueLengthEnum::IfcProjectedOrTrueLengthEnum(IfcEntity
}
Ifc4x3_rc1::IfcProjectedOrTrueLengthEnum::IfcProjectedOrTrueLengthEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcProjectedOrTrueLengthEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc1::IfcProjectedOrTrueLengthEnum::IfcProjectedOrTrueLengthEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcProjectedOrTrueLengthEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -7885,12 +8203,14 @@ Ifc4x3_rc1::IfcProjectionElementTypeEnum::IfcProjectionElementTypeEnum(IfcEntity
}
Ifc4x3_rc1::IfcProjectionElementTypeEnum::IfcProjectionElementTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcProjectionElementTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc1::IfcProjectionElementTypeEnum::IfcProjectionElementTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcProjectionElementTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -7922,12 +8242,14 @@ Ifc4x3_rc1::IfcPropertySetTemplateTypeEnum::IfcPropertySetTemplateTypeEnum(IfcEn
}
Ifc4x3_rc1::IfcPropertySetTemplateTypeEnum::IfcPropertySetTemplateTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcPropertySetTemplateTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc1::IfcPropertySetTemplateTypeEnum::IfcPropertySetTemplateTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcPropertySetTemplateTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -7963,12 +8285,14 @@ Ifc4x3_rc1::IfcProtectiveDeviceTrippingUnitTypeEnum::IfcProtectiveDeviceTripping
}
Ifc4x3_rc1::IfcProtectiveDeviceTrippingUnitTypeEnum::IfcProtectiveDeviceTrippingUnitTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcProtectiveDeviceTrippingUnitTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc1::IfcProtectiveDeviceTrippingUnitTypeEnum::IfcProtectiveDeviceTrippingUnitTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcProtectiveDeviceTrippingUnitTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -8002,12 +8326,14 @@ Ifc4x3_rc1::IfcProtectiveDeviceTypeEnum::IfcProtectiveDeviceTypeEnum(IfcEntityIn
}
Ifc4x3_rc1::IfcProtectiveDeviceTypeEnum::IfcProtectiveDeviceTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcProtectiveDeviceTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc1::IfcProtectiveDeviceTypeEnum::IfcProtectiveDeviceTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcProtectiveDeviceTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -8047,12 +8373,14 @@ Ifc4x3_rc1::IfcPumpTypeEnum::IfcPumpTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4x3_rc1::IfcPumpTypeEnum::IfcPumpTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcPumpTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc1::IfcPumpTypeEnum::IfcPumpTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcPumpTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -8089,12 +8417,14 @@ Ifc4x3_rc1::IfcRailTypeEnum::IfcRailTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4x3_rc1::IfcRailTypeEnum::IfcRailTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcRailTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc1::IfcRailTypeEnum::IfcRailTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcRailTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -8130,12 +8460,14 @@ Ifc4x3_rc1::IfcRailingTypeEnum::IfcRailingTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4x3_rc1::IfcRailingTypeEnum::IfcRailingTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcRailingTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc1::IfcRailingTypeEnum::IfcRailingTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcRailingTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -8169,12 +8501,14 @@ Ifc4x3_rc1::IfcRailwayPartTypeEnum::IfcRailwayPartTypeEnum(IfcEntityInstanceData
}
Ifc4x3_rc1::IfcRailwayPartTypeEnum::IfcRailwayPartTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcRailwayPartTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc1::IfcRailwayPartTypeEnum::IfcRailwayPartTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcRailwayPartTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -8212,12 +8546,14 @@ Ifc4x3_rc1::IfcRampFlightTypeEnum::IfcRampFlightTypeEnum(IfcEntityInstanceData*
}
Ifc4x3_rc1::IfcRampFlightTypeEnum::IfcRampFlightTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcRampFlightTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc1::IfcRampFlightTypeEnum::IfcRampFlightTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcRampFlightTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -8249,12 +8585,14 @@ Ifc4x3_rc1::IfcRampTypeEnum::IfcRampTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4x3_rc1::IfcRampTypeEnum::IfcRampTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcRampTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc1::IfcRampTypeEnum::IfcRampTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcRampTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -8290,12 +8628,14 @@ Ifc4x3_rc1::IfcRecurrenceTypeEnum::IfcRecurrenceTypeEnum(IfcEntityInstanceData*
}
Ifc4x3_rc1::IfcRecurrenceTypeEnum::IfcRecurrenceTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcRecurrenceTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc1::IfcRecurrenceTypeEnum::IfcRecurrenceTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcRecurrenceTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -8331,12 +8671,14 @@ Ifc4x3_rc1::IfcReferentTypeEnum::IfcReferentTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4x3_rc1::IfcReferentTypeEnum::IfcReferentTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcReferentTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc1::IfcReferentTypeEnum::IfcReferentTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcReferentTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -8370,12 +8712,14 @@ Ifc4x3_rc1::IfcReflectanceMethodEnum::IfcReflectanceMethodEnum(IfcEntityInstance
}
Ifc4x3_rc1::IfcReflectanceMethodEnum::IfcReflectanceMethodEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcReflectanceMethodEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc1::IfcReflectanceMethodEnum::IfcReflectanceMethodEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcReflectanceMethodEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -8413,12 +8757,14 @@ Ifc4x3_rc1::IfcReinforcedSoilTypeEnum::IfcReinforcedSoilTypeEnum(IfcEntityInstan
}
Ifc4x3_rc1::IfcReinforcedSoilTypeEnum::IfcReinforcedSoilTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcReinforcedSoilTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc1::IfcReinforcedSoilTypeEnum::IfcReinforcedSoilTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcReinforcedSoilTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -8454,12 +8800,14 @@ Ifc4x3_rc1::IfcReinforcingBarRoleEnum::IfcReinforcingBarRoleEnum(IfcEntityInstan
}
Ifc4x3_rc1::IfcReinforcingBarRoleEnum::IfcReinforcingBarRoleEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcReinforcingBarRoleEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc1::IfcReinforcingBarRoleEnum::IfcReinforcingBarRoleEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcReinforcingBarRoleEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -8497,12 +8845,14 @@ Ifc4x3_rc1::IfcReinforcingBarSurfaceEnum::IfcReinforcingBarSurfaceEnum(IfcEntity
}
Ifc4x3_rc1::IfcReinforcingBarSurfaceEnum::IfcReinforcingBarSurfaceEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcReinforcingBarSurfaceEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc1::IfcReinforcingBarSurfaceEnum::IfcReinforcingBarSurfaceEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcReinforcingBarSurfaceEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -8532,12 +8882,14 @@ Ifc4x3_rc1::IfcReinforcingBarTypeEnum::IfcReinforcingBarTypeEnum(IfcEntityInstan
}
Ifc4x3_rc1::IfcReinforcingBarTypeEnum::IfcReinforcingBarTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcReinforcingBarTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc1::IfcReinforcingBarTypeEnum::IfcReinforcingBarTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcReinforcingBarTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -8576,12 +8928,14 @@ Ifc4x3_rc1::IfcReinforcingMeshTypeEnum::IfcReinforcingMeshTypeEnum(IfcEntityInst
}
Ifc4x3_rc1::IfcReinforcingMeshTypeEnum::IfcReinforcingMeshTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcReinforcingMeshTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc1::IfcReinforcingMeshTypeEnum::IfcReinforcingMeshTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcReinforcingMeshTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -8611,12 +8965,14 @@ Ifc4x3_rc1::IfcRoadPartTypeEnum::IfcRoadPartTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4x3_rc1::IfcRoadPartTypeEnum::IfcRoadPartTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcRoadPartTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc1::IfcRoadPartTypeEnum::IfcRoadPartTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcRoadPartTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -8670,12 +9026,14 @@ Ifc4x3_rc1::IfcRoleEnum::IfcRoleEnum(IfcEntityInstanceData* e) {
}
Ifc4x3_rc1::IfcRoleEnum::IfcRoleEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcRoleEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc1::IfcRoleEnum::IfcRoleEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcRoleEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -8726,12 +9084,14 @@ Ifc4x3_rc1::IfcRoofTypeEnum::IfcRoofTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4x3_rc1::IfcRoofTypeEnum::IfcRoofTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcRoofTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc1::IfcRoofTypeEnum::IfcRoofTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcRoofTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -8774,12 +9134,14 @@ Ifc4x3_rc1::IfcSIPrefix::IfcSIPrefix(IfcEntityInstanceData* e) {
}
Ifc4x3_rc1::IfcSIPrefix::IfcSIPrefix(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcSIPrefix_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc1::IfcSIPrefix::IfcSIPrefix(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcSIPrefix_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -8823,12 +9185,14 @@ Ifc4x3_rc1::IfcSIUnitName::IfcSIUnitName(IfcEntityInstanceData* e) {
}
Ifc4x3_rc1::IfcSIUnitName::IfcSIUnitName(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcSIUnitName_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc1::IfcSIUnitName::IfcSIUnitName(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcSIUnitName_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -8886,12 +9250,14 @@ Ifc4x3_rc1::IfcSanitaryTerminalTypeEnum::IfcSanitaryTerminalTypeEnum(IfcEntityIn
}
Ifc4x3_rc1::IfcSanitaryTerminalTypeEnum::IfcSanitaryTerminalTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcSanitaryTerminalTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc1::IfcSanitaryTerminalTypeEnum::IfcSanitaryTerminalTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcSanitaryTerminalTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -8931,12 +9297,14 @@ Ifc4x3_rc1::IfcSectionTypeEnum::IfcSectionTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4x3_rc1::IfcSectionTypeEnum::IfcSectionTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcSectionTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc1::IfcSectionTypeEnum::IfcSectionTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcSectionTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -8966,12 +9334,14 @@ Ifc4x3_rc1::IfcSensorTypeEnum::IfcSensorTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4x3_rc1::IfcSensorTypeEnum::IfcSensorTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcSensorTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc1::IfcSensorTypeEnum::IfcSensorTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcSensorTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -9033,12 +9403,14 @@ Ifc4x3_rc1::IfcSequenceEnum::IfcSequenceEnum(IfcEntityInstanceData* e) {
}
Ifc4x3_rc1::IfcSequenceEnum::IfcSequenceEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcSequenceEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc1::IfcSequenceEnum::IfcSequenceEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcSequenceEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -9072,12 +9444,14 @@ Ifc4x3_rc1::IfcShadingDeviceTypeEnum::IfcShadingDeviceTypeEnum(IfcEntityInstance
}
Ifc4x3_rc1::IfcShadingDeviceTypeEnum::IfcShadingDeviceTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcShadingDeviceTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc1::IfcShadingDeviceTypeEnum::IfcShadingDeviceTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcShadingDeviceTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -9110,12 +9484,14 @@ Ifc4x3_rc1::IfcSignTypeEnum::IfcSignTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4x3_rc1::IfcSignTypeEnum::IfcSignTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcSignTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc1::IfcSignTypeEnum::IfcSignTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcSignTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -9148,12 +9524,14 @@ Ifc4x3_rc1::IfcSignalTypeEnum::IfcSignalTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4x3_rc1::IfcSignalTypeEnum::IfcSignalTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcSignalTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc1::IfcSignalTypeEnum::IfcSignalTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcSignalTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -9186,12 +9564,14 @@ Ifc4x3_rc1::IfcSimplePropertyTemplateTypeEnum::IfcSimplePropertyTemplateTypeEnum
}
Ifc4x3_rc1::IfcSimplePropertyTemplateTypeEnum::IfcSimplePropertyTemplateTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcSimplePropertyTemplateTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc1::IfcSimplePropertyTemplateTypeEnum::IfcSimplePropertyTemplateTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcSimplePropertyTemplateTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -9231,12 +9611,14 @@ Ifc4x3_rc1::IfcSlabTypeEnum::IfcSlabTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4x3_rc1::IfcSlabTypeEnum::IfcSlabTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcSlabTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc1::IfcSlabTypeEnum::IfcSlabTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcSlabTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -9275,12 +9657,14 @@ Ifc4x3_rc1::IfcSolarDeviceTypeEnum::IfcSolarDeviceTypeEnum(IfcEntityInstanceData
}
Ifc4x3_rc1::IfcSolarDeviceTypeEnum::IfcSolarDeviceTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcSolarDeviceTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc1::IfcSolarDeviceTypeEnum::IfcSolarDeviceTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcSolarDeviceTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -9312,12 +9696,14 @@ Ifc4x3_rc1::IfcSpaceHeaterTypeEnum::IfcSpaceHeaterTypeEnum(IfcEntityInstanceData
}
Ifc4x3_rc1::IfcSpaceHeaterTypeEnum::IfcSpaceHeaterTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcSpaceHeaterTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc1::IfcSpaceHeaterTypeEnum::IfcSpaceHeaterTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcSpaceHeaterTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -9349,12 +9735,14 @@ Ifc4x3_rc1::IfcSpaceTypeEnum::IfcSpaceTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4x3_rc1::IfcSpaceTypeEnum::IfcSpaceTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcSpaceTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc1::IfcSpaceTypeEnum::IfcSpaceTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcSpaceTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -9389,12 +9777,14 @@ Ifc4x3_rc1::IfcSpatialZoneTypeEnum::IfcSpatialZoneTypeEnum(IfcEntityInstanceData
}
Ifc4x3_rc1::IfcSpatialZoneTypeEnum::IfcSpatialZoneTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcSpatialZoneTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc1::IfcSpatialZoneTypeEnum::IfcSpatialZoneTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcSpatialZoneTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -9433,12 +9823,14 @@ Ifc4x3_rc1::IfcStackTerminalTypeEnum::IfcStackTerminalTypeEnum(IfcEntityInstance
}
Ifc4x3_rc1::IfcStackTerminalTypeEnum::IfcStackTerminalTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcStackTerminalTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc1::IfcStackTerminalTypeEnum::IfcStackTerminalTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcStackTerminalTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -9471,12 +9863,14 @@ Ifc4x3_rc1::IfcStairFlightTypeEnum::IfcStairFlightTypeEnum(IfcEntityInstanceData
}
Ifc4x3_rc1::IfcStairFlightTypeEnum::IfcStairFlightTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcStairFlightTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc1::IfcStairFlightTypeEnum::IfcStairFlightTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcStairFlightTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -9511,12 +9905,14 @@ Ifc4x3_rc1::IfcStairTypeEnum::IfcStairTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4x3_rc1::IfcStairTypeEnum::IfcStairTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcStairTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc1::IfcStairTypeEnum::IfcStairTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcStairTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -9561,12 +9957,14 @@ Ifc4x3_rc1::IfcStateEnum::IfcStateEnum(IfcEntityInstanceData* e) {
}
Ifc4x3_rc1::IfcStateEnum::IfcStateEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcStateEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc1::IfcStateEnum::IfcStateEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcStateEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -9599,12 +9997,14 @@ Ifc4x3_rc1::IfcStructuralCurveActivityTypeEnum::IfcStructuralCurveActivityTypeEn
}
Ifc4x3_rc1::IfcStructuralCurveActivityTypeEnum::IfcStructuralCurveActivityTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcStructuralCurveActivityTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc1::IfcStructuralCurveActivityTypeEnum::IfcStructuralCurveActivityTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcStructuralCurveActivityTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -9641,12 +10041,14 @@ Ifc4x3_rc1::IfcStructuralCurveMemberTypeEnum::IfcStructuralCurveMemberTypeEnum(I
}
Ifc4x3_rc1::IfcStructuralCurveMemberTypeEnum::IfcStructuralCurveMemberTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcStructuralCurveMemberTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc1::IfcStructuralCurveMemberTypeEnum::IfcStructuralCurveMemberTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcStructuralCurveMemberTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -9681,12 +10083,14 @@ Ifc4x3_rc1::IfcStructuralSurfaceActivityTypeEnum::IfcStructuralSurfaceActivityTy
}
Ifc4x3_rc1::IfcStructuralSurfaceActivityTypeEnum::IfcStructuralSurfaceActivityTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcStructuralSurfaceActivityTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc1::IfcStructuralSurfaceActivityTypeEnum::IfcStructuralSurfaceActivityTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcStructuralSurfaceActivityTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -9720,12 +10124,14 @@ Ifc4x3_rc1::IfcStructuralSurfaceMemberTypeEnum::IfcStructuralSurfaceMemberTypeEn
}
Ifc4x3_rc1::IfcStructuralSurfaceMemberTypeEnum::IfcStructuralSurfaceMemberTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcStructuralSurfaceMemberTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc1::IfcStructuralSurfaceMemberTypeEnum::IfcStructuralSurfaceMemberTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcStructuralSurfaceMemberTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -9758,12 +10164,14 @@ Ifc4x3_rc1::IfcSubContractResourceTypeEnum::IfcSubContractResourceTypeEnum(IfcEn
}
Ifc4x3_rc1::IfcSubContractResourceTypeEnum::IfcSubContractResourceTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcSubContractResourceTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc1::IfcSubContractResourceTypeEnum::IfcSubContractResourceTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcSubContractResourceTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -9795,12 +10203,14 @@ Ifc4x3_rc1::IfcSurfaceFeatureTypeEnum::IfcSurfaceFeatureTypeEnum(IfcEntityInstan
}
Ifc4x3_rc1::IfcSurfaceFeatureTypeEnum::IfcSurfaceFeatureTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcSurfaceFeatureTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc1::IfcSurfaceFeatureTypeEnum::IfcSurfaceFeatureTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcSurfaceFeatureTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -9841,12 +10251,14 @@ Ifc4x3_rc1::IfcSurfaceSide::IfcSurfaceSide(IfcEntityInstanceData* e) {
}
Ifc4x3_rc1::IfcSurfaceSide::IfcSurfaceSide(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcSurfaceSide_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc1::IfcSurfaceSide::IfcSurfaceSide(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcSurfaceSide_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -9877,12 +10289,14 @@ Ifc4x3_rc1::IfcSwitchingDeviceTypeEnum::IfcSwitchingDeviceTypeEnum(IfcEntityInst
}
Ifc4x3_rc1::IfcSwitchingDeviceTypeEnum::IfcSwitchingDeviceTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcSwitchingDeviceTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc1::IfcSwitchingDeviceTypeEnum::IfcSwitchingDeviceTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcSwitchingDeviceTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -9923,12 +10337,14 @@ Ifc4x3_rc1::IfcSystemFurnitureElementTypeEnum::IfcSystemFurnitureElementTypeEnum
}
Ifc4x3_rc1::IfcSystemFurnitureElementTypeEnum::IfcSystemFurnitureElementTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcSystemFurnitureElementTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc1::IfcSystemFurnitureElementTypeEnum::IfcSystemFurnitureElementTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcSystemFurnitureElementTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -9961,12 +10377,14 @@ Ifc4x3_rc1::IfcTankTypeEnum::IfcTankTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4x3_rc1::IfcTankTypeEnum::IfcTankTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcTankTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc1::IfcTankTypeEnum::IfcTankTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcTankTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -10004,12 +10422,14 @@ Ifc4x3_rc1::IfcTaskDurationEnum::IfcTaskDurationEnum(IfcEntityInstanceData* e) {
}
Ifc4x3_rc1::IfcTaskDurationEnum::IfcTaskDurationEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcTaskDurationEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc1::IfcTaskDurationEnum::IfcTaskDurationEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcTaskDurationEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -10040,12 +10460,14 @@ Ifc4x3_rc1::IfcTaskTypeEnum::IfcTaskTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4x3_rc1::IfcTaskTypeEnum::IfcTaskTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcTaskTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc1::IfcTaskTypeEnum::IfcTaskTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcTaskTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -10087,12 +10509,14 @@ Ifc4x3_rc1::IfcTendonAnchorTypeEnum::IfcTendonAnchorTypeEnum(IfcEntityInstanceDa
}
Ifc4x3_rc1::IfcTendonAnchorTypeEnum::IfcTendonAnchorTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcTendonAnchorTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc1::IfcTendonAnchorTypeEnum::IfcTendonAnchorTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcTendonAnchorTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -10125,12 +10549,14 @@ Ifc4x3_rc1::IfcTendonConduitTypeEnum::IfcTendonConduitTypeEnum(IfcEntityInstance
}
Ifc4x3_rc1::IfcTendonConduitTypeEnum::IfcTendonConduitTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcTendonConduitTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc1::IfcTendonConduitTypeEnum::IfcTendonConduitTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcTendonConduitTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -10165,12 +10591,14 @@ Ifc4x3_rc1::IfcTendonTypeEnum::IfcTendonTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4x3_rc1::IfcTendonTypeEnum::IfcTendonTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcTendonTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc1::IfcTendonTypeEnum::IfcTendonTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcTendonTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -10204,12 +10632,14 @@ Ifc4x3_rc1::IfcTextPath::IfcTextPath(IfcEntityInstanceData* e) {
}
Ifc4x3_rc1::IfcTextPath::IfcTextPath(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcTextPath_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc1::IfcTextPath::IfcTextPath(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcTextPath_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -10241,12 +10671,14 @@ Ifc4x3_rc1::IfcTimeSeriesDataTypeEnum::IfcTimeSeriesDataTypeEnum(IfcEntityInstan
}
Ifc4x3_rc1::IfcTimeSeriesDataTypeEnum::IfcTimeSeriesDataTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcTimeSeriesDataTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc1::IfcTimeSeriesDataTypeEnum::IfcTimeSeriesDataTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcTimeSeriesDataTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -10281,12 +10713,14 @@ Ifc4x3_rc1::IfcTrackElementTypeEnum::IfcTrackElementTypeEnum(IfcEntityInstanceDa
}
Ifc4x3_rc1::IfcTrackElementTypeEnum::IfcTrackElementTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcTrackElementTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc1::IfcTrackElementTypeEnum::IfcTrackElementTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcTrackElementTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -10324,12 +10758,14 @@ Ifc4x3_rc1::IfcTransformerTypeEnum::IfcTransformerTypeEnum(IfcEntityInstanceData
}
Ifc4x3_rc1::IfcTransformerTypeEnum::IfcTransformerTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcTransformerTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc1::IfcTransformerTypeEnum::IfcTransformerTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcTransformerTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -10366,12 +10802,14 @@ Ifc4x3_rc1::IfcTransitionCode::IfcTransitionCode(IfcEntityInstanceData* e) {
}
Ifc4x3_rc1::IfcTransitionCode::IfcTransitionCode(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcTransitionCode_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc1::IfcTransitionCode::IfcTransitionCode(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcTransitionCode_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -10403,12 +10841,14 @@ Ifc4x3_rc1::IfcTransitionCurveType::IfcTransitionCurveType(IfcEntityInstanceData
}
Ifc4x3_rc1::IfcTransitionCurveType::IfcTransitionCurveType(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcTransitionCurveType_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc1::IfcTransitionCurveType::IfcTransitionCurveType(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcTransitionCurveType_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -10442,12 +10882,14 @@ Ifc4x3_rc1::IfcTransportElementFixedTypeEnum::IfcTransportElementFixedTypeEnum(I
}
Ifc4x3_rc1::IfcTransportElementFixedTypeEnum::IfcTransportElementFixedTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcTransportElementFixedTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc1::IfcTransportElementFixedTypeEnum::IfcTransportElementFixedTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcTransportElementFixedTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -10482,12 +10924,14 @@ Ifc4x3_rc1::IfcTransportElementNonFixedTypeEnum::IfcTransportElementNonFixedType
}
Ifc4x3_rc1::IfcTransportElementNonFixedTypeEnum::IfcTransportElementNonFixedTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcTransportElementNonFixedTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc1::IfcTransportElementNonFixedTypeEnum::IfcTransportElementNonFixedTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcTransportElementNonFixedTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -10524,12 +10968,14 @@ Ifc4x3_rc1::IfcTrimmingPreference::IfcTrimmingPreference(IfcEntityInstanceData*
}
Ifc4x3_rc1::IfcTrimmingPreference::IfcTrimmingPreference(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcTrimmingPreference_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc1::IfcTrimmingPreference::IfcTrimmingPreference(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcTrimmingPreference_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -10560,12 +11006,14 @@ Ifc4x3_rc1::IfcTubeBundleTypeEnum::IfcTubeBundleTypeEnum(IfcEntityInstanceData*
}
Ifc4x3_rc1::IfcTubeBundleTypeEnum::IfcTubeBundleTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcTubeBundleTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc1::IfcTubeBundleTypeEnum::IfcTubeBundleTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcTubeBundleTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -10596,12 +11044,14 @@ Ifc4x3_rc1::IfcUnitEnum::IfcUnitEnum(IfcEntityInstanceData* e) {
}
Ifc4x3_rc1::IfcUnitEnum::IfcUnitEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcUnitEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc1::IfcUnitEnum::IfcUnitEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcUnitEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -10659,12 +11109,14 @@ Ifc4x3_rc1::IfcUnitaryControlElementTypeEnum::IfcUnitaryControlElementTypeEnum(I
}
Ifc4x3_rc1::IfcUnitaryControlElementTypeEnum::IfcUnitaryControlElementTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcUnitaryControlElementTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc1::IfcUnitaryControlElementTypeEnum::IfcUnitaryControlElementTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcUnitaryControlElementTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -10703,12 +11155,14 @@ Ifc4x3_rc1::IfcUnitaryEquipmentTypeEnum::IfcUnitaryEquipmentTypeEnum(IfcEntityIn
}
Ifc4x3_rc1::IfcUnitaryEquipmentTypeEnum::IfcUnitaryEquipmentTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcUnitaryEquipmentTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc1::IfcUnitaryEquipmentTypeEnum::IfcUnitaryEquipmentTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcUnitaryEquipmentTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -10743,12 +11197,14 @@ Ifc4x3_rc1::IfcValveTypeEnum::IfcValveTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4x3_rc1::IfcValveTypeEnum::IfcValveTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcValveTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc1::IfcValveTypeEnum::IfcValveTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcValveTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -10799,12 +11255,14 @@ Ifc4x3_rc1::IfcVibrationDamperTypeEnum::IfcVibrationDamperTypeEnum(IfcEntityInst
}
Ifc4x3_rc1::IfcVibrationDamperTypeEnum::IfcVibrationDamperTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcVibrationDamperTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc1::IfcVibrationDamperTypeEnum::IfcVibrationDamperTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcVibrationDamperTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -10840,12 +11298,14 @@ Ifc4x3_rc1::IfcVibrationIsolatorTypeEnum::IfcVibrationIsolatorTypeEnum(IfcEntity
}
Ifc4x3_rc1::IfcVibrationIsolatorTypeEnum::IfcVibrationIsolatorTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcVibrationIsolatorTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc1::IfcVibrationIsolatorTypeEnum::IfcVibrationIsolatorTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcVibrationIsolatorTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -10878,12 +11338,14 @@ Ifc4x3_rc1::IfcVoidingFeatureTypeEnum::IfcVoidingFeatureTypeEnum(IfcEntityInstan
}
Ifc4x3_rc1::IfcVoidingFeatureTypeEnum::IfcVoidingFeatureTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcVoidingFeatureTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc1::IfcVoidingFeatureTypeEnum::IfcVoidingFeatureTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcVoidingFeatureTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -10919,12 +11381,14 @@ Ifc4x3_rc1::IfcWallTypeEnum::IfcWallTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4x3_rc1::IfcWallTypeEnum::IfcWallTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcWallTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc1::IfcWallTypeEnum::IfcWallTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcWallTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -10965,12 +11429,14 @@ Ifc4x3_rc1::IfcWasteTerminalTypeEnum::IfcWasteTerminalTypeEnum(IfcEntityInstance
}
Ifc4x3_rc1::IfcWasteTerminalTypeEnum::IfcWasteTerminalTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcWasteTerminalTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc1::IfcWasteTerminalTypeEnum::IfcWasteTerminalTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcWasteTerminalTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -11007,12 +11473,14 @@ Ifc4x3_rc1::IfcWindowPanelOperationEnum::IfcWindowPanelOperationEnum(IfcEntityIn
}
Ifc4x3_rc1::IfcWindowPanelOperationEnum::IfcWindowPanelOperationEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcWindowPanelOperationEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc1::IfcWindowPanelOperationEnum::IfcWindowPanelOperationEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcWindowPanelOperationEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -11054,12 +11522,14 @@ Ifc4x3_rc1::IfcWindowPanelPositionEnum::IfcWindowPanelPositionEnum(IfcEntityInst
}
Ifc4x3_rc1::IfcWindowPanelPositionEnum::IfcWindowPanelPositionEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcWindowPanelPositionEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc1::IfcWindowPanelPositionEnum::IfcWindowPanelPositionEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcWindowPanelPositionEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -11093,12 +11563,14 @@ Ifc4x3_rc1::IfcWindowStyleConstructionEnum::IfcWindowStyleConstructionEnum(IfcEn
}
Ifc4x3_rc1::IfcWindowStyleConstructionEnum::IfcWindowStyleConstructionEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcWindowStyleConstructionEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc1::IfcWindowStyleConstructionEnum::IfcWindowStyleConstructionEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcWindowStyleConstructionEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -11134,12 +11606,14 @@ Ifc4x3_rc1::IfcWindowStyleOperationEnum::IfcWindowStyleOperationEnum(IfcEntityIn
}
Ifc4x3_rc1::IfcWindowStyleOperationEnum::IfcWindowStyleOperationEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcWindowStyleOperationEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc1::IfcWindowStyleOperationEnum::IfcWindowStyleOperationEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcWindowStyleOperationEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -11178,12 +11652,14 @@ Ifc4x3_rc1::IfcWindowTypeEnum::IfcWindowTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4x3_rc1::IfcWindowTypeEnum::IfcWindowTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcWindowTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc1::IfcWindowTypeEnum::IfcWindowTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcWindowTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -11216,12 +11692,14 @@ Ifc4x3_rc1::IfcWindowTypePartitioningEnum::IfcWindowTypePartitioningEnum(IfcEnti
}
Ifc4x3_rc1::IfcWindowTypePartitioningEnum::IfcWindowTypePartitioningEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcWindowTypePartitioningEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc1::IfcWindowTypePartitioningEnum::IfcWindowTypePartitioningEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcWindowTypePartitioningEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -11260,12 +11738,14 @@ Ifc4x3_rc1::IfcWorkCalendarTypeEnum::IfcWorkCalendarTypeEnum(IfcEntityInstanceDa
}
Ifc4x3_rc1::IfcWorkCalendarTypeEnum::IfcWorkCalendarTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcWorkCalendarTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc1::IfcWorkCalendarTypeEnum::IfcWorkCalendarTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcWorkCalendarTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -11298,12 +11778,14 @@ Ifc4x3_rc1::IfcWorkPlanTypeEnum::IfcWorkPlanTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4x3_rc1::IfcWorkPlanTypeEnum::IfcWorkPlanTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcWorkPlanTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc1::IfcWorkPlanTypeEnum::IfcWorkPlanTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcWorkPlanTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -11336,12 +11818,14 @@ Ifc4x3_rc1::IfcWorkScheduleTypeEnum::IfcWorkScheduleTypeEnum(IfcEntityInstanceDa
}
Ifc4x3_rc1::IfcWorkScheduleTypeEnum::IfcWorkScheduleTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcWorkScheduleTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc1::IfcWorkScheduleTypeEnum::IfcWorkScheduleTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcWorkScheduleTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
diff --git a/src/ifcparse/Ifc4x3_rc2.cpp b/src/ifcparse/Ifc4x3_rc2.cpp
index f0deb684e7..5297eccfc4 100644
--- a/src/ifcparse/Ifc4x3_rc2.cpp
+++ b/src/ifcparse/Ifc4x3_rc2.cpp
@@ -1307,12 +1307,14 @@ Ifc4x3_rc2::IfcActionRequestTypeEnum::IfcActionRequestTypeEnum(IfcEntityInstance
}
Ifc4x3_rc2::IfcActionRequestTypeEnum::IfcActionRequestTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcActionRequestTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc2::IfcActionRequestTypeEnum::IfcActionRequestTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcActionRequestTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -1347,12 +1349,14 @@ Ifc4x3_rc2::IfcActionSourceTypeEnum::IfcActionSourceTypeEnum(IfcEntityInstanceDa
}
Ifc4x3_rc2::IfcActionSourceTypeEnum::IfcActionSourceTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcActionSourceTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc2::IfcActionSourceTypeEnum::IfcActionSourceTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcActionSourceTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -1407,12 +1411,14 @@ Ifc4x3_rc2::IfcActionTypeEnum::IfcActionTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4x3_rc2::IfcActionTypeEnum::IfcActionTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcActionTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc2::IfcActionTypeEnum::IfcActionTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcActionTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -1445,12 +1451,14 @@ Ifc4x3_rc2::IfcActuatorTypeEnum::IfcActuatorTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4x3_rc2::IfcActuatorTypeEnum::IfcActuatorTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcActuatorTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc2::IfcActuatorTypeEnum::IfcActuatorTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcActuatorTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -1485,12 +1493,14 @@ Ifc4x3_rc2::IfcAddressTypeEnum::IfcAddressTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4x3_rc2::IfcAddressTypeEnum::IfcAddressTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcAddressTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc2::IfcAddressTypeEnum::IfcAddressTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcAddressTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -1523,12 +1533,14 @@ Ifc4x3_rc2::IfcAirTerminalBoxTypeEnum::IfcAirTerminalBoxTypeEnum(IfcEntityInstan
}
Ifc4x3_rc2::IfcAirTerminalBoxTypeEnum::IfcAirTerminalBoxTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcAirTerminalBoxTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc2::IfcAirTerminalBoxTypeEnum::IfcAirTerminalBoxTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcAirTerminalBoxTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -1561,12 +1573,14 @@ Ifc4x3_rc2::IfcAirTerminalTypeEnum::IfcAirTerminalTypeEnum(IfcEntityInstanceData
}
Ifc4x3_rc2::IfcAirTerminalTypeEnum::IfcAirTerminalTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcAirTerminalTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc2::IfcAirTerminalTypeEnum::IfcAirTerminalTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcAirTerminalTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -1600,12 +1614,14 @@ Ifc4x3_rc2::IfcAirToAirHeatRecoveryTypeEnum::IfcAirToAirHeatRecoveryTypeEnum(Ifc
}
Ifc4x3_rc2::IfcAirToAirHeatRecoveryTypeEnum::IfcAirToAirHeatRecoveryTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcAirToAirHeatRecoveryTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc2::IfcAirToAirHeatRecoveryTypeEnum::IfcAirToAirHeatRecoveryTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcAirToAirHeatRecoveryTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -1644,12 +1660,14 @@ Ifc4x3_rc2::IfcAlarmTypeEnum::IfcAlarmTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4x3_rc2::IfcAlarmTypeEnum::IfcAlarmTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcAlarmTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc2::IfcAlarmTypeEnum::IfcAlarmTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcAlarmTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -1687,12 +1705,14 @@ Ifc4x3_rc2::IfcAlignmentCantSegmentTypeEnum::IfcAlignmentCantSegmentTypeEnum(Ifc
}
Ifc4x3_rc2::IfcAlignmentCantSegmentTypeEnum::IfcAlignmentCantSegmentTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcAlignmentCantSegmentTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc2::IfcAlignmentCantSegmentTypeEnum::IfcAlignmentCantSegmentTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcAlignmentCantSegmentTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -1727,12 +1747,14 @@ Ifc4x3_rc2::IfcAlignmentHorizontalSegmentTypeEnum::IfcAlignmentHorizontalSegment
}
Ifc4x3_rc2::IfcAlignmentHorizontalSegmentTypeEnum::IfcAlignmentHorizontalSegmentTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcAlignmentHorizontalSegmentTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc2::IfcAlignmentHorizontalSegmentTypeEnum::IfcAlignmentHorizontalSegmentTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcAlignmentHorizontalSegmentTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -1769,12 +1791,14 @@ Ifc4x3_rc2::IfcAlignmentTypeEnum::IfcAlignmentTypeEnum(IfcEntityInstanceData* e)
}
Ifc4x3_rc2::IfcAlignmentTypeEnum::IfcAlignmentTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcAlignmentTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc2::IfcAlignmentTypeEnum::IfcAlignmentTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcAlignmentTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -1804,12 +1828,14 @@ Ifc4x3_rc2::IfcAlignmentVerticalSegmentTypeEnum::IfcAlignmentVerticalSegmentType
}
Ifc4x3_rc2::IfcAlignmentVerticalSegmentTypeEnum::IfcAlignmentVerticalSegmentTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcAlignmentVerticalSegmentTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc2::IfcAlignmentVerticalSegmentTypeEnum::IfcAlignmentVerticalSegmentTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcAlignmentVerticalSegmentTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -1841,12 +1867,14 @@ Ifc4x3_rc2::IfcAnalysisModelTypeEnum::IfcAnalysisModelTypeEnum(IfcEntityInstance
}
Ifc4x3_rc2::IfcAnalysisModelTypeEnum::IfcAnalysisModelTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcAnalysisModelTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc2::IfcAnalysisModelTypeEnum::IfcAnalysisModelTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcAnalysisModelTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -1879,12 +1907,14 @@ Ifc4x3_rc2::IfcAnalysisTheoryTypeEnum::IfcAnalysisTheoryTypeEnum(IfcEntityInstan
}
Ifc4x3_rc2::IfcAnalysisTheoryTypeEnum::IfcAnalysisTheoryTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcAnalysisTheoryTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc2::IfcAnalysisTheoryTypeEnum::IfcAnalysisTheoryTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcAnalysisTheoryTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -1918,12 +1948,14 @@ Ifc4x3_rc2::IfcAnnotationTypeEnum::IfcAnnotationTypeEnum(IfcEntityInstanceData*
}
Ifc4x3_rc2::IfcAnnotationTypeEnum::IfcAnnotationTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcAnnotationTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc2::IfcAnnotationTypeEnum::IfcAnnotationTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcAnnotationTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -1962,12 +1994,14 @@ Ifc4x3_rc2::IfcArithmeticOperatorEnum::IfcArithmeticOperatorEnum(IfcEntityInstan
}
Ifc4x3_rc2::IfcArithmeticOperatorEnum::IfcArithmeticOperatorEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcArithmeticOperatorEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc2::IfcArithmeticOperatorEnum::IfcArithmeticOperatorEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcArithmeticOperatorEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -1999,12 +2033,14 @@ Ifc4x3_rc2::IfcAssemblyPlaceEnum::IfcAssemblyPlaceEnum(IfcEntityInstanceData* e)
}
Ifc4x3_rc2::IfcAssemblyPlaceEnum::IfcAssemblyPlaceEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcAssemblyPlaceEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc2::IfcAssemblyPlaceEnum::IfcAssemblyPlaceEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcAssemblyPlaceEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -2035,12 +2071,14 @@ Ifc4x3_rc2::IfcAudioVisualApplianceTypeEnum::IfcAudioVisualApplianceTypeEnum(Ifc
}
Ifc4x3_rc2::IfcAudioVisualApplianceTypeEnum::IfcAudioVisualApplianceTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcAudioVisualApplianceTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc2::IfcAudioVisualApplianceTypeEnum::IfcAudioVisualApplianceTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcAudioVisualApplianceTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -2082,12 +2120,14 @@ Ifc4x3_rc2::IfcBSplineCurveForm::IfcBSplineCurveForm(IfcEntityInstanceData* e) {
}
Ifc4x3_rc2::IfcBSplineCurveForm::IfcBSplineCurveForm(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcBSplineCurveForm_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc2::IfcBSplineCurveForm::IfcBSplineCurveForm(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcBSplineCurveForm_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -2121,12 +2161,14 @@ Ifc4x3_rc2::IfcBSplineSurfaceForm::IfcBSplineSurfaceForm(IfcEntityInstanceData*
}
Ifc4x3_rc2::IfcBSplineSurfaceForm::IfcBSplineSurfaceForm(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcBSplineSurfaceForm_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc2::IfcBSplineSurfaceForm::IfcBSplineSurfaceForm(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcBSplineSurfaceForm_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -2165,12 +2207,14 @@ Ifc4x3_rc2::IfcBeamTypeEnum::IfcBeamTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4x3_rc2::IfcBeamTypeEnum::IfcBeamTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcBeamTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc2::IfcBeamTypeEnum::IfcBeamTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcBeamTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -2212,12 +2256,14 @@ Ifc4x3_rc2::IfcBearingTypeDisplacementEnum::IfcBearingTypeDisplacementEnum(IfcEn
}
Ifc4x3_rc2::IfcBearingTypeDisplacementEnum::IfcBearingTypeDisplacementEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcBearingTypeDisplacementEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc2::IfcBearingTypeDisplacementEnum::IfcBearingTypeDisplacementEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcBearingTypeDisplacementEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -2250,12 +2296,14 @@ Ifc4x3_rc2::IfcBearingTypeEnum::IfcBearingTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4x3_rc2::IfcBearingTypeEnum::IfcBearingTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcBearingTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc2::IfcBearingTypeEnum::IfcBearingTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcBearingTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -2293,12 +2341,14 @@ Ifc4x3_rc2::IfcBenchmarkEnum::IfcBenchmarkEnum(IfcEntityInstanceData* e) {
}
Ifc4x3_rc2::IfcBenchmarkEnum::IfcBenchmarkEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcBenchmarkEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc2::IfcBenchmarkEnum::IfcBenchmarkEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcBenchmarkEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -2336,12 +2386,14 @@ Ifc4x3_rc2::IfcBoilerTypeEnum::IfcBoilerTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4x3_rc2::IfcBoilerTypeEnum::IfcBoilerTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcBoilerTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc2::IfcBoilerTypeEnum::IfcBoilerTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcBoilerTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -2373,12 +2425,14 @@ Ifc4x3_rc2::IfcBooleanOperator::IfcBooleanOperator(IfcEntityInstanceData* e) {
}
Ifc4x3_rc2::IfcBooleanOperator::IfcBooleanOperator(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcBooleanOperator_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc2::IfcBooleanOperator::IfcBooleanOperator(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcBooleanOperator_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -2409,12 +2463,14 @@ Ifc4x3_rc2::IfcBridgePartTypeEnum::IfcBridgePartTypeEnum(IfcEntityInstanceData*
}
Ifc4x3_rc2::IfcBridgePartTypeEnum::IfcBridgePartTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcBridgePartTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc2::IfcBridgePartTypeEnum::IfcBridgePartTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcBridgePartTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -2454,12 +2510,14 @@ Ifc4x3_rc2::IfcBridgeTypeEnum::IfcBridgeTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4x3_rc2::IfcBridgeTypeEnum::IfcBridgeTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcBridgeTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc2::IfcBridgeTypeEnum::IfcBridgeTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcBridgeTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -2497,12 +2555,14 @@ Ifc4x3_rc2::IfcBuildingElementPartTypeEnum::IfcBuildingElementPartTypeEnum(IfcEn
}
Ifc4x3_rc2::IfcBuildingElementPartTypeEnum::IfcBuildingElementPartTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcBuildingElementPartTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc2::IfcBuildingElementPartTypeEnum::IfcBuildingElementPartTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcBuildingElementPartTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -2537,12 +2597,14 @@ Ifc4x3_rc2::IfcBuildingElementProxyTypeEnum::IfcBuildingElementProxyTypeEnum(Ifc
}
Ifc4x3_rc2::IfcBuildingElementProxyTypeEnum::IfcBuildingElementProxyTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcBuildingElementProxyTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc2::IfcBuildingElementProxyTypeEnum::IfcBuildingElementProxyTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcBuildingElementProxyTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -2577,12 +2639,14 @@ Ifc4x3_rc2::IfcBuildingSystemTypeEnum::IfcBuildingSystemTypeEnum(IfcEntityInstan
}
Ifc4x3_rc2::IfcBuildingSystemTypeEnum::IfcBuildingSystemTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcBuildingSystemTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc2::IfcBuildingSystemTypeEnum::IfcBuildingSystemTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcBuildingSystemTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -2621,12 +2685,14 @@ Ifc4x3_rc2::IfcBuiltSystemTypeEnum::IfcBuiltSystemTypeEnum(IfcEntityInstanceData
}
Ifc4x3_rc2::IfcBuiltSystemTypeEnum::IfcBuiltSystemTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcBuiltSystemTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc2::IfcBuiltSystemTypeEnum::IfcBuiltSystemTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcBuiltSystemTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -2668,12 +2734,14 @@ Ifc4x3_rc2::IfcBurnerTypeEnum::IfcBurnerTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4x3_rc2::IfcBurnerTypeEnum::IfcBurnerTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcBurnerTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc2::IfcBurnerTypeEnum::IfcBurnerTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcBurnerTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -2703,12 +2771,14 @@ Ifc4x3_rc2::IfcCableCarrierFittingTypeEnum::IfcCableCarrierFittingTypeEnum(IfcEn
}
Ifc4x3_rc2::IfcCableCarrierFittingTypeEnum::IfcCableCarrierFittingTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcCableCarrierFittingTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc2::IfcCableCarrierFittingTypeEnum::IfcCableCarrierFittingTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcCableCarrierFittingTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -2742,12 +2812,14 @@ Ifc4x3_rc2::IfcCableCarrierSegmentTypeEnum::IfcCableCarrierSegmentTypeEnum(IfcEn
}
Ifc4x3_rc2::IfcCableCarrierSegmentTypeEnum::IfcCableCarrierSegmentTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcCableCarrierSegmentTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc2::IfcCableCarrierSegmentTypeEnum::IfcCableCarrierSegmentTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcCableCarrierSegmentTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -2784,12 +2856,14 @@ Ifc4x3_rc2::IfcCableFittingTypeEnum::IfcCableFittingTypeEnum(IfcEntityInstanceDa
}
Ifc4x3_rc2::IfcCableFittingTypeEnum::IfcCableFittingTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcCableFittingTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc2::IfcCableFittingTypeEnum::IfcCableFittingTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcCableFittingTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -2825,12 +2899,14 @@ Ifc4x3_rc2::IfcCableSegmentTypeEnum::IfcCableSegmentTypeEnum(IfcEntityInstanceDa
}
Ifc4x3_rc2::IfcCableSegmentTypeEnum::IfcCableSegmentTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcCableSegmentTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc2::IfcCableSegmentTypeEnum::IfcCableSegmentTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcCableSegmentTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -2870,12 +2946,14 @@ Ifc4x3_rc2::IfcCaissonFoundationTypeEnum::IfcCaissonFoundationTypeEnum(IfcEntity
}
Ifc4x3_rc2::IfcCaissonFoundationTypeEnum::IfcCaissonFoundationTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcCaissonFoundationTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc2::IfcCaissonFoundationTypeEnum::IfcCaissonFoundationTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcCaissonFoundationTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -2907,12 +2985,14 @@ Ifc4x3_rc2::IfcChangeActionEnum::IfcChangeActionEnum(IfcEntityInstanceData* e) {
}
Ifc4x3_rc2::IfcChangeActionEnum::IfcChangeActionEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcChangeActionEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc2::IfcChangeActionEnum::IfcChangeActionEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcChangeActionEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -2945,12 +3025,14 @@ Ifc4x3_rc2::IfcChillerTypeEnum::IfcChillerTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4x3_rc2::IfcChillerTypeEnum::IfcChillerTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcChillerTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc2::IfcChillerTypeEnum::IfcChillerTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcChillerTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -2983,12 +3065,14 @@ Ifc4x3_rc2::IfcChimneyTypeEnum::IfcChimneyTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4x3_rc2::IfcChimneyTypeEnum::IfcChimneyTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcChimneyTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc2::IfcChimneyTypeEnum::IfcChimneyTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcChimneyTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -3018,12 +3102,14 @@ Ifc4x3_rc2::IfcCoilTypeEnum::IfcCoilTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4x3_rc2::IfcCoilTypeEnum::IfcCoilTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcCoilTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc2::IfcCoilTypeEnum::IfcCoilTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcCoilTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -3060,12 +3146,14 @@ Ifc4x3_rc2::IfcColumnTypeEnum::IfcColumnTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4x3_rc2::IfcColumnTypeEnum::IfcColumnTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcColumnTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc2::IfcColumnTypeEnum::IfcColumnTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcColumnTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -3100,12 +3188,14 @@ Ifc4x3_rc2::IfcCommunicationsApplianceTypeEnum::IfcCommunicationsApplianceTypeEn
}
Ifc4x3_rc2::IfcCommunicationsApplianceTypeEnum::IfcCommunicationsApplianceTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcCommunicationsApplianceTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc2::IfcCommunicationsApplianceTypeEnum::IfcCommunicationsApplianceTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcCommunicationsApplianceTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -3156,12 +3246,14 @@ Ifc4x3_rc2::IfcComplexPropertyTemplateTypeEnum::IfcComplexPropertyTemplateTypeEn
}
Ifc4x3_rc2::IfcComplexPropertyTemplateTypeEnum::IfcComplexPropertyTemplateTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcComplexPropertyTemplateTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc2::IfcComplexPropertyTemplateTypeEnum::IfcComplexPropertyTemplateTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcComplexPropertyTemplateTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -3191,12 +3283,14 @@ Ifc4x3_rc2::IfcCompressorTypeEnum::IfcCompressorTypeEnum(IfcEntityInstanceData*
}
Ifc4x3_rc2::IfcCompressorTypeEnum::IfcCompressorTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcCompressorTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc2::IfcCompressorTypeEnum::IfcCompressorTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcCompressorTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -3241,12 +3335,14 @@ Ifc4x3_rc2::IfcCondenserTypeEnum::IfcCondenserTypeEnum(IfcEntityInstanceData* e)
}
Ifc4x3_rc2::IfcCondenserTypeEnum::IfcCondenserTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcCondenserTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc2::IfcCondenserTypeEnum::IfcCondenserTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcCondenserTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -3283,12 +3379,14 @@ Ifc4x3_rc2::IfcConnectionTypeEnum::IfcConnectionTypeEnum(IfcEntityInstanceData*
}
Ifc4x3_rc2::IfcConnectionTypeEnum::IfcConnectionTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcConnectionTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc2::IfcConnectionTypeEnum::IfcConnectionTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcConnectionTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -3320,12 +3418,14 @@ Ifc4x3_rc2::IfcConstraintEnum::IfcConstraintEnum(IfcEntityInstanceData* e) {
}
Ifc4x3_rc2::IfcConstraintEnum::IfcConstraintEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcConstraintEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc2::IfcConstraintEnum::IfcConstraintEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcConstraintEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -3358,12 +3458,14 @@ Ifc4x3_rc2::IfcConstructionEquipmentResourceTypeEnum::IfcConstructionEquipmentRe
}
Ifc4x3_rc2::IfcConstructionEquipmentResourceTypeEnum::IfcConstructionEquipmentResourceTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcConstructionEquipmentResourceTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc2::IfcConstructionEquipmentResourceTypeEnum::IfcConstructionEquipmentResourceTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcConstructionEquipmentResourceTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -3401,12 +3503,14 @@ Ifc4x3_rc2::IfcConstructionMaterialResourceTypeEnum::IfcConstructionMaterialReso
}
Ifc4x3_rc2::IfcConstructionMaterialResourceTypeEnum::IfcConstructionMaterialResourceTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcConstructionMaterialResourceTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc2::IfcConstructionMaterialResourceTypeEnum::IfcConstructionMaterialResourceTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcConstructionMaterialResourceTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -3445,12 +3549,14 @@ Ifc4x3_rc2::IfcConstructionProductResourceTypeEnum::IfcConstructionProductResour
}
Ifc4x3_rc2::IfcConstructionProductResourceTypeEnum::IfcConstructionProductResourceTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcConstructionProductResourceTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc2::IfcConstructionProductResourceTypeEnum::IfcConstructionProductResourceTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcConstructionProductResourceTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -3482,12 +3588,14 @@ Ifc4x3_rc2::IfcControllerTypeEnum::IfcControllerTypeEnum(IfcEntityInstanceData*
}
Ifc4x3_rc2::IfcControllerTypeEnum::IfcControllerTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcControllerTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc2::IfcControllerTypeEnum::IfcControllerTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcControllerTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -3522,12 +3630,14 @@ Ifc4x3_rc2::IfcConveyorSegmentTypeEnum::IfcConveyorSegmentTypeEnum(IfcEntityInst
}
Ifc4x3_rc2::IfcConveyorSegmentTypeEnum::IfcConveyorSegmentTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcConveyorSegmentTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc2::IfcConveyorSegmentTypeEnum::IfcConveyorSegmentTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcConveyorSegmentTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -3561,12 +3671,14 @@ Ifc4x3_rc2::IfcCooledBeamTypeEnum::IfcCooledBeamTypeEnum(IfcEntityInstanceData*
}
Ifc4x3_rc2::IfcCooledBeamTypeEnum::IfcCooledBeamTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcCooledBeamTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc2::IfcCooledBeamTypeEnum::IfcCooledBeamTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcCooledBeamTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -3598,12 +3710,14 @@ Ifc4x3_rc2::IfcCoolingTowerTypeEnum::IfcCoolingTowerTypeEnum(IfcEntityInstanceDa
}
Ifc4x3_rc2::IfcCoolingTowerTypeEnum::IfcCoolingTowerTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcCoolingTowerTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc2::IfcCoolingTowerTypeEnum::IfcCoolingTowerTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcCoolingTowerTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -3636,12 +3750,14 @@ Ifc4x3_rc2::IfcCostItemTypeEnum::IfcCostItemTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4x3_rc2::IfcCostItemTypeEnum::IfcCostItemTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcCostItemTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc2::IfcCostItemTypeEnum::IfcCostItemTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcCostItemTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -3671,12 +3787,14 @@ Ifc4x3_rc2::IfcCostScheduleTypeEnum::IfcCostScheduleTypeEnum(IfcEntityInstanceDa
}
Ifc4x3_rc2::IfcCostScheduleTypeEnum::IfcCostScheduleTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcCostScheduleTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc2::IfcCostScheduleTypeEnum::IfcCostScheduleTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcCostScheduleTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -3713,12 +3831,14 @@ Ifc4x3_rc2::IfcCourseTypeEnum::IfcCourseTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4x3_rc2::IfcCourseTypeEnum::IfcCourseTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcCourseTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc2::IfcCourseTypeEnum::IfcCourseTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcCourseTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -3754,12 +3874,14 @@ Ifc4x3_rc2::IfcCoveringTypeEnum::IfcCoveringTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4x3_rc2::IfcCoveringTypeEnum::IfcCoveringTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcCoveringTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc2::IfcCoveringTypeEnum::IfcCoveringTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcCoveringTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -3800,12 +3922,14 @@ Ifc4x3_rc2::IfcCrewResourceTypeEnum::IfcCrewResourceTypeEnum(IfcEntityInstanceDa
}
Ifc4x3_rc2::IfcCrewResourceTypeEnum::IfcCrewResourceTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcCrewResourceTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc2::IfcCrewResourceTypeEnum::IfcCrewResourceTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcCrewResourceTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -3837,12 +3961,14 @@ Ifc4x3_rc2::IfcCurtainWallTypeEnum::IfcCurtainWallTypeEnum(IfcEntityInstanceData
}
Ifc4x3_rc2::IfcCurtainWallTypeEnum::IfcCurtainWallTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcCurtainWallTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc2::IfcCurtainWallTypeEnum::IfcCurtainWallTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcCurtainWallTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -3872,12 +3998,14 @@ Ifc4x3_rc2::IfcCurveInterpolationEnum::IfcCurveInterpolationEnum(IfcEntityInstan
}
Ifc4x3_rc2::IfcCurveInterpolationEnum::IfcCurveInterpolationEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcCurveInterpolationEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc2::IfcCurveInterpolationEnum::IfcCurveInterpolationEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcCurveInterpolationEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -3909,12 +4037,14 @@ Ifc4x3_rc2::IfcDamperTypeEnum::IfcDamperTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4x3_rc2::IfcDamperTypeEnum::IfcDamperTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcDamperTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc2::IfcDamperTypeEnum::IfcDamperTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcDamperTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -3955,12 +4085,14 @@ Ifc4x3_rc2::IfcDataOriginEnum::IfcDataOriginEnum(IfcEntityInstanceData* e) {
}
Ifc4x3_rc2::IfcDataOriginEnum::IfcDataOriginEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcDataOriginEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc2::IfcDataOriginEnum::IfcDataOriginEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcDataOriginEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -3993,12 +4125,14 @@ Ifc4x3_rc2::IfcDerivedUnitEnum::IfcDerivedUnitEnum(IfcEntityInstanceData* e) {
}
Ifc4x3_rc2::IfcDerivedUnitEnum::IfcDerivedUnitEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcDerivedUnitEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc2::IfcDerivedUnitEnum::IfcDerivedUnitEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcDerivedUnitEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -4079,12 +4213,14 @@ Ifc4x3_rc2::IfcDirectionSenseEnum::IfcDirectionSenseEnum(IfcEntityInstanceData*
}
Ifc4x3_rc2::IfcDirectionSenseEnum::IfcDirectionSenseEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcDirectionSenseEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc2::IfcDirectionSenseEnum::IfcDirectionSenseEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcDirectionSenseEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -4114,12 +4250,14 @@ Ifc4x3_rc2::IfcDiscreteAccessoryTypeEnum::IfcDiscreteAccessoryTypeEnum(IfcEntity
}
Ifc4x3_rc2::IfcDiscreteAccessoryTypeEnum::IfcDiscreteAccessoryTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcDiscreteAccessoryTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc2::IfcDiscreteAccessoryTypeEnum::IfcDiscreteAccessoryTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcDiscreteAccessoryTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -4166,12 +4304,14 @@ Ifc4x3_rc2::IfcDistributionBoardTypeEnum::IfcDistributionBoardTypeEnum(IfcEntity
}
Ifc4x3_rc2::IfcDistributionBoardTypeEnum::IfcDistributionBoardTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcDistributionBoardTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc2::IfcDistributionBoardTypeEnum::IfcDistributionBoardTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcDistributionBoardTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -4206,12 +4346,14 @@ Ifc4x3_rc2::IfcDistributionChamberElementTypeEnum::IfcDistributionChamberElement
}
Ifc4x3_rc2::IfcDistributionChamberElementTypeEnum::IfcDistributionChamberElementTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcDistributionChamberElementTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc2::IfcDistributionChamberElementTypeEnum::IfcDistributionChamberElementTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcDistributionChamberElementTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -4249,12 +4391,14 @@ Ifc4x3_rc2::IfcDistributionPortTypeEnum::IfcDistributionPortTypeEnum(IfcEntityIn
}
Ifc4x3_rc2::IfcDistributionPortTypeEnum::IfcDistributionPortTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcDistributionPortTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc2::IfcDistributionPortTypeEnum::IfcDistributionPortTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcDistributionPortTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -4289,12 +4433,14 @@ Ifc4x3_rc2::IfcDistributionSystemEnum::IfcDistributionSystemEnum(IfcEntityInstan
}
Ifc4x3_rc2::IfcDistributionSystemEnum::IfcDistributionSystemEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcDistributionSystemEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc2::IfcDistributionSystemEnum::IfcDistributionSystemEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcDistributionSystemEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -4369,12 +4515,14 @@ Ifc4x3_rc2::IfcDocumentConfidentialityEnum::IfcDocumentConfidentialityEnum(IfcEn
}
Ifc4x3_rc2::IfcDocumentConfidentialityEnum::IfcDocumentConfidentialityEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcDocumentConfidentialityEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc2::IfcDocumentConfidentialityEnum::IfcDocumentConfidentialityEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcDocumentConfidentialityEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -4408,12 +4556,14 @@ Ifc4x3_rc2::IfcDocumentStatusEnum::IfcDocumentStatusEnum(IfcEntityInstanceData*
}
Ifc4x3_rc2::IfcDocumentStatusEnum::IfcDocumentStatusEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcDocumentStatusEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc2::IfcDocumentStatusEnum::IfcDocumentStatusEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcDocumentStatusEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -4446,12 +4596,14 @@ Ifc4x3_rc2::IfcDoorPanelOperationEnum::IfcDoorPanelOperationEnum(IfcEntityInstan
}
Ifc4x3_rc2::IfcDoorPanelOperationEnum::IfcDoorPanelOperationEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcDoorPanelOperationEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc2::IfcDoorPanelOperationEnum::IfcDoorPanelOperationEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcDoorPanelOperationEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -4488,12 +4640,14 @@ Ifc4x3_rc2::IfcDoorPanelPositionEnum::IfcDoorPanelPositionEnum(IfcEntityInstance
}
Ifc4x3_rc2::IfcDoorPanelPositionEnum::IfcDoorPanelPositionEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcDoorPanelPositionEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc2::IfcDoorPanelPositionEnum::IfcDoorPanelPositionEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcDoorPanelPositionEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -4525,12 +4679,14 @@ Ifc4x3_rc2::IfcDoorStyleConstructionEnum::IfcDoorStyleConstructionEnum(IfcEntity
}
Ifc4x3_rc2::IfcDoorStyleConstructionEnum::IfcDoorStyleConstructionEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcDoorStyleConstructionEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc2::IfcDoorStyleConstructionEnum::IfcDoorStyleConstructionEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcDoorStyleConstructionEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -4567,12 +4723,14 @@ Ifc4x3_rc2::IfcDoorStyleOperationEnum::IfcDoorStyleOperationEnum(IfcEntityInstan
}
Ifc4x3_rc2::IfcDoorStyleOperationEnum::IfcDoorStyleOperationEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcDoorStyleOperationEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc2::IfcDoorStyleOperationEnum::IfcDoorStyleOperationEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcDoorStyleOperationEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -4618,12 +4776,14 @@ Ifc4x3_rc2::IfcDoorTypeEnum::IfcDoorTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4x3_rc2::IfcDoorTypeEnum::IfcDoorTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcDoorTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc2::IfcDoorTypeEnum::IfcDoorTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcDoorTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -4658,12 +4818,14 @@ Ifc4x3_rc2::IfcDoorTypeOperationEnum::IfcDoorTypeOperationEnum(IfcEntityInstance
}
Ifc4x3_rc2::IfcDoorTypeOperationEnum::IfcDoorTypeOperationEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcDoorTypeOperationEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc2::IfcDoorTypeOperationEnum::IfcDoorTypeOperationEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcDoorTypeOperationEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -4711,12 +4873,14 @@ Ifc4x3_rc2::IfcDuctFittingTypeEnum::IfcDuctFittingTypeEnum(IfcEntityInstanceData
}
Ifc4x3_rc2::IfcDuctFittingTypeEnum::IfcDuctFittingTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcDuctFittingTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc2::IfcDuctFittingTypeEnum::IfcDuctFittingTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcDuctFittingTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -4753,12 +4917,14 @@ Ifc4x3_rc2::IfcDuctSegmentTypeEnum::IfcDuctSegmentTypeEnum(IfcEntityInstanceData
}
Ifc4x3_rc2::IfcDuctSegmentTypeEnum::IfcDuctSegmentTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcDuctSegmentTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc2::IfcDuctSegmentTypeEnum::IfcDuctSegmentTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcDuctSegmentTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -4790,12 +4956,14 @@ Ifc4x3_rc2::IfcDuctSilencerTypeEnum::IfcDuctSilencerTypeEnum(IfcEntityInstanceDa
}
Ifc4x3_rc2::IfcDuctSilencerTypeEnum::IfcDuctSilencerTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcDuctSilencerTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc2::IfcDuctSilencerTypeEnum::IfcDuctSilencerTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcDuctSilencerTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -4828,12 +4996,14 @@ Ifc4x3_rc2::IfcEarthworksCutTypeEnum::IfcEarthworksCutTypeEnum(IfcEntityInstance
}
Ifc4x3_rc2::IfcEarthworksCutTypeEnum::IfcEarthworksCutTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcEarthworksCutTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc2::IfcEarthworksCutTypeEnum::IfcEarthworksCutTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcEarthworksCutTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -4872,12 +5042,14 @@ Ifc4x3_rc2::IfcEarthworksFillTypeEnum::IfcEarthworksFillTypeEnum(IfcEntityInstan
}
Ifc4x3_rc2::IfcEarthworksFillTypeEnum::IfcEarthworksFillTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcEarthworksFillTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc2::IfcEarthworksFillTypeEnum::IfcEarthworksFillTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcEarthworksFillTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -4914,12 +5086,14 @@ Ifc4x3_rc2::IfcElectricApplianceTypeEnum::IfcElectricApplianceTypeEnum(IfcEntity
}
Ifc4x3_rc2::IfcElectricApplianceTypeEnum::IfcElectricApplianceTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcElectricApplianceTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc2::IfcElectricApplianceTypeEnum::IfcElectricApplianceTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcElectricApplianceTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -4965,12 +5139,14 @@ Ifc4x3_rc2::IfcElectricDistributionBoardTypeEnum::IfcElectricDistributionBoardTy
}
Ifc4x3_rc2::IfcElectricDistributionBoardTypeEnum::IfcElectricDistributionBoardTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcElectricDistributionBoardTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc2::IfcElectricDistributionBoardTypeEnum::IfcElectricDistributionBoardTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcElectricDistributionBoardTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -5004,12 +5180,14 @@ Ifc4x3_rc2::IfcElectricFlowStorageDeviceTypeEnum::IfcElectricFlowStorageDeviceTy
}
Ifc4x3_rc2::IfcElectricFlowStorageDeviceTypeEnum::IfcElectricFlowStorageDeviceTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcElectricFlowStorageDeviceTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc2::IfcElectricFlowStorageDeviceTypeEnum::IfcElectricFlowStorageDeviceTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcElectricFlowStorageDeviceTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -5048,12 +5226,14 @@ Ifc4x3_rc2::IfcElectricFlowTreatmentDeviceTypeEnum::IfcElectricFlowTreatmentDevi
}
Ifc4x3_rc2::IfcElectricFlowTreatmentDeviceTypeEnum::IfcElectricFlowTreatmentDeviceTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcElectricFlowTreatmentDeviceTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc2::IfcElectricFlowTreatmentDeviceTypeEnum::IfcElectricFlowTreatmentDeviceTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcElectricFlowTreatmentDeviceTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -5084,12 +5264,14 @@ Ifc4x3_rc2::IfcElectricGeneratorTypeEnum::IfcElectricGeneratorTypeEnum(IfcEntity
}
Ifc4x3_rc2::IfcElectricGeneratorTypeEnum::IfcElectricGeneratorTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcElectricGeneratorTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc2::IfcElectricGeneratorTypeEnum::IfcElectricGeneratorTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcElectricGeneratorTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -5122,12 +5304,14 @@ Ifc4x3_rc2::IfcElectricMotorTypeEnum::IfcElectricMotorTypeEnum(IfcEntityInstance
}
Ifc4x3_rc2::IfcElectricMotorTypeEnum::IfcElectricMotorTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcElectricMotorTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc2::IfcElectricMotorTypeEnum::IfcElectricMotorTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcElectricMotorTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -5162,12 +5346,14 @@ Ifc4x3_rc2::IfcElectricTimeControlTypeEnum::IfcElectricTimeControlTypeEnum(IfcEn
}
Ifc4x3_rc2::IfcElectricTimeControlTypeEnum::IfcElectricTimeControlTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcElectricTimeControlTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc2::IfcElectricTimeControlTypeEnum::IfcElectricTimeControlTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcElectricTimeControlTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -5200,12 +5386,14 @@ Ifc4x3_rc2::IfcElementAssemblyTypeEnum::IfcElementAssemblyTypeEnum(IfcEntityInst
}
Ifc4x3_rc2::IfcElementAssemblyTypeEnum::IfcElementAssemblyTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcElementAssemblyTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc2::IfcElementAssemblyTypeEnum::IfcElementAssemblyTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcElementAssemblyTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -5263,12 +5451,14 @@ Ifc4x3_rc2::IfcElementCompositionEnum::IfcElementCompositionEnum(IfcEntityInstan
}
Ifc4x3_rc2::IfcElementCompositionEnum::IfcElementCompositionEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcElementCompositionEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc2::IfcElementCompositionEnum::IfcElementCompositionEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcElementCompositionEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -5299,12 +5489,14 @@ Ifc4x3_rc2::IfcEngineTypeEnum::IfcEngineTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4x3_rc2::IfcEngineTypeEnum::IfcEngineTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcEngineTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc2::IfcEngineTypeEnum::IfcEngineTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcEngineTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -5336,12 +5528,14 @@ Ifc4x3_rc2::IfcEvaporativeCoolerTypeEnum::IfcEvaporativeCoolerTypeEnum(IfcEntity
}
Ifc4x3_rc2::IfcEvaporativeCoolerTypeEnum::IfcEvaporativeCoolerTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcEvaporativeCoolerTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc2::IfcEvaporativeCoolerTypeEnum::IfcEvaporativeCoolerTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcEvaporativeCoolerTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -5380,12 +5574,14 @@ Ifc4x3_rc2::IfcEvaporatorTypeEnum::IfcEvaporatorTypeEnum(IfcEntityInstanceData*
}
Ifc4x3_rc2::IfcEvaporatorTypeEnum::IfcEvaporatorTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcEvaporatorTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc2::IfcEvaporatorTypeEnum::IfcEvaporatorTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcEvaporatorTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -5421,12 +5617,14 @@ Ifc4x3_rc2::IfcEventTriggerTypeEnum::IfcEventTriggerTypeEnum(IfcEntityInstanceDa
}
Ifc4x3_rc2::IfcEventTriggerTypeEnum::IfcEventTriggerTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcEventTriggerTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc2::IfcEventTriggerTypeEnum::IfcEventTriggerTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcEventTriggerTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -5460,12 +5658,14 @@ Ifc4x3_rc2::IfcEventTypeEnum::IfcEventTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4x3_rc2::IfcEventTypeEnum::IfcEventTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcEventTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc2::IfcEventTypeEnum::IfcEventTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcEventTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -5498,12 +5698,14 @@ Ifc4x3_rc2::IfcExternalSpatialElementTypeEnum::IfcExternalSpatialElementTypeEnum
}
Ifc4x3_rc2::IfcExternalSpatialElementTypeEnum::IfcExternalSpatialElementTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcExternalSpatialElementTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc2::IfcExternalSpatialElementTypeEnum::IfcExternalSpatialElementTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcExternalSpatialElementTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -5537,12 +5739,14 @@ Ifc4x3_rc2::IfcFacilityPartCommonTypeEnum::IfcFacilityPartCommonTypeEnum(IfcEnti
}
Ifc4x3_rc2::IfcFacilityPartCommonTypeEnum::IfcFacilityPartCommonTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcFacilityPartCommonTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc2::IfcFacilityPartCommonTypeEnum::IfcFacilityPartCommonTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcFacilityPartCommonTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -5580,12 +5784,14 @@ Ifc4x3_rc2::IfcFacilityUsageEnum::IfcFacilityUsageEnum(IfcEntityInstanceData* e)
}
Ifc4x3_rc2::IfcFacilityUsageEnum::IfcFacilityUsageEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcFacilityUsageEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc2::IfcFacilityUsageEnum::IfcFacilityUsageEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcFacilityUsageEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -5619,12 +5825,14 @@ Ifc4x3_rc2::IfcFanTypeEnum::IfcFanTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4x3_rc2::IfcFanTypeEnum::IfcFanTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcFanTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc2::IfcFanTypeEnum::IfcFanTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcFanTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -5661,12 +5869,14 @@ Ifc4x3_rc2::IfcFastenerTypeEnum::IfcFastenerTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4x3_rc2::IfcFastenerTypeEnum::IfcFastenerTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcFastenerTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc2::IfcFastenerTypeEnum::IfcFastenerTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcFastenerTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -5699,12 +5909,14 @@ Ifc4x3_rc2::IfcFilterTypeEnum::IfcFilterTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4x3_rc2::IfcFilterTypeEnum::IfcFilterTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcFilterTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc2::IfcFilterTypeEnum::IfcFilterTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcFilterTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -5740,12 +5952,14 @@ Ifc4x3_rc2::IfcFireSuppressionTerminalTypeEnum::IfcFireSuppressionTerminalTypeEn
}
Ifc4x3_rc2::IfcFireSuppressionTerminalTypeEnum::IfcFireSuppressionTerminalTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcFireSuppressionTerminalTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc2::IfcFireSuppressionTerminalTypeEnum::IfcFireSuppressionTerminalTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcFireSuppressionTerminalTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -5780,12 +5994,14 @@ Ifc4x3_rc2::IfcFlowDirectionEnum::IfcFlowDirectionEnum(IfcEntityInstanceData* e)
}
Ifc4x3_rc2::IfcFlowDirectionEnum::IfcFlowDirectionEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcFlowDirectionEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc2::IfcFlowDirectionEnum::IfcFlowDirectionEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcFlowDirectionEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -5817,12 +6033,14 @@ Ifc4x3_rc2::IfcFlowInstrumentTypeEnum::IfcFlowInstrumentTypeEnum(IfcEntityInstan
}
Ifc4x3_rc2::IfcFlowInstrumentTypeEnum::IfcFlowInstrumentTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcFlowInstrumentTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc2::IfcFlowInstrumentTypeEnum::IfcFlowInstrumentTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcFlowInstrumentTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -5862,12 +6080,14 @@ Ifc4x3_rc2::IfcFlowMeterTypeEnum::IfcFlowMeterTypeEnum(IfcEntityInstanceData* e)
}
Ifc4x3_rc2::IfcFlowMeterTypeEnum::IfcFlowMeterTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcFlowMeterTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc2::IfcFlowMeterTypeEnum::IfcFlowMeterTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcFlowMeterTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -5901,12 +6121,14 @@ Ifc4x3_rc2::IfcFootingTypeEnum::IfcFootingTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4x3_rc2::IfcFootingTypeEnum::IfcFootingTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcFootingTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc2::IfcFootingTypeEnum::IfcFootingTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcFootingTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -5941,12 +6163,14 @@ Ifc4x3_rc2::IfcFurnitureTypeEnum::IfcFurnitureTypeEnum(IfcEntityInstanceData* e)
}
Ifc4x3_rc2::IfcFurnitureTypeEnum::IfcFurnitureTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcFurnitureTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc2::IfcFurnitureTypeEnum::IfcFurnitureTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcFurnitureTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -5984,12 +6208,14 @@ Ifc4x3_rc2::IfcGeographicElementTypeEnum::IfcGeographicElementTypeEnum(IfcEntity
}
Ifc4x3_rc2::IfcGeographicElementTypeEnum::IfcGeographicElementTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcGeographicElementTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc2::IfcGeographicElementTypeEnum::IfcGeographicElementTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcGeographicElementTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -6021,12 +6247,14 @@ Ifc4x3_rc2::IfcGeometricProjectionEnum::IfcGeometricProjectionEnum(IfcEntityInst
}
Ifc4x3_rc2::IfcGeometricProjectionEnum::IfcGeometricProjectionEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcGeometricProjectionEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc2::IfcGeometricProjectionEnum::IfcGeometricProjectionEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcGeometricProjectionEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -6063,12 +6291,14 @@ Ifc4x3_rc2::IfcGlobalOrLocalEnum::IfcGlobalOrLocalEnum(IfcEntityInstanceData* e)
}
Ifc4x3_rc2::IfcGlobalOrLocalEnum::IfcGlobalOrLocalEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcGlobalOrLocalEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc2::IfcGlobalOrLocalEnum::IfcGlobalOrLocalEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcGlobalOrLocalEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -6098,12 +6328,14 @@ Ifc4x3_rc2::IfcGridTypeEnum::IfcGridTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4x3_rc2::IfcGridTypeEnum::IfcGridTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcGridTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc2::IfcGridTypeEnum::IfcGridTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcGridTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -6137,12 +6369,14 @@ Ifc4x3_rc2::IfcHeatExchangerTypeEnum::IfcHeatExchangerTypeEnum(IfcEntityInstance
}
Ifc4x3_rc2::IfcHeatExchangerTypeEnum::IfcHeatExchangerTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcHeatExchangerTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc2::IfcHeatExchangerTypeEnum::IfcHeatExchangerTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcHeatExchangerTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -6175,12 +6409,14 @@ Ifc4x3_rc2::IfcHumidifierTypeEnum::IfcHumidifierTypeEnum(IfcEntityInstanceData*
}
Ifc4x3_rc2::IfcHumidifierTypeEnum::IfcHumidifierTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcHumidifierTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc2::IfcHumidifierTypeEnum::IfcHumidifierTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcHumidifierTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -6223,12 +6459,14 @@ Ifc4x3_rc2::IfcImpactProtectionDeviceTypeEnum::IfcImpactProtectionDeviceTypeEnum
}
Ifc4x3_rc2::IfcImpactProtectionDeviceTypeEnum::IfcImpactProtectionDeviceTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcImpactProtectionDeviceTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc2::IfcImpactProtectionDeviceTypeEnum::IfcImpactProtectionDeviceTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcImpactProtectionDeviceTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -6262,12 +6500,14 @@ Ifc4x3_rc2::IfcInterceptorTypeEnum::IfcInterceptorTypeEnum(IfcEntityInstanceData
}
Ifc4x3_rc2::IfcInterceptorTypeEnum::IfcInterceptorTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcInterceptorTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc2::IfcInterceptorTypeEnum::IfcInterceptorTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcInterceptorTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -6301,12 +6541,14 @@ Ifc4x3_rc2::IfcInternalOrExternalEnum::IfcInternalOrExternalEnum(IfcEntityInstan
}
Ifc4x3_rc2::IfcInternalOrExternalEnum::IfcInternalOrExternalEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcInternalOrExternalEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc2::IfcInternalOrExternalEnum::IfcInternalOrExternalEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcInternalOrExternalEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -6340,12 +6582,14 @@ Ifc4x3_rc2::IfcInventoryTypeEnum::IfcInventoryTypeEnum(IfcEntityInstanceData* e)
}
Ifc4x3_rc2::IfcInventoryTypeEnum::IfcInventoryTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcInventoryTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc2::IfcInventoryTypeEnum::IfcInventoryTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcInventoryTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -6378,12 +6622,14 @@ Ifc4x3_rc2::IfcJunctionBoxTypeEnum::IfcJunctionBoxTypeEnum(IfcEntityInstanceData
}
Ifc4x3_rc2::IfcJunctionBoxTypeEnum::IfcJunctionBoxTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcJunctionBoxTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc2::IfcJunctionBoxTypeEnum::IfcJunctionBoxTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcJunctionBoxTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -6415,12 +6661,14 @@ Ifc4x3_rc2::IfcKnotType::IfcKnotType(IfcEntityInstanceData* e) {
}
Ifc4x3_rc2::IfcKnotType::IfcKnotType(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcKnotType_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc2::IfcKnotType::IfcKnotType(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcKnotType_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -6452,12 +6700,14 @@ Ifc4x3_rc2::IfcLaborResourceTypeEnum::IfcLaborResourceTypeEnum(IfcEntityInstance
}
Ifc4x3_rc2::IfcLaborResourceTypeEnum::IfcLaborResourceTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcLaborResourceTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc2::IfcLaborResourceTypeEnum::IfcLaborResourceTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcLaborResourceTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -6506,12 +6756,14 @@ Ifc4x3_rc2::IfcLampTypeEnum::IfcLampTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4x3_rc2::IfcLampTypeEnum::IfcLampTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcLampTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc2::IfcLampTypeEnum::IfcLampTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcLampTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -6550,12 +6802,14 @@ Ifc4x3_rc2::IfcLayerSetDirectionEnum::IfcLayerSetDirectionEnum(IfcEntityInstance
}
Ifc4x3_rc2::IfcLayerSetDirectionEnum::IfcLayerSetDirectionEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcLayerSetDirectionEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc2::IfcLayerSetDirectionEnum::IfcLayerSetDirectionEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcLayerSetDirectionEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -6586,12 +6840,14 @@ Ifc4x3_rc2::IfcLightDistributionCurveEnum::IfcLightDistributionCurveEnum(IfcEnti
}
Ifc4x3_rc2::IfcLightDistributionCurveEnum::IfcLightDistributionCurveEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcLightDistributionCurveEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc2::IfcLightDistributionCurveEnum::IfcLightDistributionCurveEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcLightDistributionCurveEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -6623,12 +6879,14 @@ Ifc4x3_rc2::IfcLightEmissionSourceEnum::IfcLightEmissionSourceEnum(IfcEntityInst
}
Ifc4x3_rc2::IfcLightEmissionSourceEnum::IfcLightEmissionSourceEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcLightEmissionSourceEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc2::IfcLightEmissionSourceEnum::IfcLightEmissionSourceEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcLightEmissionSourceEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -6667,12 +6925,14 @@ Ifc4x3_rc2::IfcLightFixtureTypeEnum::IfcLightFixtureTypeEnum(IfcEntityInstanceDa
}
Ifc4x3_rc2::IfcLightFixtureTypeEnum::IfcLightFixtureTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcLightFixtureTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc2::IfcLightFixtureTypeEnum::IfcLightFixtureTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcLightFixtureTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -6705,12 +6965,14 @@ Ifc4x3_rc2::IfcLiquidTerminalTypeEnum::IfcLiquidTerminalTypeEnum(IfcEntityInstan
}
Ifc4x3_rc2::IfcLiquidTerminalTypeEnum::IfcLiquidTerminalTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcLiquidTerminalTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc2::IfcLiquidTerminalTypeEnum::IfcLiquidTerminalTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcLiquidTerminalTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -6742,12 +7004,14 @@ Ifc4x3_rc2::IfcLoadGroupTypeEnum::IfcLoadGroupTypeEnum(IfcEntityInstanceData* e)
}
Ifc4x3_rc2::IfcLoadGroupTypeEnum::IfcLoadGroupTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcLoadGroupTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc2::IfcLoadGroupTypeEnum::IfcLoadGroupTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcLoadGroupTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -6780,12 +7044,14 @@ Ifc4x3_rc2::IfcLogicalOperatorEnum::IfcLogicalOperatorEnum(IfcEntityInstanceData
}
Ifc4x3_rc2::IfcLogicalOperatorEnum::IfcLogicalOperatorEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcLogicalOperatorEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc2::IfcLogicalOperatorEnum::IfcLogicalOperatorEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcLogicalOperatorEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -6818,12 +7084,14 @@ Ifc4x3_rc2::IfcMarineFacilityTypeEnum::IfcMarineFacilityTypeEnum(IfcEntityInstan
}
Ifc4x3_rc2::IfcMarineFacilityTypeEnum::IfcMarineFacilityTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcMarineFacilityTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc2::IfcMarineFacilityTypeEnum::IfcMarineFacilityTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcMarineFacilityTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -6872,12 +7140,14 @@ Ifc4x3_rc2::IfcMarinePartTypeEnum::IfcMarinePartTypeEnum(IfcEntityInstanceData*
}
Ifc4x3_rc2::IfcMarinePartTypeEnum::IfcMarinePartTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcMarinePartTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc2::IfcMarinePartTypeEnum::IfcMarinePartTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcMarinePartTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -6931,12 +7201,14 @@ Ifc4x3_rc2::IfcMechanicalFastenerTypeEnum::IfcMechanicalFastenerTypeEnum(IfcEnti
}
Ifc4x3_rc2::IfcMechanicalFastenerTypeEnum::IfcMechanicalFastenerTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcMechanicalFastenerTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc2::IfcMechanicalFastenerTypeEnum::IfcMechanicalFastenerTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcMechanicalFastenerTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -6981,12 +7253,14 @@ Ifc4x3_rc2::IfcMedicalDeviceTypeEnum::IfcMedicalDeviceTypeEnum(IfcEntityInstance
}
Ifc4x3_rc2::IfcMedicalDeviceTypeEnum::IfcMedicalDeviceTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcMedicalDeviceTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc2::IfcMedicalDeviceTypeEnum::IfcMedicalDeviceTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcMedicalDeviceTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -7021,12 +7295,14 @@ Ifc4x3_rc2::IfcMemberTypeEnum::IfcMemberTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4x3_rc2::IfcMemberTypeEnum::IfcMemberTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcMemberTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc2::IfcMemberTypeEnum::IfcMemberTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcMemberTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -7075,12 +7351,14 @@ Ifc4x3_rc2::IfcMobileTelecommunicationsApplianceTypeEnum::IfcMobileTelecommunica
}
Ifc4x3_rc2::IfcMobileTelecommunicationsApplianceTypeEnum::IfcMobileTelecommunicationsApplianceTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcMobileTelecommunicationsApplianceTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc2::IfcMobileTelecommunicationsApplianceTypeEnum::IfcMobileTelecommunicationsApplianceTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcMobileTelecommunicationsApplianceTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -7117,12 +7395,14 @@ Ifc4x3_rc2::IfcMooringDeviceTypeEnum::IfcMooringDeviceTypeEnum(IfcEntityInstance
}
Ifc4x3_rc2::IfcMooringDeviceTypeEnum::IfcMooringDeviceTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcMooringDeviceTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc2::IfcMooringDeviceTypeEnum::IfcMooringDeviceTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcMooringDeviceTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -7157,12 +7437,14 @@ Ifc4x3_rc2::IfcMotorConnectionTypeEnum::IfcMotorConnectionTypeEnum(IfcEntityInst
}
Ifc4x3_rc2::IfcMotorConnectionTypeEnum::IfcMotorConnectionTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcMotorConnectionTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc2::IfcMotorConnectionTypeEnum::IfcMotorConnectionTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcMotorConnectionTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -7195,12 +7477,14 @@ Ifc4x3_rc2::IfcNavigationElementTypeEnum::IfcNavigationElementTypeEnum(IfcEntity
}
Ifc4x3_rc2::IfcNavigationElementTypeEnum::IfcNavigationElementTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcNavigationElementTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc2::IfcNavigationElementTypeEnum::IfcNavigationElementTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcNavigationElementTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -7232,12 +7516,14 @@ Ifc4x3_rc2::IfcNullStyle::IfcNullStyle(IfcEntityInstanceData* e) {
}
Ifc4x3_rc2::IfcNullStyle::IfcNullStyle(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcNullStyle_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc2::IfcNullStyle::IfcNullStyle(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcNullStyle_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -7266,12 +7552,14 @@ Ifc4x3_rc2::IfcObjectTypeEnum::IfcObjectTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4x3_rc2::IfcObjectTypeEnum::IfcObjectTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcObjectTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc2::IfcObjectTypeEnum::IfcObjectTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcObjectTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -7307,12 +7595,14 @@ Ifc4x3_rc2::IfcObjectiveEnum::IfcObjectiveEnum(IfcEntityInstanceData* e) {
}
Ifc4x3_rc2::IfcObjectiveEnum::IfcObjectiveEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcObjectiveEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc2::IfcObjectiveEnum::IfcObjectiveEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcObjectiveEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -7353,12 +7643,14 @@ Ifc4x3_rc2::IfcOccupantTypeEnum::IfcOccupantTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4x3_rc2::IfcOccupantTypeEnum::IfcOccupantTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcOccupantTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc2::IfcOccupantTypeEnum::IfcOccupantTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcOccupantTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -7395,12 +7687,14 @@ Ifc4x3_rc2::IfcOpeningElementTypeEnum::IfcOpeningElementTypeEnum(IfcEntityInstan
}
Ifc4x3_rc2::IfcOpeningElementTypeEnum::IfcOpeningElementTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcOpeningElementTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc2::IfcOpeningElementTypeEnum::IfcOpeningElementTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcOpeningElementTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -7432,12 +7726,14 @@ Ifc4x3_rc2::IfcOutletTypeEnum::IfcOutletTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4x3_rc2::IfcOutletTypeEnum::IfcOutletTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcOutletTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc2::IfcOutletTypeEnum::IfcOutletTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcOutletTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -7472,12 +7768,14 @@ Ifc4x3_rc2::IfcPerformanceHistoryTypeEnum::IfcPerformanceHistoryTypeEnum(IfcEnti
}
Ifc4x3_rc2::IfcPerformanceHistoryTypeEnum::IfcPerformanceHistoryTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcPerformanceHistoryTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc2::IfcPerformanceHistoryTypeEnum::IfcPerformanceHistoryTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcPerformanceHistoryTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -7507,12 +7805,14 @@ Ifc4x3_rc2::IfcPermeableCoveringOperationEnum::IfcPermeableCoveringOperationEnum
}
Ifc4x3_rc2::IfcPermeableCoveringOperationEnum::IfcPermeableCoveringOperationEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcPermeableCoveringOperationEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc2::IfcPermeableCoveringOperationEnum::IfcPermeableCoveringOperationEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcPermeableCoveringOperationEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -7545,12 +7845,14 @@ Ifc4x3_rc2::IfcPermitTypeEnum::IfcPermitTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4x3_rc2::IfcPermitTypeEnum::IfcPermitTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcPermitTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc2::IfcPermitTypeEnum::IfcPermitTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcPermitTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -7583,12 +7885,14 @@ Ifc4x3_rc2::IfcPhysicalOrVirtualEnum::IfcPhysicalOrVirtualEnum(IfcEntityInstance
}
Ifc4x3_rc2::IfcPhysicalOrVirtualEnum::IfcPhysicalOrVirtualEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcPhysicalOrVirtualEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc2::IfcPhysicalOrVirtualEnum::IfcPhysicalOrVirtualEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcPhysicalOrVirtualEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -7619,12 +7923,14 @@ Ifc4x3_rc2::IfcPileConstructionEnum::IfcPileConstructionEnum(IfcEntityInstanceDa
}
Ifc4x3_rc2::IfcPileConstructionEnum::IfcPileConstructionEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcPileConstructionEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc2::IfcPileConstructionEnum::IfcPileConstructionEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcPileConstructionEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -7658,12 +7964,14 @@ Ifc4x3_rc2::IfcPileTypeEnum::IfcPileTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4x3_rc2::IfcPileTypeEnum::IfcPileTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcPileTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc2::IfcPileTypeEnum::IfcPileTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcPileTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -7699,12 +8007,14 @@ Ifc4x3_rc2::IfcPipeFittingTypeEnum::IfcPipeFittingTypeEnum(IfcEntityInstanceData
}
Ifc4x3_rc2::IfcPipeFittingTypeEnum::IfcPipeFittingTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcPipeFittingTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc2::IfcPipeFittingTypeEnum::IfcPipeFittingTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcPipeFittingTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -7741,12 +8051,14 @@ Ifc4x3_rc2::IfcPipeSegmentTypeEnum::IfcPipeSegmentTypeEnum(IfcEntityInstanceData
}
Ifc4x3_rc2::IfcPipeSegmentTypeEnum::IfcPipeSegmentTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcPipeSegmentTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc2::IfcPipeSegmentTypeEnum::IfcPipeSegmentTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcPipeSegmentTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -7781,12 +8093,14 @@ Ifc4x3_rc2::IfcPlateTypeEnum::IfcPlateTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4x3_rc2::IfcPlateTypeEnum::IfcPlateTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcPlateTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc2::IfcPlateTypeEnum::IfcPlateTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcPlateTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -7825,12 +8139,14 @@ Ifc4x3_rc2::IfcPreferredSurfaceCurveRepresentation::IfcPreferredSurfaceCurveRepr
}
Ifc4x3_rc2::IfcPreferredSurfaceCurveRepresentation::IfcPreferredSurfaceCurveRepresentation(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcPreferredSurfaceCurveRepresentation_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc2::IfcPreferredSurfaceCurveRepresentation::IfcPreferredSurfaceCurveRepresentation(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcPreferredSurfaceCurveRepresentation_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -7861,12 +8177,14 @@ Ifc4x3_rc2::IfcProcedureTypeEnum::IfcProcedureTypeEnum(IfcEntityInstanceData* e)
}
Ifc4x3_rc2::IfcProcedureTypeEnum::IfcProcedureTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcProcedureTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc2::IfcProcedureTypeEnum::IfcProcedureTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcProcedureTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -7903,12 +8221,14 @@ Ifc4x3_rc2::IfcProfileTypeEnum::IfcProfileTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4x3_rc2::IfcProfileTypeEnum::IfcProfileTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcProfileTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc2::IfcProfileTypeEnum::IfcProfileTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcProfileTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -7938,12 +8258,14 @@ Ifc4x3_rc2::IfcProjectOrderTypeEnum::IfcProjectOrderTypeEnum(IfcEntityInstanceDa
}
Ifc4x3_rc2::IfcProjectOrderTypeEnum::IfcProjectOrderTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcProjectOrderTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc2::IfcProjectOrderTypeEnum::IfcProjectOrderTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcProjectOrderTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -7978,12 +8300,14 @@ Ifc4x3_rc2::IfcProjectedOrTrueLengthEnum::IfcProjectedOrTrueLengthEnum(IfcEntity
}
Ifc4x3_rc2::IfcProjectedOrTrueLengthEnum::IfcProjectedOrTrueLengthEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcProjectedOrTrueLengthEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc2::IfcProjectedOrTrueLengthEnum::IfcProjectedOrTrueLengthEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcProjectedOrTrueLengthEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -8013,12 +8337,14 @@ Ifc4x3_rc2::IfcProjectionElementTypeEnum::IfcProjectionElementTypeEnum(IfcEntity
}
Ifc4x3_rc2::IfcProjectionElementTypeEnum::IfcProjectionElementTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcProjectionElementTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc2::IfcProjectionElementTypeEnum::IfcProjectionElementTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcProjectionElementTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -8050,12 +8376,14 @@ Ifc4x3_rc2::IfcPropertySetTemplateTypeEnum::IfcPropertySetTemplateTypeEnum(IfcEn
}
Ifc4x3_rc2::IfcPropertySetTemplateTypeEnum::IfcPropertySetTemplateTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcPropertySetTemplateTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc2::IfcPropertySetTemplateTypeEnum::IfcPropertySetTemplateTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcPropertySetTemplateTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -8091,12 +8419,14 @@ Ifc4x3_rc2::IfcProtectiveDeviceTrippingUnitTypeEnum::IfcProtectiveDeviceTripping
}
Ifc4x3_rc2::IfcProtectiveDeviceTrippingUnitTypeEnum::IfcProtectiveDeviceTrippingUnitTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcProtectiveDeviceTrippingUnitTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc2::IfcProtectiveDeviceTrippingUnitTypeEnum::IfcProtectiveDeviceTrippingUnitTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcProtectiveDeviceTrippingUnitTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -8130,12 +8460,14 @@ Ifc4x3_rc2::IfcProtectiveDeviceTypeEnum::IfcProtectiveDeviceTypeEnum(IfcEntityIn
}
Ifc4x3_rc2::IfcProtectiveDeviceTypeEnum::IfcProtectiveDeviceTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcProtectiveDeviceTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc2::IfcProtectiveDeviceTypeEnum::IfcProtectiveDeviceTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcProtectiveDeviceTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -8175,12 +8507,14 @@ Ifc4x3_rc2::IfcPumpTypeEnum::IfcPumpTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4x3_rc2::IfcPumpTypeEnum::IfcPumpTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcPumpTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc2::IfcPumpTypeEnum::IfcPumpTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcPumpTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -8217,12 +8551,14 @@ Ifc4x3_rc2::IfcRailTypeEnum::IfcRailTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4x3_rc2::IfcRailTypeEnum::IfcRailTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcRailTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc2::IfcRailTypeEnum::IfcRailTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcRailTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -8258,12 +8594,14 @@ Ifc4x3_rc2::IfcRailingTypeEnum::IfcRailingTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4x3_rc2::IfcRailingTypeEnum::IfcRailingTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcRailingTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc2::IfcRailingTypeEnum::IfcRailingTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcRailingTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -8297,12 +8635,14 @@ Ifc4x3_rc2::IfcRailwayPartTypeEnum::IfcRailwayPartTypeEnum(IfcEntityInstanceData
}
Ifc4x3_rc2::IfcRailwayPartTypeEnum::IfcRailwayPartTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcRailwayPartTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc2::IfcRailwayPartTypeEnum::IfcRailwayPartTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcRailwayPartTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -8340,12 +8680,14 @@ Ifc4x3_rc2::IfcRampFlightTypeEnum::IfcRampFlightTypeEnum(IfcEntityInstanceData*
}
Ifc4x3_rc2::IfcRampFlightTypeEnum::IfcRampFlightTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcRampFlightTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc2::IfcRampFlightTypeEnum::IfcRampFlightTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcRampFlightTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -8377,12 +8719,14 @@ Ifc4x3_rc2::IfcRampTypeEnum::IfcRampTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4x3_rc2::IfcRampTypeEnum::IfcRampTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcRampTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc2::IfcRampTypeEnum::IfcRampTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcRampTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -8418,12 +8762,14 @@ Ifc4x3_rc2::IfcRecurrenceTypeEnum::IfcRecurrenceTypeEnum(IfcEntityInstanceData*
}
Ifc4x3_rc2::IfcRecurrenceTypeEnum::IfcRecurrenceTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcRecurrenceTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc2::IfcRecurrenceTypeEnum::IfcRecurrenceTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcRecurrenceTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -8459,12 +8805,14 @@ Ifc4x3_rc2::IfcReferentTypeEnum::IfcReferentTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4x3_rc2::IfcReferentTypeEnum::IfcReferentTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcReferentTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc2::IfcReferentTypeEnum::IfcReferentTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcReferentTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -8498,12 +8846,14 @@ Ifc4x3_rc2::IfcReflectanceMethodEnum::IfcReflectanceMethodEnum(IfcEntityInstance
}
Ifc4x3_rc2::IfcReflectanceMethodEnum::IfcReflectanceMethodEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcReflectanceMethodEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc2::IfcReflectanceMethodEnum::IfcReflectanceMethodEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcReflectanceMethodEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -8541,12 +8891,14 @@ Ifc4x3_rc2::IfcReinforcedSoilTypeEnum::IfcReinforcedSoilTypeEnum(IfcEntityInstan
}
Ifc4x3_rc2::IfcReinforcedSoilTypeEnum::IfcReinforcedSoilTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcReinforcedSoilTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc2::IfcReinforcedSoilTypeEnum::IfcReinforcedSoilTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcReinforcedSoilTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -8582,12 +8934,14 @@ Ifc4x3_rc2::IfcReinforcingBarRoleEnum::IfcReinforcingBarRoleEnum(IfcEntityInstan
}
Ifc4x3_rc2::IfcReinforcingBarRoleEnum::IfcReinforcingBarRoleEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcReinforcingBarRoleEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc2::IfcReinforcingBarRoleEnum::IfcReinforcingBarRoleEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcReinforcingBarRoleEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -8625,12 +8979,14 @@ Ifc4x3_rc2::IfcReinforcingBarSurfaceEnum::IfcReinforcingBarSurfaceEnum(IfcEntity
}
Ifc4x3_rc2::IfcReinforcingBarSurfaceEnum::IfcReinforcingBarSurfaceEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcReinforcingBarSurfaceEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc2::IfcReinforcingBarSurfaceEnum::IfcReinforcingBarSurfaceEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcReinforcingBarSurfaceEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -8660,12 +9016,14 @@ Ifc4x3_rc2::IfcReinforcingBarTypeEnum::IfcReinforcingBarTypeEnum(IfcEntityInstan
}
Ifc4x3_rc2::IfcReinforcingBarTypeEnum::IfcReinforcingBarTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcReinforcingBarTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc2::IfcReinforcingBarTypeEnum::IfcReinforcingBarTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcReinforcingBarTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -8704,12 +9062,14 @@ Ifc4x3_rc2::IfcReinforcingMeshTypeEnum::IfcReinforcingMeshTypeEnum(IfcEntityInst
}
Ifc4x3_rc2::IfcReinforcingMeshTypeEnum::IfcReinforcingMeshTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcReinforcingMeshTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc2::IfcReinforcingMeshTypeEnum::IfcReinforcingMeshTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcReinforcingMeshTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -8739,12 +9099,14 @@ Ifc4x3_rc2::IfcRoadPartTypeEnum::IfcRoadPartTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4x3_rc2::IfcRoadPartTypeEnum::IfcRoadPartTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcRoadPartTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc2::IfcRoadPartTypeEnum::IfcRoadPartTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcRoadPartTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -8798,12 +9160,14 @@ Ifc4x3_rc2::IfcRoleEnum::IfcRoleEnum(IfcEntityInstanceData* e) {
}
Ifc4x3_rc2::IfcRoleEnum::IfcRoleEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcRoleEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc2::IfcRoleEnum::IfcRoleEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcRoleEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -8854,12 +9218,14 @@ Ifc4x3_rc2::IfcRoofTypeEnum::IfcRoofTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4x3_rc2::IfcRoofTypeEnum::IfcRoofTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcRoofTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc2::IfcRoofTypeEnum::IfcRoofTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcRoofTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -8902,12 +9268,14 @@ Ifc4x3_rc2::IfcSIPrefix::IfcSIPrefix(IfcEntityInstanceData* e) {
}
Ifc4x3_rc2::IfcSIPrefix::IfcSIPrefix(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcSIPrefix_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc2::IfcSIPrefix::IfcSIPrefix(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcSIPrefix_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -8951,12 +9319,14 @@ Ifc4x3_rc2::IfcSIUnitName::IfcSIUnitName(IfcEntityInstanceData* e) {
}
Ifc4x3_rc2::IfcSIUnitName::IfcSIUnitName(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcSIUnitName_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc2::IfcSIUnitName::IfcSIUnitName(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcSIUnitName_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -9014,12 +9384,14 @@ Ifc4x3_rc2::IfcSanitaryTerminalTypeEnum::IfcSanitaryTerminalTypeEnum(IfcEntityIn
}
Ifc4x3_rc2::IfcSanitaryTerminalTypeEnum::IfcSanitaryTerminalTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcSanitaryTerminalTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc2::IfcSanitaryTerminalTypeEnum::IfcSanitaryTerminalTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcSanitaryTerminalTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -9059,12 +9431,14 @@ Ifc4x3_rc2::IfcSectionTypeEnum::IfcSectionTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4x3_rc2::IfcSectionTypeEnum::IfcSectionTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcSectionTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc2::IfcSectionTypeEnum::IfcSectionTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcSectionTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -9094,12 +9468,14 @@ Ifc4x3_rc2::IfcSensorTypeEnum::IfcSensorTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4x3_rc2::IfcSensorTypeEnum::IfcSensorTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcSensorTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc2::IfcSensorTypeEnum::IfcSensorTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcSensorTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -9161,12 +9537,14 @@ Ifc4x3_rc2::IfcSequenceEnum::IfcSequenceEnum(IfcEntityInstanceData* e) {
}
Ifc4x3_rc2::IfcSequenceEnum::IfcSequenceEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcSequenceEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc2::IfcSequenceEnum::IfcSequenceEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcSequenceEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -9200,12 +9578,14 @@ Ifc4x3_rc2::IfcShadingDeviceTypeEnum::IfcShadingDeviceTypeEnum(IfcEntityInstance
}
Ifc4x3_rc2::IfcShadingDeviceTypeEnum::IfcShadingDeviceTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcShadingDeviceTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc2::IfcShadingDeviceTypeEnum::IfcShadingDeviceTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcShadingDeviceTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -9238,12 +9618,14 @@ Ifc4x3_rc2::IfcSignTypeEnum::IfcSignTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4x3_rc2::IfcSignTypeEnum::IfcSignTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcSignTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc2::IfcSignTypeEnum::IfcSignTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcSignTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -9276,12 +9658,14 @@ Ifc4x3_rc2::IfcSignalTypeEnum::IfcSignalTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4x3_rc2::IfcSignalTypeEnum::IfcSignalTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcSignalTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc2::IfcSignalTypeEnum::IfcSignalTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcSignalTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -9314,12 +9698,14 @@ Ifc4x3_rc2::IfcSimplePropertyTemplateTypeEnum::IfcSimplePropertyTemplateTypeEnum
}
Ifc4x3_rc2::IfcSimplePropertyTemplateTypeEnum::IfcSimplePropertyTemplateTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcSimplePropertyTemplateTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc2::IfcSimplePropertyTemplateTypeEnum::IfcSimplePropertyTemplateTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcSimplePropertyTemplateTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -9359,12 +9745,14 @@ Ifc4x3_rc2::IfcSlabTypeEnum::IfcSlabTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4x3_rc2::IfcSlabTypeEnum::IfcSlabTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcSlabTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc2::IfcSlabTypeEnum::IfcSlabTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcSlabTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -9403,12 +9791,14 @@ Ifc4x3_rc2::IfcSolarDeviceTypeEnum::IfcSolarDeviceTypeEnum(IfcEntityInstanceData
}
Ifc4x3_rc2::IfcSolarDeviceTypeEnum::IfcSolarDeviceTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcSolarDeviceTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc2::IfcSolarDeviceTypeEnum::IfcSolarDeviceTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcSolarDeviceTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -9440,12 +9830,14 @@ Ifc4x3_rc2::IfcSpaceHeaterTypeEnum::IfcSpaceHeaterTypeEnum(IfcEntityInstanceData
}
Ifc4x3_rc2::IfcSpaceHeaterTypeEnum::IfcSpaceHeaterTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcSpaceHeaterTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc2::IfcSpaceHeaterTypeEnum::IfcSpaceHeaterTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcSpaceHeaterTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -9477,12 +9869,14 @@ Ifc4x3_rc2::IfcSpaceTypeEnum::IfcSpaceTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4x3_rc2::IfcSpaceTypeEnum::IfcSpaceTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcSpaceTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc2::IfcSpaceTypeEnum::IfcSpaceTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcSpaceTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -9517,12 +9911,14 @@ Ifc4x3_rc2::IfcSpatialZoneTypeEnum::IfcSpatialZoneTypeEnum(IfcEntityInstanceData
}
Ifc4x3_rc2::IfcSpatialZoneTypeEnum::IfcSpatialZoneTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcSpatialZoneTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc2::IfcSpatialZoneTypeEnum::IfcSpatialZoneTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcSpatialZoneTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -9561,12 +9957,14 @@ Ifc4x3_rc2::IfcStackTerminalTypeEnum::IfcStackTerminalTypeEnum(IfcEntityInstance
}
Ifc4x3_rc2::IfcStackTerminalTypeEnum::IfcStackTerminalTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcStackTerminalTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc2::IfcStackTerminalTypeEnum::IfcStackTerminalTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcStackTerminalTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -9599,12 +9997,14 @@ Ifc4x3_rc2::IfcStairFlightTypeEnum::IfcStairFlightTypeEnum(IfcEntityInstanceData
}
Ifc4x3_rc2::IfcStairFlightTypeEnum::IfcStairFlightTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcStairFlightTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc2::IfcStairFlightTypeEnum::IfcStairFlightTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcStairFlightTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -9639,12 +10039,14 @@ Ifc4x3_rc2::IfcStairTypeEnum::IfcStairTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4x3_rc2::IfcStairTypeEnum::IfcStairTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcStairTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc2::IfcStairTypeEnum::IfcStairTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcStairTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -9689,12 +10091,14 @@ Ifc4x3_rc2::IfcStateEnum::IfcStateEnum(IfcEntityInstanceData* e) {
}
Ifc4x3_rc2::IfcStateEnum::IfcStateEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcStateEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc2::IfcStateEnum::IfcStateEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcStateEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -9727,12 +10131,14 @@ Ifc4x3_rc2::IfcStructuralCurveActivityTypeEnum::IfcStructuralCurveActivityTypeEn
}
Ifc4x3_rc2::IfcStructuralCurveActivityTypeEnum::IfcStructuralCurveActivityTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcStructuralCurveActivityTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc2::IfcStructuralCurveActivityTypeEnum::IfcStructuralCurveActivityTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcStructuralCurveActivityTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -9769,12 +10175,14 @@ Ifc4x3_rc2::IfcStructuralCurveMemberTypeEnum::IfcStructuralCurveMemberTypeEnum(I
}
Ifc4x3_rc2::IfcStructuralCurveMemberTypeEnum::IfcStructuralCurveMemberTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcStructuralCurveMemberTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc2::IfcStructuralCurveMemberTypeEnum::IfcStructuralCurveMemberTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcStructuralCurveMemberTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -9809,12 +10217,14 @@ Ifc4x3_rc2::IfcStructuralSurfaceActivityTypeEnum::IfcStructuralSurfaceActivityTy
}
Ifc4x3_rc2::IfcStructuralSurfaceActivityTypeEnum::IfcStructuralSurfaceActivityTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcStructuralSurfaceActivityTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc2::IfcStructuralSurfaceActivityTypeEnum::IfcStructuralSurfaceActivityTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcStructuralSurfaceActivityTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -9848,12 +10258,14 @@ Ifc4x3_rc2::IfcStructuralSurfaceMemberTypeEnum::IfcStructuralSurfaceMemberTypeEn
}
Ifc4x3_rc2::IfcStructuralSurfaceMemberTypeEnum::IfcStructuralSurfaceMemberTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcStructuralSurfaceMemberTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc2::IfcStructuralSurfaceMemberTypeEnum::IfcStructuralSurfaceMemberTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcStructuralSurfaceMemberTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -9886,12 +10298,14 @@ Ifc4x3_rc2::IfcSubContractResourceTypeEnum::IfcSubContractResourceTypeEnum(IfcEn
}
Ifc4x3_rc2::IfcSubContractResourceTypeEnum::IfcSubContractResourceTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcSubContractResourceTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc2::IfcSubContractResourceTypeEnum::IfcSubContractResourceTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcSubContractResourceTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -9923,12 +10337,14 @@ Ifc4x3_rc2::IfcSurfaceFeatureTypeEnum::IfcSurfaceFeatureTypeEnum(IfcEntityInstan
}
Ifc4x3_rc2::IfcSurfaceFeatureTypeEnum::IfcSurfaceFeatureTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcSurfaceFeatureTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc2::IfcSurfaceFeatureTypeEnum::IfcSurfaceFeatureTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcSurfaceFeatureTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -9969,12 +10385,14 @@ Ifc4x3_rc2::IfcSurfaceSide::IfcSurfaceSide(IfcEntityInstanceData* e) {
}
Ifc4x3_rc2::IfcSurfaceSide::IfcSurfaceSide(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcSurfaceSide_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc2::IfcSurfaceSide::IfcSurfaceSide(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcSurfaceSide_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -10005,12 +10423,14 @@ Ifc4x3_rc2::IfcSwitchingDeviceTypeEnum::IfcSwitchingDeviceTypeEnum(IfcEntityInst
}
Ifc4x3_rc2::IfcSwitchingDeviceTypeEnum::IfcSwitchingDeviceTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcSwitchingDeviceTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc2::IfcSwitchingDeviceTypeEnum::IfcSwitchingDeviceTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcSwitchingDeviceTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -10051,12 +10471,14 @@ Ifc4x3_rc2::IfcSystemFurnitureElementTypeEnum::IfcSystemFurnitureElementTypeEnum
}
Ifc4x3_rc2::IfcSystemFurnitureElementTypeEnum::IfcSystemFurnitureElementTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcSystemFurnitureElementTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc2::IfcSystemFurnitureElementTypeEnum::IfcSystemFurnitureElementTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcSystemFurnitureElementTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -10089,12 +10511,14 @@ Ifc4x3_rc2::IfcTankTypeEnum::IfcTankTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4x3_rc2::IfcTankTypeEnum::IfcTankTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcTankTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc2::IfcTankTypeEnum::IfcTankTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcTankTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -10132,12 +10556,14 @@ Ifc4x3_rc2::IfcTaskDurationEnum::IfcTaskDurationEnum(IfcEntityInstanceData* e) {
}
Ifc4x3_rc2::IfcTaskDurationEnum::IfcTaskDurationEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcTaskDurationEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc2::IfcTaskDurationEnum::IfcTaskDurationEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcTaskDurationEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -10168,12 +10594,14 @@ Ifc4x3_rc2::IfcTaskTypeEnum::IfcTaskTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4x3_rc2::IfcTaskTypeEnum::IfcTaskTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcTaskTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc2::IfcTaskTypeEnum::IfcTaskTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcTaskTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -10215,12 +10643,14 @@ Ifc4x3_rc2::IfcTendonAnchorTypeEnum::IfcTendonAnchorTypeEnum(IfcEntityInstanceDa
}
Ifc4x3_rc2::IfcTendonAnchorTypeEnum::IfcTendonAnchorTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcTendonAnchorTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc2::IfcTendonAnchorTypeEnum::IfcTendonAnchorTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcTendonAnchorTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -10253,12 +10683,14 @@ Ifc4x3_rc2::IfcTendonConduitTypeEnum::IfcTendonConduitTypeEnum(IfcEntityInstance
}
Ifc4x3_rc2::IfcTendonConduitTypeEnum::IfcTendonConduitTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcTendonConduitTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc2::IfcTendonConduitTypeEnum::IfcTendonConduitTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcTendonConduitTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -10293,12 +10725,14 @@ Ifc4x3_rc2::IfcTendonTypeEnum::IfcTendonTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4x3_rc2::IfcTendonTypeEnum::IfcTendonTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcTendonTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc2::IfcTendonTypeEnum::IfcTendonTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcTendonTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -10332,12 +10766,14 @@ Ifc4x3_rc2::IfcTextPath::IfcTextPath(IfcEntityInstanceData* e) {
}
Ifc4x3_rc2::IfcTextPath::IfcTextPath(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcTextPath_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc2::IfcTextPath::IfcTextPath(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcTextPath_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -10369,12 +10805,14 @@ Ifc4x3_rc2::IfcTimeSeriesDataTypeEnum::IfcTimeSeriesDataTypeEnum(IfcEntityInstan
}
Ifc4x3_rc2::IfcTimeSeriesDataTypeEnum::IfcTimeSeriesDataTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcTimeSeriesDataTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc2::IfcTimeSeriesDataTypeEnum::IfcTimeSeriesDataTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcTimeSeriesDataTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -10409,12 +10847,14 @@ Ifc4x3_rc2::IfcTrackElementTypeEnum::IfcTrackElementTypeEnum(IfcEntityInstanceDa
}
Ifc4x3_rc2::IfcTrackElementTypeEnum::IfcTrackElementTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcTrackElementTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc2::IfcTrackElementTypeEnum::IfcTrackElementTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcTrackElementTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -10452,12 +10892,14 @@ Ifc4x3_rc2::IfcTransformerTypeEnum::IfcTransformerTypeEnum(IfcEntityInstanceData
}
Ifc4x3_rc2::IfcTransformerTypeEnum::IfcTransformerTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcTransformerTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc2::IfcTransformerTypeEnum::IfcTransformerTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcTransformerTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -10494,12 +10936,14 @@ Ifc4x3_rc2::IfcTransitionCode::IfcTransitionCode(IfcEntityInstanceData* e) {
}
Ifc4x3_rc2::IfcTransitionCode::IfcTransitionCode(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcTransitionCode_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc2::IfcTransitionCode::IfcTransitionCode(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcTransitionCode_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -10531,12 +10975,14 @@ Ifc4x3_rc2::IfcTransitionCurveType::IfcTransitionCurveType(IfcEntityInstanceData
}
Ifc4x3_rc2::IfcTransitionCurveType::IfcTransitionCurveType(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcTransitionCurveType_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc2::IfcTransitionCurveType::IfcTransitionCurveType(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcTransitionCurveType_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -10570,12 +11016,14 @@ Ifc4x3_rc2::IfcTransportElementFixedTypeEnum::IfcTransportElementFixedTypeEnum(I
}
Ifc4x3_rc2::IfcTransportElementFixedTypeEnum::IfcTransportElementFixedTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcTransportElementFixedTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc2::IfcTransportElementFixedTypeEnum::IfcTransportElementFixedTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcTransportElementFixedTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -10610,12 +11058,14 @@ Ifc4x3_rc2::IfcTransportElementNonFixedTypeEnum::IfcTransportElementNonFixedType
}
Ifc4x3_rc2::IfcTransportElementNonFixedTypeEnum::IfcTransportElementNonFixedTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcTransportElementNonFixedTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc2::IfcTransportElementNonFixedTypeEnum::IfcTransportElementNonFixedTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcTransportElementNonFixedTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -10652,12 +11102,14 @@ Ifc4x3_rc2::IfcTrimmingPreference::IfcTrimmingPreference(IfcEntityInstanceData*
}
Ifc4x3_rc2::IfcTrimmingPreference::IfcTrimmingPreference(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcTrimmingPreference_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc2::IfcTrimmingPreference::IfcTrimmingPreference(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcTrimmingPreference_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -10688,12 +11140,14 @@ Ifc4x3_rc2::IfcTubeBundleTypeEnum::IfcTubeBundleTypeEnum(IfcEntityInstanceData*
}
Ifc4x3_rc2::IfcTubeBundleTypeEnum::IfcTubeBundleTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcTubeBundleTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc2::IfcTubeBundleTypeEnum::IfcTubeBundleTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcTubeBundleTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -10724,12 +11178,14 @@ Ifc4x3_rc2::IfcUnitEnum::IfcUnitEnum(IfcEntityInstanceData* e) {
}
Ifc4x3_rc2::IfcUnitEnum::IfcUnitEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcUnitEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc2::IfcUnitEnum::IfcUnitEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcUnitEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -10787,12 +11243,14 @@ Ifc4x3_rc2::IfcUnitaryControlElementTypeEnum::IfcUnitaryControlElementTypeEnum(I
}
Ifc4x3_rc2::IfcUnitaryControlElementTypeEnum::IfcUnitaryControlElementTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcUnitaryControlElementTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc2::IfcUnitaryControlElementTypeEnum::IfcUnitaryControlElementTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcUnitaryControlElementTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -10831,12 +11289,14 @@ Ifc4x3_rc2::IfcUnitaryEquipmentTypeEnum::IfcUnitaryEquipmentTypeEnum(IfcEntityIn
}
Ifc4x3_rc2::IfcUnitaryEquipmentTypeEnum::IfcUnitaryEquipmentTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcUnitaryEquipmentTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc2::IfcUnitaryEquipmentTypeEnum::IfcUnitaryEquipmentTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcUnitaryEquipmentTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -10871,12 +11331,14 @@ Ifc4x3_rc2::IfcValveTypeEnum::IfcValveTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4x3_rc2::IfcValveTypeEnum::IfcValveTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcValveTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc2::IfcValveTypeEnum::IfcValveTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcValveTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -10927,12 +11389,14 @@ Ifc4x3_rc2::IfcVibrationDamperTypeEnum::IfcVibrationDamperTypeEnum(IfcEntityInst
}
Ifc4x3_rc2::IfcVibrationDamperTypeEnum::IfcVibrationDamperTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcVibrationDamperTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc2::IfcVibrationDamperTypeEnum::IfcVibrationDamperTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcVibrationDamperTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -10968,12 +11432,14 @@ Ifc4x3_rc2::IfcVibrationIsolatorTypeEnum::IfcVibrationIsolatorTypeEnum(IfcEntity
}
Ifc4x3_rc2::IfcVibrationIsolatorTypeEnum::IfcVibrationIsolatorTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcVibrationIsolatorTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc2::IfcVibrationIsolatorTypeEnum::IfcVibrationIsolatorTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcVibrationIsolatorTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -11006,12 +11472,14 @@ Ifc4x3_rc2::IfcVoidingFeatureTypeEnum::IfcVoidingFeatureTypeEnum(IfcEntityInstan
}
Ifc4x3_rc2::IfcVoidingFeatureTypeEnum::IfcVoidingFeatureTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcVoidingFeatureTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc2::IfcVoidingFeatureTypeEnum::IfcVoidingFeatureTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcVoidingFeatureTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -11047,12 +11515,14 @@ Ifc4x3_rc2::IfcWallTypeEnum::IfcWallTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4x3_rc2::IfcWallTypeEnum::IfcWallTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcWallTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc2::IfcWallTypeEnum::IfcWallTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcWallTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -11093,12 +11563,14 @@ Ifc4x3_rc2::IfcWasteTerminalTypeEnum::IfcWasteTerminalTypeEnum(IfcEntityInstance
}
Ifc4x3_rc2::IfcWasteTerminalTypeEnum::IfcWasteTerminalTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcWasteTerminalTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc2::IfcWasteTerminalTypeEnum::IfcWasteTerminalTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcWasteTerminalTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -11135,12 +11607,14 @@ Ifc4x3_rc2::IfcWindowPanelOperationEnum::IfcWindowPanelOperationEnum(IfcEntityIn
}
Ifc4x3_rc2::IfcWindowPanelOperationEnum::IfcWindowPanelOperationEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcWindowPanelOperationEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc2::IfcWindowPanelOperationEnum::IfcWindowPanelOperationEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcWindowPanelOperationEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -11182,12 +11656,14 @@ Ifc4x3_rc2::IfcWindowPanelPositionEnum::IfcWindowPanelPositionEnum(IfcEntityInst
}
Ifc4x3_rc2::IfcWindowPanelPositionEnum::IfcWindowPanelPositionEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcWindowPanelPositionEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc2::IfcWindowPanelPositionEnum::IfcWindowPanelPositionEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcWindowPanelPositionEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -11221,12 +11697,14 @@ Ifc4x3_rc2::IfcWindowStyleConstructionEnum::IfcWindowStyleConstructionEnum(IfcEn
}
Ifc4x3_rc2::IfcWindowStyleConstructionEnum::IfcWindowStyleConstructionEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcWindowStyleConstructionEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc2::IfcWindowStyleConstructionEnum::IfcWindowStyleConstructionEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcWindowStyleConstructionEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -11262,12 +11740,14 @@ Ifc4x3_rc2::IfcWindowStyleOperationEnum::IfcWindowStyleOperationEnum(IfcEntityIn
}
Ifc4x3_rc2::IfcWindowStyleOperationEnum::IfcWindowStyleOperationEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcWindowStyleOperationEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc2::IfcWindowStyleOperationEnum::IfcWindowStyleOperationEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcWindowStyleOperationEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -11306,12 +11786,14 @@ Ifc4x3_rc2::IfcWindowTypeEnum::IfcWindowTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4x3_rc2::IfcWindowTypeEnum::IfcWindowTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcWindowTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc2::IfcWindowTypeEnum::IfcWindowTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcWindowTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -11344,12 +11826,14 @@ Ifc4x3_rc2::IfcWindowTypePartitioningEnum::IfcWindowTypePartitioningEnum(IfcEnti
}
Ifc4x3_rc2::IfcWindowTypePartitioningEnum::IfcWindowTypePartitioningEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcWindowTypePartitioningEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc2::IfcWindowTypePartitioningEnum::IfcWindowTypePartitioningEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcWindowTypePartitioningEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -11388,12 +11872,14 @@ Ifc4x3_rc2::IfcWorkCalendarTypeEnum::IfcWorkCalendarTypeEnum(IfcEntityInstanceDa
}
Ifc4x3_rc2::IfcWorkCalendarTypeEnum::IfcWorkCalendarTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcWorkCalendarTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc2::IfcWorkCalendarTypeEnum::IfcWorkCalendarTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcWorkCalendarTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -11426,12 +11912,14 @@ Ifc4x3_rc2::IfcWorkPlanTypeEnum::IfcWorkPlanTypeEnum(IfcEntityInstanceData* e) {
}
Ifc4x3_rc2::IfcWorkPlanTypeEnum::IfcWorkPlanTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcWorkPlanTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc2::IfcWorkPlanTypeEnum::IfcWorkPlanTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcWorkPlanTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
@@ -11464,12 +11952,14 @@ Ifc4x3_rc2::IfcWorkScheduleTypeEnum::IfcWorkScheduleTypeEnum(IfcEntityInstanceDa
}
Ifc4x3_rc2::IfcWorkScheduleTypeEnum::IfcWorkScheduleTypeEnum(Value v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcWorkScheduleTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
data_->setArgument(0,attr);
}
Ifc4x3_rc2::IfcWorkScheduleTypeEnum::IfcWorkScheduleTypeEnum(const std::string& v) {
+ data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcWorkScheduleTypeEnum_type);
IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
data_->setArgument(0,attr);
diff --git a/src/ifcparse/IfcParse.cpp b/src/ifcparse/IfcParse.cpp
index b8074cb1b6..9b6006910c 100644
--- a/src/ifcparse/IfcParse.cpp
+++ b/src/ifcparse/IfcParse.cpp
@@ -1248,8 +1248,10 @@ void IfcEntityInstanceData::setArgument(size_t i, Argument* a, IfcUtil::Argument
// Remove leading and trailing '.'
enum_literal = enum_literal.substr(1, enum_literal.size() - 2);
- const IfcParse::enumeration_type* enum_type = type()->as_entity()->
- attribute_by_index(i)->type_of_attribute()->as_named_type()->declared_type()->as_enumeration_type();
+ const IfcParse::enumeration_type* enum_type = type()->as_enumeration_type()
+ ? type()->as_enumeration_type()
+ : type()->as_entity()->attribute_by_index(i)->type_of_attribute()->
+ as_named_type()->declared_type()->as_enumeration_type();
std::vector::const_iterator it = std::find(
enum_type->enumeration_items().begin(),
@@ -1824,6 +1826,10 @@ IfcUtil::IfcBaseClass* IfcFile::addEntity(IfcUtil::IfcBaseClass* entity, int id)
build_inverses_(new_entity);
}
+ // @todo the id isn't actually used here, but instead
+ // clears the entire inverse cache map.
+ mark_entity_as_modified(0);
+
return new_entity;
}
diff --git a/src/ifcpatch/COPYING b/src/ifcpatch/COPYING
new file mode 100644
index 0000000000..810fce6e9b
--- /dev/null
+++ b/src/ifcpatch/COPYING
@@ -0,0 +1,621 @@
+ GNU GENERAL PUBLIC LICENSE
+ Version 3, 29 June 2007
+
+ Copyright (C) 2007 Free Software Foundation, Inc.
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+ Preamble
+
+ The GNU General Public License is a free, copyleft license for
+software and other kinds of works.
+
+ The licenses for most software and other practical works are designed
+to take away your freedom to share and change the works. By contrast,
+the GNU General Public License is intended to guarantee your freedom to
+share and change all versions of a program--to make sure it remains free
+software for all its users. We, the Free Software Foundation, use the
+GNU General Public License for most of our software; it applies also to
+any other work released this way by its authors. You can apply it to
+your programs, too.
+
+ When we speak of free software, we are referring to freedom, not
+price. Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+them if you wish), that you receive source code or can get it if you
+want it, that you can change the software or use pieces of it in new
+free programs, and that you know you can do these things.
+
+ To protect your rights, we need to prevent others from denying you
+these rights or asking you to surrender the rights. Therefore, you have
+certain responsibilities if you distribute copies of the software, or if
+you modify it: responsibilities to respect the freedom of others.
+
+ For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must pass on to the recipients the same
+freedoms that you received. You must make sure that they, too, receive
+or can get the source code. And you must show them these terms so they
+know their rights.
+
+ Developers that use the GNU GPL protect your rights with two steps:
+(1) assert copyright on the software, and (2) offer you this License
+giving you legal permission to copy, distribute and/or modify it.
+
+ For the developers' and authors' protection, the GPL clearly explains
+that there is no warranty for this free software. For both users' and
+authors' sake, the GPL requires that modified versions be marked as
+changed, so that their problems will not be attributed erroneously to
+authors of previous versions.
+
+ Some devices are designed to deny users access to install or run
+modified versions of the software inside them, although the manufacturer
+can do so. This is fundamentally incompatible with the aim of
+protecting users' freedom to change the software. The systematic
+pattern of such abuse occurs in the area of products for individuals to
+use, which is precisely where it is most unacceptable. Therefore, we
+have designed this version of the GPL to prohibit the practice for those
+products. If such problems arise substantially in other domains, we
+stand ready to extend this provision to those domains in future versions
+of the GPL, as needed to protect the freedom of users.
+
+ Finally, every program is threatened constantly by software patents.
+States should not allow patents to restrict development and use of
+software on general-purpose computers, but in those that do, we wish to
+avoid the special danger that patents applied to a free program could
+make it effectively proprietary. To prevent this, the GPL assures that
+patents cannot be used to render the program non-free.
+
+ The precise terms and conditions for copying, distribution and
+modification follow.
+
+ TERMS AND CONDITIONS
+
+ 0. Definitions.
+
+ "This License" refers to version 3 of the GNU General Public License.
+
+ "Copyright" also means copyright-like laws that apply to other kinds of
+works, such as semiconductor masks.
+
+ "The Program" refers to any copyrightable work licensed under this
+License. Each licensee is addressed as "you". "Licensees" and
+"recipients" may be individuals or organizations.
+
+ To "modify" a work means to copy from or adapt all or part of the work
+in a fashion requiring copyright permission, other than the making of an
+exact copy. The resulting work is called a "modified version" of the
+earlier work or a work "based on" the earlier work.
+
+ A "covered work" means either the unmodified Program or a work based
+on the Program.
+
+ To "propagate" a work means to do anything with it that, without
+permission, would make you directly or secondarily liable for
+infringement under applicable copyright law, except executing it on a
+computer or modifying a private copy. Propagation includes copying,
+distribution (with or without modification), making available to the
+public, and in some countries other activities as well.
+
+ To "convey" a work means any kind of propagation that enables other
+parties to make or receive copies. Mere interaction with a user through
+a computer network, with no transfer of a copy, is not conveying.
+
+ An interactive user interface displays "Appropriate Legal Notices"
+to the extent that it includes a convenient and prominently visible
+feature that (1) displays an appropriate copyright notice, and (2)
+tells the user that there is no warranty for the work (except to the
+extent that warranties are provided), that licensees may convey the
+work under this License, and how to view a copy of this License. If
+the interface presents a list of user commands or options, such as a
+menu, a prominent item in the list meets this criterion.
+
+ 1. Source Code.
+
+ The "source code" for a work means the preferred form of the work
+for making modifications to it. "Object code" means any non-source
+form of a work.
+
+ A "Standard Interface" means an interface that either is an official
+standard defined by a recognized standards body, or, in the case of
+interfaces specified for a particular programming language, one that
+is widely used among developers working in that language.
+
+ The "System Libraries" of an executable work include anything, other
+than the work as a whole, that (a) is included in the normal form of
+packaging a Major Component, but which is not part of that Major
+Component, and (b) serves only to enable use of the work with that
+Major Component, or to implement a Standard Interface for which an
+implementation is available to the public in source code form. A
+"Major Component", in this context, means a major essential component
+(kernel, window system, and so on) of the specific operating system
+(if any) on which the executable work runs, or a compiler used to
+produce the work, or an object code interpreter used to run it.
+
+ The "Corresponding Source" for a work in object code form means all
+the source code needed to generate, install, and (for an executable
+work) run the object code and to modify the work, including scripts to
+control those activities. However, it does not include the work's
+System Libraries, or general-purpose tools or generally available free
+programs which are used unmodified in performing those activities but
+which are not part of the work. For example, Corresponding Source
+includes interface definition files associated with source files for
+the work, and the source code for shared libraries and dynamically
+linked subprograms that the work is specifically designed to require,
+such as by intimate data communication or control flow between those
+subprograms and other parts of the work.
+
+ The Corresponding Source need not include anything that users
+can regenerate automatically from other parts of the Corresponding
+Source.
+
+ The Corresponding Source for a work in source code form is that
+same work.
+
+ 2. Basic Permissions.
+
+ All rights granted under this License are granted for the term of
+copyright on the Program, and are irrevocable provided the stated
+conditions are met. This License explicitly affirms your unlimited
+permission to run the unmodified Program. The output from running a
+covered work is covered by this License only if the output, given its
+content, constitutes a covered work. This License acknowledges your
+rights of fair use or other equivalent, as provided by copyright law.
+
+ You may make, run and propagate covered works that you do not
+convey, without conditions so long as your license otherwise remains
+in force. You may convey covered works to others for the sole purpose
+of having them make modifications exclusively for you, or provide you
+with facilities for running those works, provided that you comply with
+the terms of this License in conveying all material for which you do
+not control copyright. Those thus making or running the covered works
+for you must do so exclusively on your behalf, under your direction
+and control, on terms that prohibit them from making any copies of
+your copyrighted material outside their relationship with you.
+
+ Conveying under any other circumstances is permitted solely under
+the conditions stated below. Sublicensing is not allowed; section 10
+makes it unnecessary.
+
+ 3. Protecting Users' Legal Rights From Anti-Circumvention Law.
+
+ No covered work shall be deemed part of an effective technological
+measure under any applicable law fulfilling obligations under article
+11 of the WIPO copyright treaty adopted on 20 December 1996, or
+similar laws prohibiting or restricting circumvention of such
+measures.
+
+ When you convey a covered work, you waive any legal power to forbid
+circumvention of technological measures to the extent such circumvention
+is effected by exercising rights under this License with respect to
+the covered work, and you disclaim any intention to limit operation or
+modification of the work as a means of enforcing, against the work's
+users, your or third parties' legal rights to forbid circumvention of
+technological measures.
+
+ 4. Conveying Verbatim Copies.
+
+ You may convey verbatim copies of the Program's source code as you
+receive it, in any medium, provided that you conspicuously and
+appropriately publish on each copy an appropriate copyright notice;
+keep intact all notices stating that this License and any
+non-permissive terms added in accord with section 7 apply to the code;
+keep intact all notices of the absence of any warranty; and give all
+recipients a copy of this License along with the Program.
+
+ You may charge any price or no price for each copy that you convey,
+and you may offer support or warranty protection for a fee.
+
+ 5. Conveying Modified Source Versions.
+
+ You may convey a work based on the Program, or the modifications to
+produce it from the Program, in the form of source code under the
+terms of section 4, provided that you also meet all of these conditions:
+
+ a) The work must carry prominent notices stating that you modified
+ it, and giving a relevant date.
+
+ b) The work must carry prominent notices stating that it is
+ released under this License and any conditions added under section
+ 7. This requirement modifies the requirement in section 4 to
+ "keep intact all notices".
+
+ c) You must license the entire work, as a whole, under this
+ License to anyone who comes into possession of a copy. This
+ License will therefore apply, along with any applicable section 7
+ additional terms, to the whole of the work, and all its parts,
+ regardless of how they are packaged. This License gives no
+ permission to license the work in any other way, but it does not
+ invalidate such permission if you have separately received it.
+
+ d) If the work has interactive user interfaces, each must display
+ Appropriate Legal Notices; however, if the Program has interactive
+ interfaces that do not display Appropriate Legal Notices, your
+ work need not make them do so.
+
+ A compilation of a covered work with other separate and independent
+works, which are not by their nature extensions of the covered work,
+and which are not combined with it such as to form a larger program,
+in or on a volume of a storage or distribution medium, is called an
+"aggregate" if the compilation and its resulting copyright are not
+used to limit the access or legal rights of the compilation's users
+beyond what the individual works permit. Inclusion of a covered work
+in an aggregate does not cause this License to apply to the other
+parts of the aggregate.
+
+ 6. Conveying Non-Source Forms.
+
+ You may convey a covered work in object code form under the terms
+of sections 4 and 5, provided that you also convey the
+machine-readable Corresponding Source under the terms of this License,
+in one of these ways:
+
+ a) Convey the object code in, or embodied in, a physical product
+ (including a physical distribution medium), accompanied by the
+ Corresponding Source fixed on a durable physical medium
+ customarily used for software interchange.
+
+ b) Convey the object code in, or embodied in, a physical product
+ (including a physical distribution medium), accompanied by a
+ written offer, valid for at least three years and valid for as
+ long as you offer spare parts or customer support for that product
+ model, to give anyone who possesses the object code either (1) a
+ copy of the Corresponding Source for all the software in the
+ product that is covered by this License, on a durable physical
+ medium customarily used for software interchange, for a price no
+ more than your reasonable cost of physically performing this
+ conveying of source, or (2) access to copy the
+ Corresponding Source from a network server at no charge.
+
+ c) Convey individual copies of the object code with a copy of the
+ written offer to provide the Corresponding Source. This
+ alternative is allowed only occasionally and noncommercially, and
+ only if you received the object code with such an offer, in accord
+ with subsection 6b.
+
+ d) Convey the object code by offering access from a designated
+ place (gratis or for a charge), and offer equivalent access to the
+ Corresponding Source in the same way through the same place at no
+ further charge. You need not require recipients to copy the
+ Corresponding Source along with the object code. If the place to
+ copy the object code is a network server, the Corresponding Source
+ may be on a different server (operated by you or a third party)
+ that supports equivalent copying facilities, provided you maintain
+ clear directions next to the object code saying where to find the
+ Corresponding Source. Regardless of what server hosts the
+ Corresponding Source, you remain obligated to ensure that it is
+ available for as long as needed to satisfy these requirements.
+
+ e) Convey the object code using peer-to-peer transmission, provided
+ you inform other peers where the object code and Corresponding
+ Source of the work are being offered to the general public at no
+ charge under subsection 6d.
+
+ A separable portion of the object code, whose source code is excluded
+from the Corresponding Source as a System Library, need not be
+included in conveying the object code work.
+
+ A "User Product" is either (1) a "consumer product", which means any
+tangible personal property which is normally used for personal, family,
+or household purposes, or (2) anything designed or sold for incorporation
+into a dwelling. In determining whether a product is a consumer product,
+doubtful cases shall be resolved in favor of coverage. For a particular
+product received by a particular user, "normally used" refers to a
+typical or common use of that class of product, regardless of the status
+of the particular user or of the way in which the particular user
+actually uses, or expects or is expected to use, the product. A product
+is a consumer product regardless of whether the product has substantial
+commercial, industrial or non-consumer uses, unless such uses represent
+the only significant mode of use of the product.
+
+ "Installation Information" for a User Product means any methods,
+procedures, authorization keys, or other information required to install
+and execute modified versions of a covered work in that User Product from
+a modified version of its Corresponding Source. The information must
+suffice to ensure that the continued functioning of the modified object
+code is in no case prevented or interfered with solely because
+modification has been made.
+
+ If you convey an object code work under this section in, or with, or
+specifically for use in, a User Product, and the conveying occurs as
+part of a transaction in which the right of possession and use of the
+User Product is transferred to the recipient in perpetuity or for a
+fixed term (regardless of how the transaction is characterized), the
+Corresponding Source conveyed under this section must be accompanied
+by the Installation Information. But this requirement does not apply
+if neither you nor any third party retains the ability to install
+modified object code on the User Product (for example, the work has
+been installed in ROM).
+
+ The requirement to provide Installation Information does not include a
+requirement to continue to provide support service, warranty, or updates
+for a work that has been modified or installed by the recipient, or for
+the User Product in which it has been modified or installed. Access to a
+network may be denied when the modification itself materially and
+adversely affects the operation of the network or violates the rules and
+protocols for communication across the network.
+
+ Corresponding Source conveyed, and Installation Information provided,
+in accord with this section must be in a format that is publicly
+documented (and with an implementation available to the public in
+source code form), and must require no special password or key for
+unpacking, reading or copying.
+
+ 7. Additional Terms.
+
+ "Additional permissions" are terms that supplement the terms of this
+License by making exceptions from one or more of its conditions.
+Additional permissions that are applicable to the entire Program shall
+be treated as though they were included in this License, to the extent
+that they are valid under applicable law. If additional permissions
+apply only to part of the Program, that part may be used separately
+under those permissions, but the entire Program remains governed by
+this License without regard to the additional permissions.
+
+ When you convey a copy of a covered work, you may at your option
+remove any additional permissions from that copy, or from any part of
+it. (Additional permissions may be written to require their own
+removal in certain cases when you modify the work.) You may place
+additional permissions on material, added by you to a covered work,
+for which you have or can give appropriate copyright permission.
+
+ Notwithstanding any other provision of this License, for material you
+add to a covered work, you may (if authorized by the copyright holders of
+that material) supplement the terms of this License with terms:
+
+ a) Disclaiming warranty or limiting liability differently from the
+ terms of sections 15 and 16 of this License; or
+
+ b) Requiring preservation of specified reasonable legal notices or
+ author attributions in that material or in the Appropriate Legal
+ Notices displayed by works containing it; or
+
+ c) Prohibiting misrepresentation of the origin of that material, or
+ requiring that modified versions of such material be marked in
+ reasonable ways as different from the original version; or
+
+ d) Limiting the use for publicity purposes of names of licensors or
+ authors of the material; or
+
+ e) Declining to grant rights under trademark law for use of some
+ trade names, trademarks, or service marks; or
+
+ f) Requiring indemnification of licensors and authors of that
+ material by anyone who conveys the material (or modified versions of
+ it) with contractual assumptions of liability to the recipient, for
+ any liability that these contractual assumptions directly impose on
+ those licensors and authors.
+
+ All other non-permissive additional terms are considered "further
+restrictions" within the meaning of section 10. If the Program as you
+received it, or any part of it, contains a notice stating that it is
+governed by this License along with a term that is a further
+restriction, you may remove that term. If a license document contains
+a further restriction but permits relicensing or conveying under this
+License, you may add to a covered work material governed by the terms
+of that license document, provided that the further restriction does
+not survive such relicensing or conveying.
+
+ If you add terms to a covered work in accord with this section, you
+must place, in the relevant source files, a statement of the
+additional terms that apply to those files, or a notice indicating
+where to find the applicable terms.
+
+ Additional terms, permissive or non-permissive, may be stated in the
+form of a separately written license, or stated as exceptions;
+the above requirements apply either way.
+
+ 8. Termination.
+
+ You may not propagate or modify a covered work except as expressly
+provided under this License. Any attempt otherwise to propagate or
+modify it is void, and will automatically terminate your rights under
+this License (including any patent licenses granted under the third
+paragraph of section 11).
+
+ However, if you cease all violation of this License, then your
+license from a particular copyright holder is reinstated (a)
+provisionally, unless and until the copyright holder explicitly and
+finally terminates your license, and (b) permanently, if the copyright
+holder fails to notify you of the violation by some reasonable means
+prior to 60 days after the cessation.
+
+ Moreover, your license from a particular copyright holder is
+reinstated permanently if the copyright holder notifies you of the
+violation by some reasonable means, this is the first time you have
+received notice of violation of this License (for any work) from that
+copyright holder, and you cure the violation prior to 30 days after
+your receipt of the notice.
+
+ Termination of your rights under this section does not terminate the
+licenses of parties who have received copies or rights from you under
+this License. If your rights have been terminated and not permanently
+reinstated, you do not qualify to receive new licenses for the same
+material under section 10.
+
+ 9. Acceptance Not Required for Having Copies.
+
+ You are not required to accept this License in order to receive or
+run a copy of the Program. Ancillary propagation of a covered work
+occurring solely as a consequence of using peer-to-peer transmission
+to receive a copy likewise does not require acceptance. However,
+nothing other than this License grants you permission to propagate or
+modify any covered work. These actions infringe copyright if you do
+not accept this License. Therefore, by modifying or propagating a
+covered work, you indicate your acceptance of this License to do so.
+
+ 10. Automatic Licensing of Downstream Recipients.
+
+ Each time you convey a covered work, the recipient automatically
+receives a license from the original licensors, to run, modify and
+propagate that work, subject to this License. You are not responsible
+for enforcing compliance by third parties with this License.
+
+ An "entity transaction" is a transaction transferring control of an
+organization, or substantially all assets of one, or subdividing an
+organization, or merging organizations. If propagation of a covered
+work results from an entity transaction, each party to that
+transaction who receives a copy of the work also receives whatever
+licenses to the work the party's predecessor in interest had or could
+give under the previous paragraph, plus a right to possession of the
+Corresponding Source of the work from the predecessor in interest, if
+the predecessor has it or can get it with reasonable efforts.
+
+ You may not impose any further restrictions on the exercise of the
+rights granted or affirmed under this License. For example, you may
+not impose a license fee, royalty, or other charge for exercise of
+rights granted under this License, and you may not initiate litigation
+(including a cross-claim or counterclaim in a lawsuit) alleging that
+any patent claim is infringed by making, using, selling, offering for
+sale, or importing the Program or any portion of it.
+
+ 11. Patents.
+
+ A "contributor" is a copyright holder who authorizes use under this
+License of the Program or a work on which the Program is based. The
+work thus licensed is called the contributor's "contributor version".
+
+ A contributor's "essential patent claims" are all patent claims
+owned or controlled by the contributor, whether already acquired or
+hereafter acquired, that would be infringed by some manner, permitted
+by this License, of making, using, or selling its contributor version,
+but do not include claims that would be infringed only as a
+consequence of further modification of the contributor version. For
+purposes of this definition, "control" includes the right to grant
+patent sublicenses in a manner consistent with the requirements of
+this License.
+
+ Each contributor grants you a non-exclusive, worldwide, royalty-free
+patent license under the contributor's essential patent claims, to
+make, use, sell, offer for sale, import and otherwise run, modify and
+propagate the contents of its contributor version.
+
+ In the following three paragraphs, a "patent license" is any express
+agreement or commitment, however denominated, not to enforce a patent
+(such as an express permission to practice a patent or covenant not to
+sue for patent infringement). To "grant" such a patent license to a
+party means to make such an agreement or commitment not to enforce a
+patent against the party.
+
+ If you convey a covered work, knowingly relying on a patent license,
+and the Corresponding Source of the work is not available for anyone
+to copy, free of charge and under the terms of this License, through a
+publicly available network server or other readily accessible means,
+then you must either (1) cause the Corresponding Source to be so
+available, or (2) arrange to deprive yourself of the benefit of the
+patent license for this particular work, or (3) arrange, in a manner
+consistent with the requirements of this License, to extend the patent
+license to downstream recipients. "Knowingly relying" means you have
+actual knowledge that, but for the patent license, your conveying the
+covered work in a country, or your recipient's use of the covered work
+in a country, would infringe one or more identifiable patents in that
+country that you have reason to believe are valid.
+
+ If, pursuant to or in connection with a single transaction or
+arrangement, you convey, or propagate by procuring conveyance of, a
+covered work, and grant a patent license to some of the parties
+receiving the covered work authorizing them to use, propagate, modify
+or convey a specific copy of the covered work, then the patent license
+you grant is automatically extended to all recipients of the covered
+work and works based on it.
+
+ A patent license is "discriminatory" if it does not include within
+the scope of its coverage, prohibits the exercise of, or is
+conditioned on the non-exercise of one or more of the rights that are
+specifically granted under this License. You may not convey a covered
+work if you are a party to an arrangement with a third party that is
+in the business of distributing software, under which you make payment
+to the third party based on the extent of your activity of conveying
+the work, and under which the third party grants, to any of the
+parties who would receive the covered work from you, a discriminatory
+patent license (a) in connection with copies of the covered work
+conveyed by you (or copies made from those copies), or (b) primarily
+for and in connection with specific products or compilations that
+contain the covered work, unless you entered into that arrangement,
+or that patent license was granted, prior to 28 March 2007.
+
+ Nothing in this License shall be construed as excluding or limiting
+any implied license or other defenses to infringement that may
+otherwise be available to you under applicable patent law.
+
+ 12. No Surrender of Others' Freedom.
+
+ If conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot convey a
+covered work so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you may
+not convey it at all. For example, if you agree to terms that obligate you
+to collect a royalty for further conveying from those to whom you convey
+the Program, the only way you could satisfy both those terms and this
+License would be to refrain entirely from conveying the Program.
+
+ 13. Use with the GNU Affero General Public License.
+
+ Notwithstanding any other provision of this License, you have
+permission to link or combine any covered work with a work licensed
+under version 3 of the GNU Affero General Public License into a single
+combined work, and to convey the resulting work. The terms of this
+License will continue to apply to the part which is the covered work,
+but the special requirements of the GNU Affero General Public License,
+section 13, concerning interaction through a network will apply to the
+combination as such.
+
+ 14. Revised Versions of this License.
+
+ The Free Software Foundation may publish revised and/or new versions of
+the GNU General Public License from time to time. Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+ Each version is given a distinguishing version number. If the
+Program specifies that a certain numbered version of the GNU General
+Public License "or any later version" applies to it, you have the
+option of following the terms and conditions either of that numbered
+version or of any later version published by the Free Software
+Foundation. If the Program does not specify a version number of the
+GNU General Public License, you may choose any version ever published
+by the Free Software Foundation.
+
+ If the Program specifies that a proxy can decide which future
+versions of the GNU General Public License can be used, that proxy's
+public statement of acceptance of a version permanently authorizes you
+to choose that version for the Program.
+
+ Later license versions may give you additional or different
+permissions. However, no additional obligations are imposed on any
+author or copyright holder as a result of your choosing to follow a
+later version.
+
+ 15. Disclaimer of Warranty.
+
+ THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
+APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
+HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
+OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
+THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
+IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
+ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+ 16. Limitation of Liability.
+
+ IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
+THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
+GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
+USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
+DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
+PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
+EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGES.
+
+ 17. Interpretation of Sections 15 and 16.
+
+ If the disclaimer of warranty and limitation of liability provided
+above cannot be given local legal effect according to their terms,
+reviewing courts shall apply local law that most closely approximates
+an absolute waiver of all civil liability in connection with the
+Program, unless a warranty or assumption of liability accompanies a
+copy of the Program in return for a fee.
+
+ END OF TERMS AND CONDITIONS
diff --git a/src/ifcpatch/COPYING.LESSER b/src/ifcpatch/COPYING.LESSER
new file mode 100644
index 0000000000..0a041280bd
--- /dev/null
+++ b/src/ifcpatch/COPYING.LESSER
@@ -0,0 +1,165 @@
+ GNU LESSER GENERAL PUBLIC LICENSE
+ Version 3, 29 June 2007
+
+ Copyright (C) 2007 Free Software Foundation, Inc.
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+
+ This version of the GNU Lesser General Public License incorporates
+the terms and conditions of version 3 of the GNU General Public
+License, supplemented by the additional permissions listed below.
+
+ 0. Additional Definitions.
+
+ As used herein, "this License" refers to version 3 of the GNU Lesser
+General Public License, and the "GNU GPL" refers to version 3 of the GNU
+General Public License.
+
+ "The Library" refers to a covered work governed by this License,
+other than an Application or a Combined Work as defined below.
+
+ An "Application" is any work that makes use of an interface provided
+by the Library, but which is not otherwise based on the Library.
+Defining a subclass of a class defined by the Library is deemed a mode
+of using an interface provided by the Library.
+
+ A "Combined Work" is a work produced by combining or linking an
+Application with the Library. The particular version of the Library
+with which the Combined Work was made is also called the "Linked
+Version".
+
+ The "Minimal Corresponding Source" for a Combined Work means the
+Corresponding Source for the Combined Work, excluding any source code
+for portions of the Combined Work that, considered in isolation, are
+based on the Application, and not on the Linked Version.
+
+ The "Corresponding Application Code" for a Combined Work means the
+object code and/or source code for the Application, including any data
+and utility programs needed for reproducing the Combined Work from the
+Application, but excluding the System Libraries of the Combined Work.
+
+ 1. Exception to Section 3 of the GNU GPL.
+
+ You may convey a covered work under sections 3 and 4 of this License
+without being bound by section 3 of the GNU GPL.
+
+ 2. Conveying Modified Versions.
+
+ If you modify a copy of the Library, and, in your modifications, a
+facility refers to a function or data to be supplied by an Application
+that uses the facility (other than as an argument passed when the
+facility is invoked), then you may convey a copy of the modified
+version:
+
+ a) under this License, provided that you make a good faith effort to
+ ensure that, in the event an Application does not supply the
+ function or data, the facility still operates, and performs
+ whatever part of its purpose remains meaningful, or
+
+ b) under the GNU GPL, with none of the additional permissions of
+ this License applicable to that copy.
+
+ 3. Object Code Incorporating Material from Library Header Files.
+
+ The object code form of an Application may incorporate material from
+a header file that is part of the Library. You may convey such object
+code under terms of your choice, provided that, if the incorporated
+material is not limited to numerical parameters, data structure
+layouts and accessors, or small macros, inline functions and templates
+(ten or fewer lines in length), you do both of the following:
+
+ a) Give prominent notice with each copy of the object code that the
+ Library is used in it and that the Library and its use are
+ covered by this License.
+
+ b) Accompany the object code with a copy of the GNU GPL and this license
+ document.
+
+ 4. Combined Works.
+
+ You may convey a Combined Work under terms of your choice that,
+taken together, effectively do not restrict modification of the
+portions of the Library contained in the Combined Work and reverse
+engineering for debugging such modifications, if you also do each of
+the following:
+
+ a) Give prominent notice with each copy of the Combined Work that
+ the Library is used in it and that the Library and its use are
+ covered by this License.
+
+ b) Accompany the Combined Work with a copy of the GNU GPL and this license
+ document.
+
+ c) For a Combined Work that displays copyright notices during
+ execution, include the copyright notice for the Library among
+ these notices, as well as a reference directing the user to the
+ copies of the GNU GPL and this license document.
+
+ d) Do one of the following:
+
+ 0) Convey the Minimal Corresponding Source under the terms of this
+ License, and the Corresponding Application Code in a form
+ suitable for, and under terms that permit, the user to
+ recombine or relink the Application with a modified version of
+ the Linked Version to produce a modified Combined Work, in the
+ manner specified by section 6 of the GNU GPL for conveying
+ Corresponding Source.
+
+ 1) Use a suitable shared library mechanism for linking with the
+ Library. A suitable mechanism is one that (a) uses at run time
+ a copy of the Library already present on the user's computer
+ system, and (b) will operate properly with a modified version
+ of the Library that is interface-compatible with the Linked
+ Version.
+
+ e) Provide Installation Information, but only if you would otherwise
+ be required to provide such information under section 6 of the
+ GNU GPL, and only to the extent that such information is
+ necessary to install and execute a modified version of the
+ Combined Work produced by recombining or relinking the
+ Application with a modified version of the Linked Version. (If
+ you use option 4d0, the Installation Information must accompany
+ the Minimal Corresponding Source and Corresponding Application
+ Code. If you use option 4d1, you must provide the Installation
+ Information in the manner specified by section 6 of the GNU GPL
+ for conveying Corresponding Source.)
+
+ 5. Combined Libraries.
+
+ You may place library facilities that are a work based on the
+Library side by side in a single library together with other library
+facilities that are not Applications and are not covered by this
+License, and convey such a combined library under terms of your
+choice, if you do both of the following:
+
+ a) Accompany the combined library with a copy of the same work based
+ on the Library, uncombined with any other library facilities,
+ conveyed under the terms of this License.
+
+ b) Give prominent notice with the combined library that part of it
+ is a work based on the Library, and explaining where to find the
+ accompanying uncombined form of the same work.
+
+ 6. Revised Versions of the GNU Lesser General Public License.
+
+ The Free Software Foundation may publish revised and/or new versions
+of the GNU Lesser General Public License from time to time. Such new
+versions will be similar in spirit to the present version, but may
+differ in detail to address new problems or concerns.
+
+ Each version is given a distinguishing version number. If the
+Library as you received it specifies that a certain numbered version
+of the GNU Lesser General Public License "or any later version"
+applies to it, you have the option of following the terms and
+conditions either of that published version or of any later version
+published by the Free Software Foundation. If the Library as you
+received it does not specify a version number of the GNU Lesser
+General Public License, you may choose any version of the GNU Lesser
+General Public License ever published by the Free Software Foundation.
+
+ If the Library as you received it specifies that a proxy can decide
+whether future versions of the GNU Lesser General Public License shall
+apply, that proxy's public statement of acceptance of any version is
+permanent authorization for you to choose that version for the
+Library.
diff --git a/src/ifcpatch/README.md b/src/ifcpatch/README.md
index bf26bcea88..ac77c270b6 100644
--- a/src/ifcpatch/README.md
+++ b/src/ifcpatch/README.md
@@ -21,6 +21,13 @@ If you want something more Unix-like ...
$ alias ifcpatch='python -m ifcpatch'
```
+Alternatively, you can package it as a distributable.
+
+```
+$ python make.py
+$ ./dist/ifcpatch
+```
+
## Usage
Usage is like any other CLI app.
@@ -59,8 +66,10 @@ $ ifcpatch -i input.ifc -o output.ifc -r ExtractElements -a ".IfcWall"
You can also use it as a library.
-```
+```python
import ifcpatch
+
+
ifcpatch.execute({
"input": "input.ifc",
"output": "output.ifc",
diff --git a/src/ifcpatch/bootstrap.py b/src/ifcpatch/bootstrap.py
new file mode 100644
index 0000000000..524482af04
--- /dev/null
+++ b/src/ifcpatch/bootstrap.py
@@ -0,0 +1,28 @@
+
+# IfcPatch - IFC patching utiliy
+# Copyright (C) 2020, 2021 Dion Moult
+#
+# This file is part of IfcPatch.
+#
+# IfcPatch is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# IfcPatch is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public License
+# along with IfcPatch. If not, see .
+
+import toposort
+import ifcpatch
+import ifcpatch.recipes
+import ifcopenshell.util.selector
+import ifcopenshell.util.element
+import ifcopenshell.util.schema
+
+import ifcpatch.__main__
+
diff --git a/src/ifcpatch/ifcpatch/__init__.py b/src/ifcpatch/ifcpatch/__init__.py
index d8cf8fa5e4..8c7b4b161e 100644
--- a/src/ifcpatch/ifcpatch/__init__.py
+++ b/src/ifcpatch/ifcpatch/__init__.py
@@ -1,9 +1,27 @@
#!/usr/bin/env python3
+
+# IfcPatch - IFC patching utiliy
+# Copyright (C) 2020, 2021 Dion Moult
+#
+# This file is part of IfcPatch.
+#
+# IfcPatch is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# IfcPatch is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public License
+# along with IfcPatch. If not, see .
+
# This can be packaged into one executable with ./make.py
import ifcopenshell
import logging
-import argparse
def execute(args, is_library=None):
@@ -28,21 +46,4 @@ def execute(args, is_library=None):
text_file.write(ifc_file)
else:
ifc_file.write(args["output"])
-
-
-def main():
- parser = argparse.ArgumentParser(description="Patches IFC files to fix badly formatted data")
- parser.add_argument("-i", "--input", type=str, required=True, help="The IFC file to patch")
- parser.add_argument("-o", "--output", type=str, help="The output file to save the patched IFC")
- parser.add_argument("-r", "--recipe", type=str, required=True, help="Name of the recipe to use when patching")
- parser.add_argument("-l", "--log", type=str, help="Specify a log file", default="ifcpatch.log")
- parser.add_argument("-a", "--arguments", nargs="+", help="Specify custom arguments to the patch recipe")
- args = vars(parser.parse_args())
-
- execute(args)
-
print("# All tasks are complete :-)")
-
-
-if __name__ == "__main__":
- main()
diff --git a/src/ifcpatch/ifcpatch/__main__.py b/src/ifcpatch/ifcpatch/__main__.py
index 3b48deed79..115326b2c0 100644
--- a/src/ifcpatch/ifcpatch/__main__.py
+++ b/src/ifcpatch/ifcpatch/__main__.py
@@ -1,4 +1,31 @@
#!/usr/bin/env python3
+
+# IfcPatch - IFC patching utiliy
+# Copyright (C) 2020, 2021 Dion Moult
+#
+# This file is part of IfcPatch.
+#
+# IfcPatch is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# IfcPatch is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public License
+# along with IfcPatch. If not, see .
+
+import argparse
import ifcpatch
-ifcpatch.main()
+parser = argparse.ArgumentParser(description="Patches IFC files to fix badly formatted data")
+parser.add_argument("-i", "--input", type=str, required=True, help="The IFC file to patch")
+parser.add_argument("-o", "--output", type=str, help="The output file to save the patched IFC")
+parser.add_argument("-r", "--recipe", type=str, required=True, help="Name of the recipe to use when patching")
+parser.add_argument("-l", "--log", type=str, help="Specify a log file", default="ifcpatch.log")
+parser.add_argument("-a", "--arguments", nargs="+", help="Specify custom arguments to the patch recipe")
+args = vars(parser.parse_args())
+ifcpatch.execute(args)
diff --git a/src/ifcpatch/ifcpatch/make.py b/src/ifcpatch/ifcpatch/make.py
deleted file mode 100644
index a2a9da0b9a..0000000000
--- a/src/ifcpatch/ifcpatch/make.py
+++ /dev/null
@@ -1,23 +0,0 @@
-#!/usr/bin/env python3
-import os
-import subprocess
-
-# add hidden imports in recipes here
-HIDDEN_IMPORTS = [
- "ifcopenshell.util.selector",
- "ifcopenshell.util.element",
- "ifcopenshell.util.schema",
- "toposort",
-]
-
-
-def main():
- hiddenimport_args = " ".join('--hiddenimport "{}"'.format(imp) for imp in HIDDEN_IMPORTS)
- cmd = 'pyinstaller ./__init__.py --onefile --clean --add-data ".{}ifcpatch" {}'.format(
- os.pathsep, hiddenimport_args
- )
- subprocess.check_output(cmd, shell=True)
-
-
-if __name__ == "__main__":
- main()
diff --git a/src/ifcpatch/ifcpatch/recipes/ConvertLengthUnit.py b/src/ifcpatch/ifcpatch/recipes/ConvertLengthUnit.py
index 328d6112d7..96ef036b3c 100644
--- a/src/ifcpatch/ifcpatch/recipes/ConvertLengthUnit.py
+++ b/src/ifcpatch/ifcpatch/recipes/ConvertLengthUnit.py
@@ -1,3 +1,22 @@
+
+# IfcPatch - IFC patching utiliy
+# Copyright (C) 2020, 2021 Dion Moult
+#
+# This file is part of IfcPatch.
+#
+# IfcPatch is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# IfcPatch is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public License
+# along with IfcPatch. If not, see .
+
import ifcopenshell
import ifcopenshell.api
import ifcopenshell.util.pset
diff --git a/src/ifcpatch/ifcpatch/recipes/ConvertPropertiesToQuantities.py b/src/ifcpatch/ifcpatch/recipes/ConvertPropertiesToQuantities.py
index af228c2035..102639ef46 100644
--- a/src/ifcpatch/ifcpatch/recipes/ConvertPropertiesToQuantities.py
+++ b/src/ifcpatch/ifcpatch/recipes/ConvertPropertiesToQuantities.py
@@ -1,3 +1,22 @@
+
+# IfcPatch - IFC patching utiliy
+# Copyright (C) 2020, 2021 Dion Moult
+#
+# This file is part of IfcPatch.
+#
+# IfcPatch is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# IfcPatch is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public License
+# along with IfcPatch. If not, see .
+
import ifcopenshell
import ifcopenshell.util.pset
import ifcopenshell.util.element
diff --git a/src/ifcpatch/ifcpatch/recipes/DowngradeIndexedPolyCurve.py b/src/ifcpatch/ifcpatch/recipes/DowngradeIndexedPolyCurve.py
new file mode 100644
index 0000000000..60bec8e701
--- /dev/null
+++ b/src/ifcpatch/ifcpatch/recipes/DowngradeIndexedPolyCurve.py
@@ -0,0 +1,50 @@
+
+# IfcPatch - IFC patching utiliy
+# Copyright (C) 2020, 2021 Dion Moult
+#
+# This file is part of IfcPatch.
+#
+# IfcPatch is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# IfcPatch is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public License
+# along with IfcPatch. If not, see .
+
+import ifcopenshell
+import ifcopenshell.util.element
+
+
+class Patcher:
+ def __init__(self, src, file, logger, args=None):
+ self.src = src
+ self.file = file
+ self.logger = logger
+ self.args = args
+
+ def patch(self):
+ curve_map = {}
+
+ for curve in self.file.by_type("IfcIndexedPolyCurve"):
+ if "IfcArcIndex" in [s.is_a() for s in curve.Segments]:
+ print("Could not convert curve due to arcs", curve)
+ continue
+ coordinates = curve.Points.CoordList
+ points = []
+ for i, segment in enumerate(curve.Segments):
+ segment = segment.wrappedValue
+ if i == 0:
+ points.append(self.file.createIfcCartesianPoint(coordinates[segment[0] - 1]))
+ points.append(self.file.createIfcCartesianPoint(coordinates[segment[1] - 1]))
+ polyline = self.file.create_entity("IfcPolyline", points)
+ curve_map[curve] = polyline
+
+ for curve, polyline in curve_map.items():
+ for inverse in self.file.get_inverse(curve):
+ ifcopenshell.util.element.replace_attribute(inverse, curve, polyline)
diff --git a/src/ifcpatch/ifcpatch/recipes/ExtractElements.py b/src/ifcpatch/ifcpatch/recipes/ExtractElements.py
index 63208ec903..2e6f5ce375 100644
--- a/src/ifcpatch/ifcpatch/recipes/ExtractElements.py
+++ b/src/ifcpatch/ifcpatch/recipes/ExtractElements.py
@@ -1,13 +1,38 @@
+
+# IfcPatch - IFC patching utiliy
+# Copyright (C) 2020, 2021 Dion Moult
+#
+# This file is part of IfcPatch.
+#
+# IfcPatch is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# IfcPatch is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public License
+# along with IfcPatch. If not, see .
+
import ifcopenshell
import ifcopenshell.util.selector
class Patcher:
- def __init__(self, src, file, logger, args=None):
+ def __init__(self, src, file, logger, query: str = ".IfcWall"):
+ """Extract Elements
+
+ Extract a subset of elements from an existing IFC data set and save it to a new IFC file.
+
+ :param query: A query to select the subset of IFC elements.
+ """
self.src = src
self.file = file
self.logger = logger
- self.args = args
+ self.query = query
def patch(self):
self.contained_ins = {}
@@ -18,7 +43,7 @@ class Patcher:
self.owner_history = self.new.add(owner_history)
break
selector = ifcopenshell.util.selector.Selector()
- for element in selector.parse(self.file, self.args[0]):
+ for element in selector.parse(self.file, self.query):
self.add_element(element)
self.create_spatial_tree()
self.file = self.new
diff --git a/src/ifcpatch/ifcpatch/recipes/ExtractSpaces.py b/src/ifcpatch/ifcpatch/recipes/ExtractSpaces.py
index 7c1c95621f..ca5077e401 100644
--- a/src/ifcpatch/ifcpatch/recipes/ExtractSpaces.py
+++ b/src/ifcpatch/ifcpatch/recipes/ExtractSpaces.py
@@ -1,3 +1,22 @@
+
+# IfcPatch - IFC patching utiliy
+# Copyright (C) 2020, 2021 Dion Moult
+#
+# This file is part of IfcPatch.
+#
+# IfcPatch is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# IfcPatch is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public License
+# along with IfcPatch. If not, see .
+
import ifcopenshell
import ifcopenshell.util.selector
diff --git a/src/ifcpatch/ifcpatch/recipes/MergeDuplicateTypesByTag.py b/src/ifcpatch/ifcpatch/recipes/MergeDuplicateTypesByTag.py
new file mode 100644
index 0000000000..eec13aecc9
--- /dev/null
+++ b/src/ifcpatch/ifcpatch/recipes/MergeDuplicateTypesByTag.py
@@ -0,0 +1,40 @@
+
+# IfcPatch - IFC patching utiliy
+# Copyright (C) 2020, 2021 Dion Moult
+#
+# This file is part of IfcPatch.
+#
+# IfcPatch is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# IfcPatch is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public License
+# along with IfcPatch. If not, see .
+
+import ifcopenshell
+import ifcopenshell.util.element
+
+
+class Patcher:
+ def __init__(self, src, file, logger, args=None):
+ self.src = src
+ self.file = file
+ self.logger = logger
+ self.args = args
+
+ def patch(self):
+ tags = {}
+ for element in self.file.by_type("IfcTypeObject"):
+ original_element = tags.get(element.Tag, None)
+ if original_element:
+ for inverse in self.file.get_inverse(element):
+ ifcopenshell.util.element.replace_attribute(inverse, element, original_element)
+ self.file.remove(element)
+ else:
+ tags[element.Tag] = element
diff --git a/src/ifcpatch/ifcpatch/recipes/MergeProject.py b/src/ifcpatch/ifcpatch/recipes/MergeProject.py
index cfe775551f..c413ce013b 100644
--- a/src/ifcpatch/ifcpatch/recipes/MergeProject.py
+++ b/src/ifcpatch/ifcpatch/recipes/MergeProject.py
@@ -1,3 +1,22 @@
+
+# IfcPatch - IFC patching utiliy
+# Copyright (C) 2020, 2021 Dion Moult
+#
+# This file is part of IfcPatch.
+#
+# IfcPatch is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# IfcPatch is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public License
+# along with IfcPatch. If not, see .
+
import ifcopenshell
import ifcopenshell.util.element
diff --git a/src/ifcpatch/ifcpatch/recipes/Migrate.py b/src/ifcpatch/ifcpatch/recipes/Migrate.py
index 7d238e2204..bc31388e2b 100644
--- a/src/ifcpatch/ifcpatch/recipes/Migrate.py
+++ b/src/ifcpatch/ifcpatch/recipes/Migrate.py
@@ -1,3 +1,22 @@
+
+# IfcPatch - IFC patching utiliy
+# Copyright (C) 2020, 2021 Dion Moult
+#
+# This file is part of IfcPatch.
+#
+# IfcPatch is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# IfcPatch is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public License
+# along with IfcPatch. If not, see .
+
import ifcopenshell
import ifcopenshell.util.schema
diff --git a/src/ifcpatch/ifcpatch/recipes/OffsetObjectPlacements.py b/src/ifcpatch/ifcpatch/recipes/OffsetObjectPlacements.py
index d9da46c79a..e4dc9e0adb 100644
--- a/src/ifcpatch/ifcpatch/recipes/OffsetObjectPlacements.py
+++ b/src/ifcpatch/ifcpatch/recipes/OffsetObjectPlacements.py
@@ -1,3 +1,22 @@
+
+# IfcPatch - IFC patching utiliy
+# Copyright (C) 2020, 2021 Dion Moult
+#
+# This file is part of IfcPatch.
+#
+# IfcPatch is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# IfcPatch is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public License
+# along with IfcPatch. If not, see .
+
import math
class Patcher:
diff --git a/src/ifcpatch/ifcpatch/recipes/OffsetStoreyElevations.py b/src/ifcpatch/ifcpatch/recipes/OffsetStoreyElevations.py
index c0384693c3..79a35fb66d 100644
--- a/src/ifcpatch/ifcpatch/recipes/OffsetStoreyElevations.py
+++ b/src/ifcpatch/ifcpatch/recipes/OffsetStoreyElevations.py
@@ -1,3 +1,22 @@
+
+# IfcPatch - IFC patching utiliy
+# Copyright (C) 2020, 2021 Dion Moult
+#
+# This file is part of IfcPatch.
+#
+# IfcPatch is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# IfcPatch is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public License
+# along with IfcPatch. If not, see .
+
class Patcher:
def __init__(self, src, file, logger, args=None):
self.src = src
diff --git a/src/ifcpatch/ifcpatch/recipes/Optimise.py b/src/ifcpatch/ifcpatch/recipes/Optimise.py
index f990c65516..99272ee1af 100644
--- a/src/ifcpatch/ifcpatch/recipes/Optimise.py
+++ b/src/ifcpatch/ifcpatch/recipes/Optimise.py
@@ -1,3 +1,22 @@
+
+# IfcPatch - IFC patching utiliy
+# Copyright (C) 2020, 2021 Dion Moult
+#
+# This file is part of IfcPatch.
+#
+# IfcPatch is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# IfcPatch is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public License
+# along with IfcPatch. If not, see .
+
import ifcopenshell
import ifcopenshell.util.element
from toposort import toposort_flatten as toposort
diff --git a/src/ifcpatch/ifcpatch/recipes/RecycleNonRootedElements.py b/src/ifcpatch/ifcpatch/recipes/RecycleNonRootedElements.py
index 48ec179dd5..ac3160837f 100644
--- a/src/ifcpatch/ifcpatch/recipes/RecycleNonRootedElements.py
+++ b/src/ifcpatch/ifcpatch/recipes/RecycleNonRootedElements.py
@@ -1,3 +1,22 @@
+
+# IfcPatch - IFC patching utiliy
+# Copyright (C) 2020, 2021 Dion Moult
+#
+# This file is part of IfcPatch.
+#
+# IfcPatch is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# IfcPatch is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public License
+# along with IfcPatch. If not, see .
+
from collections import deque
import ifcopenshell.util.element
diff --git a/src/ifcpatch/ifcpatch/recipes/RegenerateGlobalIds.py b/src/ifcpatch/ifcpatch/recipes/RegenerateGlobalIds.py
new file mode 100644
index 0000000000..a921a08dbf
--- /dev/null
+++ b/src/ifcpatch/ifcpatch/recipes/RegenerateGlobalIds.py
@@ -0,0 +1,46 @@
+
+# IfcPatch - IFC patching utiliy
+# Copyright (C) 2020, 2021 Dion Moult
+#
+# This file is part of IfcPatch.
+#
+# IfcPatch is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# IfcPatch is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public License
+# along with IfcPatch. If not, see .
+
+import ifcopenshell
+
+
+class Patcher:
+ def __init__(self, src, file, logger, args=None):
+ self.src = src
+ self.file = file
+ self.logger = logger
+ self.args = args
+
+ def patch(self):
+ if self.args and self.args[0] == "DUPLICATE":
+ guids = set()
+ for element in self.file.by_type("IfcRoot"):
+ if element.GlobalId in guids:
+ element.GlobalId = ifcopenshell.guid.new()
+ elif len(element.GlobalId) != 22 or element.GlobalId[0] not in "0123":
+ element.GlobalId = ifcopenshell.guid.new()
+ else:
+ try:
+ ifcopenshell.guid.expand(element.GlobalId)
+ except:
+ element.GlobalId = ifcopenshell.guid.new()
+ guids.add(element.GlobalId)
+ else:
+ for element in self.file.by_type("IfcRoot"):
+ element.GlobalId = ifcopenshell.guid.new()
diff --git a/src/ifcpatch/ifcpatch/recipes/RemoveSiteRepresentation.py b/src/ifcpatch/ifcpatch/recipes/RemoveSiteRepresentation.py
index 347cddce17..6498fe135a 100644
--- a/src/ifcpatch/ifcpatch/recipes/RemoveSiteRepresentation.py
+++ b/src/ifcpatch/ifcpatch/recipes/RemoveSiteRepresentation.py
@@ -1,3 +1,22 @@
+
+# IfcPatch - IFC patching utiliy
+# Copyright (C) 2020, 2021 Dion Moult
+#
+# This file is part of IfcPatch.
+#
+# IfcPatch is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# IfcPatch is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public License
+# along with IfcPatch. If not, see .
+
class Patcher:
def __init__(self, src, file, logger, args=None):
self.src = src
diff --git a/src/ifcpatch/ifcpatch/recipes/ResetAbsoluteCoordinates.py b/src/ifcpatch/ifcpatch/recipes/ResetAbsoluteCoordinates.py
index 83edff10a6..9cb10cdf65 100644
--- a/src/ifcpatch/ifcpatch/recipes/ResetAbsoluteCoordinates.py
+++ b/src/ifcpatch/ifcpatch/recipes/ResetAbsoluteCoordinates.py
@@ -1,3 +1,22 @@
+
+# IfcPatch - IFC patching utiliy
+# Copyright (C) 2020, 2021 Dion Moult
+#
+# This file is part of IfcPatch.
+#
+# IfcPatch is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# IfcPatch is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public License
+# along with IfcPatch. If not, see .
+
class Patcher:
def __init__(self, src, file, logger, args=None):
self.src = src
diff --git a/src/ifcpatch/ifcpatch/recipes/ResetSpatialElementLocations.py b/src/ifcpatch/ifcpatch/recipes/ResetSpatialElementLocations.py
index 26812aeefc..2747e785c7 100644
--- a/src/ifcpatch/ifcpatch/recipes/ResetSpatialElementLocations.py
+++ b/src/ifcpatch/ifcpatch/recipes/ResetSpatialElementLocations.py
@@ -1,3 +1,22 @@
+
+# IfcPatch - IFC patching utiliy
+# Copyright (C) 2020, 2021 Dion Moult
+#
+# This file is part of IfcPatch.
+#
+# IfcPatch is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# IfcPatch is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public License
+# along with IfcPatch. If not, see .
+
class Patcher:
def __init__(self, src, file, logger, args=None):
self.src = src
diff --git a/src/ifcpatch/ifcpatch/recipes/SetRefElevation.py b/src/ifcpatch/ifcpatch/recipes/SetRefElevation.py
index f06e8e77f6..0f330b64f7 100644
--- a/src/ifcpatch/ifcpatch/recipes/SetRefElevation.py
+++ b/src/ifcpatch/ifcpatch/recipes/SetRefElevation.py
@@ -1,3 +1,22 @@
+
+# IfcPatch - IFC patching utiliy
+# Copyright (C) 2020, 2021 Dion Moult
+#
+# This file is part of IfcPatch.
+#
+# IfcPatch is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# IfcPatch is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public License
+# along with IfcPatch. If not, see .
+
class Patcher:
def __init__(self, src, file, logger, args=None):
self.src = src
diff --git a/src/ifcpatch/ifcpatch/recipes/SplitByBuildingStorey.py b/src/ifcpatch/ifcpatch/recipes/SplitByBuildingStorey.py
index 44a112ea5e..f4346fa806 100644
--- a/src/ifcpatch/ifcpatch/recipes/SplitByBuildingStorey.py
+++ b/src/ifcpatch/ifcpatch/recipes/SplitByBuildingStorey.py
@@ -1,3 +1,22 @@
+
+# IfcPatch - IFC patching utiliy
+# Copyright (C) 2020, 2021 Dion Moult
+#
+# This file is part of IfcPatch.
+#
+# IfcPatch is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# IfcPatch is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public License
+# along with IfcPatch. If not, see .
+
class Patcher:
def __init__(self, src, file, logger, args=None):
self.src = src
diff --git a/src/ifcpatch/ifcpatch/recipes/__init__.py b/src/ifcpatch/ifcpatch/recipes/__init__.py
index e69de29bb2..e38f65e07e 100644
--- a/src/ifcpatch/ifcpatch/recipes/__init__.py
+++ b/src/ifcpatch/ifcpatch/recipes/__init__.py
@@ -0,0 +1,19 @@
+
+# IfcPatch - IFC patching utiliy
+# Copyright (C) 2020, 2021 Dion Moult
+#
+# This file is part of IfcPatch.
+#
+# IfcPatch is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# IfcPatch is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public License
+# along with IfcPatch. If not, see .
+
diff --git a/src/ifcpatch/make.py b/src/ifcpatch/make.py
new file mode 100644
index 0000000000..21de52de8e
--- /dev/null
+++ b/src/ifcpatch/make.py
@@ -0,0 +1,26 @@
+#!/usr/bin/env python3
+
+# IfcPatch - IFC patching utiliy
+# Copyright (C) 2020, 2021 Dion Moult
+#
+# This file is part of IfcPatch.
+#
+# IfcPatch is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# IfcPatch is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public License
+# along with IfcPatch. If not, see .
+
+import os
+import subprocess
+
+cmd = f'pyinstaller ./bootstrap.py --name ifcpatch --onefile --clean --add-data "ifcpatch{os.pathsep}ifcpatch"'
+subprocess.check_output(cmd, shell=True)
+
diff --git a/src/ifcsverchok/COPYING b/src/ifcsverchok/COPYING
new file mode 100644
index 0000000000..810fce6e9b
--- /dev/null
+++ b/src/ifcsverchok/COPYING
@@ -0,0 +1,621 @@
+ GNU GENERAL PUBLIC LICENSE
+ Version 3, 29 June 2007
+
+ Copyright (C) 2007 Free Software Foundation, Inc.
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+ Preamble
+
+ The GNU General Public License is a free, copyleft license for
+software and other kinds of works.
+
+ The licenses for most software and other practical works are designed
+to take away your freedom to share and change the works. By contrast,
+the GNU General Public License is intended to guarantee your freedom to
+share and change all versions of a program--to make sure it remains free
+software for all its users. We, the Free Software Foundation, use the
+GNU General Public License for most of our software; it applies also to
+any other work released this way by its authors. You can apply it to
+your programs, too.
+
+ When we speak of free software, we are referring to freedom, not
+price. Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+them if you wish), that you receive source code or can get it if you
+want it, that you can change the software or use pieces of it in new
+free programs, and that you know you can do these things.
+
+ To protect your rights, we need to prevent others from denying you
+these rights or asking you to surrender the rights. Therefore, you have
+certain responsibilities if you distribute copies of the software, or if
+you modify it: responsibilities to respect the freedom of others.
+
+ For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must pass on to the recipients the same
+freedoms that you received. You must make sure that they, too, receive
+or can get the source code. And you must show them these terms so they
+know their rights.
+
+ Developers that use the GNU GPL protect your rights with two steps:
+(1) assert copyright on the software, and (2) offer you this License
+giving you legal permission to copy, distribute and/or modify it.
+
+ For the developers' and authors' protection, the GPL clearly explains
+that there is no warranty for this free software. For both users' and
+authors' sake, the GPL requires that modified versions be marked as
+changed, so that their problems will not be attributed erroneously to
+authors of previous versions.
+
+ Some devices are designed to deny users access to install or run
+modified versions of the software inside them, although the manufacturer
+can do so. This is fundamentally incompatible with the aim of
+protecting users' freedom to change the software. The systematic
+pattern of such abuse occurs in the area of products for individuals to
+use, which is precisely where it is most unacceptable. Therefore, we
+have designed this version of the GPL to prohibit the practice for those
+products. If such problems arise substantially in other domains, we
+stand ready to extend this provision to those domains in future versions
+of the GPL, as needed to protect the freedom of users.
+
+ Finally, every program is threatened constantly by software patents.
+States should not allow patents to restrict development and use of
+software on general-purpose computers, but in those that do, we wish to
+avoid the special danger that patents applied to a free program could
+make it effectively proprietary. To prevent this, the GPL assures that
+patents cannot be used to render the program non-free.
+
+ The precise terms and conditions for copying, distribution and
+modification follow.
+
+ TERMS AND CONDITIONS
+
+ 0. Definitions.
+
+ "This License" refers to version 3 of the GNU General Public License.
+
+ "Copyright" also means copyright-like laws that apply to other kinds of
+works, such as semiconductor masks.
+
+ "The Program" refers to any copyrightable work licensed under this
+License. Each licensee is addressed as "you". "Licensees" and
+"recipients" may be individuals or organizations.
+
+ To "modify" a work means to copy from or adapt all or part of the work
+in a fashion requiring copyright permission, other than the making of an
+exact copy. The resulting work is called a "modified version" of the
+earlier work or a work "based on" the earlier work.
+
+ A "covered work" means either the unmodified Program or a work based
+on the Program.
+
+ To "propagate" a work means to do anything with it that, without
+permission, would make you directly or secondarily liable for
+infringement under applicable copyright law, except executing it on a
+computer or modifying a private copy. Propagation includes copying,
+distribution (with or without modification), making available to the
+public, and in some countries other activities as well.
+
+ To "convey" a work means any kind of propagation that enables other
+parties to make or receive copies. Mere interaction with a user through
+a computer network, with no transfer of a copy, is not conveying.
+
+ An interactive user interface displays "Appropriate Legal Notices"
+to the extent that it includes a convenient and prominently visible
+feature that (1) displays an appropriate copyright notice, and (2)
+tells the user that there is no warranty for the work (except to the
+extent that warranties are provided), that licensees may convey the
+work under this License, and how to view a copy of this License. If
+the interface presents a list of user commands or options, such as a
+menu, a prominent item in the list meets this criterion.
+
+ 1. Source Code.
+
+ The "source code" for a work means the preferred form of the work
+for making modifications to it. "Object code" means any non-source
+form of a work.
+
+ A "Standard Interface" means an interface that either is an official
+standard defined by a recognized standards body, or, in the case of
+interfaces specified for a particular programming language, one that
+is widely used among developers working in that language.
+
+ The "System Libraries" of an executable work include anything, other
+than the work as a whole, that (a) is included in the normal form of
+packaging a Major Component, but which is not part of that Major
+Component, and (b) serves only to enable use of the work with that
+Major Component, or to implement a Standard Interface for which an
+implementation is available to the public in source code form. A
+"Major Component", in this context, means a major essential component
+(kernel, window system, and so on) of the specific operating system
+(if any) on which the executable work runs, or a compiler used to
+produce the work, or an object code interpreter used to run it.
+
+ The "Corresponding Source" for a work in object code form means all
+the source code needed to generate, install, and (for an executable
+work) run the object code and to modify the work, including scripts to
+control those activities. However, it does not include the work's
+System Libraries, or general-purpose tools or generally available free
+programs which are used unmodified in performing those activities but
+which are not part of the work. For example, Corresponding Source
+includes interface definition files associated with source files for
+the work, and the source code for shared libraries and dynamically
+linked subprograms that the work is specifically designed to require,
+such as by intimate data communication or control flow between those
+subprograms and other parts of the work.
+
+ The Corresponding Source need not include anything that users
+can regenerate automatically from other parts of the Corresponding
+Source.
+
+ The Corresponding Source for a work in source code form is that
+same work.
+
+ 2. Basic Permissions.
+
+ All rights granted under this License are granted for the term of
+copyright on the Program, and are irrevocable provided the stated
+conditions are met. This License explicitly affirms your unlimited
+permission to run the unmodified Program. The output from running a
+covered work is covered by this License only if the output, given its
+content, constitutes a covered work. This License acknowledges your
+rights of fair use or other equivalent, as provided by copyright law.
+
+ You may make, run and propagate covered works that you do not
+convey, without conditions so long as your license otherwise remains
+in force. You may convey covered works to others for the sole purpose
+of having them make modifications exclusively for you, or provide you
+with facilities for running those works, provided that you comply with
+the terms of this License in conveying all material for which you do
+not control copyright. Those thus making or running the covered works
+for you must do so exclusively on your behalf, under your direction
+and control, on terms that prohibit them from making any copies of
+your copyrighted material outside their relationship with you.
+
+ Conveying under any other circumstances is permitted solely under
+the conditions stated below. Sublicensing is not allowed; section 10
+makes it unnecessary.
+
+ 3. Protecting Users' Legal Rights From Anti-Circumvention Law.
+
+ No covered work shall be deemed part of an effective technological
+measure under any applicable law fulfilling obligations under article
+11 of the WIPO copyright treaty adopted on 20 December 1996, or
+similar laws prohibiting or restricting circumvention of such
+measures.
+
+ When you convey a covered work, you waive any legal power to forbid
+circumvention of technological measures to the extent such circumvention
+is effected by exercising rights under this License with respect to
+the covered work, and you disclaim any intention to limit operation or
+modification of the work as a means of enforcing, against the work's
+users, your or third parties' legal rights to forbid circumvention of
+technological measures.
+
+ 4. Conveying Verbatim Copies.
+
+ You may convey verbatim copies of the Program's source code as you
+receive it, in any medium, provided that you conspicuously and
+appropriately publish on each copy an appropriate copyright notice;
+keep intact all notices stating that this License and any
+non-permissive terms added in accord with section 7 apply to the code;
+keep intact all notices of the absence of any warranty; and give all
+recipients a copy of this License along with the Program.
+
+ You may charge any price or no price for each copy that you convey,
+and you may offer support or warranty protection for a fee.
+
+ 5. Conveying Modified Source Versions.
+
+ You may convey a work based on the Program, or the modifications to
+produce it from the Program, in the form of source code under the
+terms of section 4, provided that you also meet all of these conditions:
+
+ a) The work must carry prominent notices stating that you modified
+ it, and giving a relevant date.
+
+ b) The work must carry prominent notices stating that it is
+ released under this License and any conditions added under section
+ 7. This requirement modifies the requirement in section 4 to
+ "keep intact all notices".
+
+ c) You must license the entire work, as a whole, under this
+ License to anyone who comes into possession of a copy. This
+ License will therefore apply, along with any applicable section 7
+ additional terms, to the whole of the work, and all its parts,
+ regardless of how they are packaged. This License gives no
+ permission to license the work in any other way, but it does not
+ invalidate such permission if you have separately received it.
+
+ d) If the work has interactive user interfaces, each must display
+ Appropriate Legal Notices; however, if the Program has interactive
+ interfaces that do not display Appropriate Legal Notices, your
+ work need not make them do so.
+
+ A compilation of a covered work with other separate and independent
+works, which are not by their nature extensions of the covered work,
+and which are not combined with it such as to form a larger program,
+in or on a volume of a storage or distribution medium, is called an
+"aggregate" if the compilation and its resulting copyright are not
+used to limit the access or legal rights of the compilation's users
+beyond what the individual works permit. Inclusion of a covered work
+in an aggregate does not cause this License to apply to the other
+parts of the aggregate.
+
+ 6. Conveying Non-Source Forms.
+
+ You may convey a covered work in object code form under the terms
+of sections 4 and 5, provided that you also convey the
+machine-readable Corresponding Source under the terms of this License,
+in one of these ways:
+
+ a) Convey the object code in, or embodied in, a physical product
+ (including a physical distribution medium), accompanied by the
+ Corresponding Source fixed on a durable physical medium
+ customarily used for software interchange.
+
+ b) Convey the object code in, or embodied in, a physical product
+ (including a physical distribution medium), accompanied by a
+ written offer, valid for at least three years and valid for as
+ long as you offer spare parts or customer support for that product
+ model, to give anyone who possesses the object code either (1) a
+ copy of the Corresponding Source for all the software in the
+ product that is covered by this License, on a durable physical
+ medium customarily used for software interchange, for a price no
+ more than your reasonable cost of physically performing this
+ conveying of source, or (2) access to copy the
+ Corresponding Source from a network server at no charge.
+
+ c) Convey individual copies of the object code with a copy of the
+ written offer to provide the Corresponding Source. This
+ alternative is allowed only occasionally and noncommercially, and
+ only if you received the object code with such an offer, in accord
+ with subsection 6b.
+
+ d) Convey the object code by offering access from a designated
+ place (gratis or for a charge), and offer equivalent access to the
+ Corresponding Source in the same way through the same place at no
+ further charge. You need not require recipients to copy the
+ Corresponding Source along with the object code. If the place to
+ copy the object code is a network server, the Corresponding Source
+ may be on a different server (operated by you or a third party)
+ that supports equivalent copying facilities, provided you maintain
+ clear directions next to the object code saying where to find the
+ Corresponding Source. Regardless of what server hosts the
+ Corresponding Source, you remain obligated to ensure that it is
+ available for as long as needed to satisfy these requirements.
+
+ e) Convey the object code using peer-to-peer transmission, provided
+ you inform other peers where the object code and Corresponding
+ Source of the work are being offered to the general public at no
+ charge under subsection 6d.
+
+ A separable portion of the object code, whose source code is excluded
+from the Corresponding Source as a System Library, need not be
+included in conveying the object code work.
+
+ A "User Product" is either (1) a "consumer product", which means any
+tangible personal property which is normally used for personal, family,
+or household purposes, or (2) anything designed or sold for incorporation
+into a dwelling. In determining whether a product is a consumer product,
+doubtful cases shall be resolved in favor of coverage. For a particular
+product received by a particular user, "normally used" refers to a
+typical or common use of that class of product, regardless of the status
+of the particular user or of the way in which the particular user
+actually uses, or expects or is expected to use, the product. A product
+is a consumer product regardless of whether the product has substantial
+commercial, industrial or non-consumer uses, unless such uses represent
+the only significant mode of use of the product.
+
+ "Installation Information" for a User Product means any methods,
+procedures, authorization keys, or other information required to install
+and execute modified versions of a covered work in that User Product from
+a modified version of its Corresponding Source. The information must
+suffice to ensure that the continued functioning of the modified object
+code is in no case prevented or interfered with solely because
+modification has been made.
+
+ If you convey an object code work under this section in, or with, or
+specifically for use in, a User Product, and the conveying occurs as
+part of a transaction in which the right of possession and use of the
+User Product is transferred to the recipient in perpetuity or for a
+fixed term (regardless of how the transaction is characterized), the
+Corresponding Source conveyed under this section must be accompanied
+by the Installation Information. But this requirement does not apply
+if neither you nor any third party retains the ability to install
+modified object code on the User Product (for example, the work has
+been installed in ROM).
+
+ The requirement to provide Installation Information does not include a
+requirement to continue to provide support service, warranty, or updates
+for a work that has been modified or installed by the recipient, or for
+the User Product in which it has been modified or installed. Access to a
+network may be denied when the modification itself materially and
+adversely affects the operation of the network or violates the rules and
+protocols for communication across the network.
+
+ Corresponding Source conveyed, and Installation Information provided,
+in accord with this section must be in a format that is publicly
+documented (and with an implementation available to the public in
+source code form), and must require no special password or key for
+unpacking, reading or copying.
+
+ 7. Additional Terms.
+
+ "Additional permissions" are terms that supplement the terms of this
+License by making exceptions from one or more of its conditions.
+Additional permissions that are applicable to the entire Program shall
+be treated as though they were included in this License, to the extent
+that they are valid under applicable law. If additional permissions
+apply only to part of the Program, that part may be used separately
+under those permissions, but the entire Program remains governed by
+this License without regard to the additional permissions.
+
+ When you convey a copy of a covered work, you may at your option
+remove any additional permissions from that copy, or from any part of
+it. (Additional permissions may be written to require their own
+removal in certain cases when you modify the work.) You may place
+additional permissions on material, added by you to a covered work,
+for which you have or can give appropriate copyright permission.
+
+ Notwithstanding any other provision of this License, for material you
+add to a covered work, you may (if authorized by the copyright holders of
+that material) supplement the terms of this License with terms:
+
+ a) Disclaiming warranty or limiting liability differently from the
+ terms of sections 15 and 16 of this License; or
+
+ b) Requiring preservation of specified reasonable legal notices or
+ author attributions in that material or in the Appropriate Legal
+ Notices displayed by works containing it; or
+
+ c) Prohibiting misrepresentation of the origin of that material, or
+ requiring that modified versions of such material be marked in
+ reasonable ways as different from the original version; or
+
+ d) Limiting the use for publicity purposes of names of licensors or
+ authors of the material; or
+
+ e) Declining to grant rights under trademark law for use of some
+ trade names, trademarks, or service marks; or
+
+ f) Requiring indemnification of licensors and authors of that
+ material by anyone who conveys the material (or modified versions of
+ it) with contractual assumptions of liability to the recipient, for
+ any liability that these contractual assumptions directly impose on
+ those licensors and authors.
+
+ All other non-permissive additional terms are considered "further
+restrictions" within the meaning of section 10. If the Program as you
+received it, or any part of it, contains a notice stating that it is
+governed by this License along with a term that is a further
+restriction, you may remove that term. If a license document contains
+a further restriction but permits relicensing or conveying under this
+License, you may add to a covered work material governed by the terms
+of that license document, provided that the further restriction does
+not survive such relicensing or conveying.
+
+ If you add terms to a covered work in accord with this section, you
+must place, in the relevant source files, a statement of the
+additional terms that apply to those files, or a notice indicating
+where to find the applicable terms.
+
+ Additional terms, permissive or non-permissive, may be stated in the
+form of a separately written license, or stated as exceptions;
+the above requirements apply either way.
+
+ 8. Termination.
+
+ You may not propagate or modify a covered work except as expressly
+provided under this License. Any attempt otherwise to propagate or
+modify it is void, and will automatically terminate your rights under
+this License (including any patent licenses granted under the third
+paragraph of section 11).
+
+ However, if you cease all violation of this License, then your
+license from a particular copyright holder is reinstated (a)
+provisionally, unless and until the copyright holder explicitly and
+finally terminates your license, and (b) permanently, if the copyright
+holder fails to notify you of the violation by some reasonable means
+prior to 60 days after the cessation.
+
+ Moreover, your license from a particular copyright holder is
+reinstated permanently if the copyright holder notifies you of the
+violation by some reasonable means, this is the first time you have
+received notice of violation of this License (for any work) from that
+copyright holder, and you cure the violation prior to 30 days after
+your receipt of the notice.
+
+ Termination of your rights under this section does not terminate the
+licenses of parties who have received copies or rights from you under
+this License. If your rights have been terminated and not permanently
+reinstated, you do not qualify to receive new licenses for the same
+material under section 10.
+
+ 9. Acceptance Not Required for Having Copies.
+
+ You are not required to accept this License in order to receive or
+run a copy of the Program. Ancillary propagation of a covered work
+occurring solely as a consequence of using peer-to-peer transmission
+to receive a copy likewise does not require acceptance. However,
+nothing other than this License grants you permission to propagate or
+modify any covered work. These actions infringe copyright if you do
+not accept this License. Therefore, by modifying or propagating a
+covered work, you indicate your acceptance of this License to do so.
+
+ 10. Automatic Licensing of Downstream Recipients.
+
+ Each time you convey a covered work, the recipient automatically
+receives a license from the original licensors, to run, modify and
+propagate that work, subject to this License. You are not responsible
+for enforcing compliance by third parties with this License.
+
+ An "entity transaction" is a transaction transferring control of an
+organization, or substantially all assets of one, or subdividing an
+organization, or merging organizations. If propagation of a covered
+work results from an entity transaction, each party to that
+transaction who receives a copy of the work also receives whatever
+licenses to the work the party's predecessor in interest had or could
+give under the previous paragraph, plus a right to possession of the
+Corresponding Source of the work from the predecessor in interest, if
+the predecessor has it or can get it with reasonable efforts.
+
+ You may not impose any further restrictions on the exercise of the
+rights granted or affirmed under this License. For example, you may
+not impose a license fee, royalty, or other charge for exercise of
+rights granted under this License, and you may not initiate litigation
+(including a cross-claim or counterclaim in a lawsuit) alleging that
+any patent claim is infringed by making, using, selling, offering for
+sale, or importing the Program or any portion of it.
+
+ 11. Patents.
+
+ A "contributor" is a copyright holder who authorizes use under this
+License of the Program or a work on which the Program is based. The
+work thus licensed is called the contributor's "contributor version".
+
+ A contributor's "essential patent claims" are all patent claims
+owned or controlled by the contributor, whether already acquired or
+hereafter acquired, that would be infringed by some manner, permitted
+by this License, of making, using, or selling its contributor version,
+but do not include claims that would be infringed only as a
+consequence of further modification of the contributor version. For
+purposes of this definition, "control" includes the right to grant
+patent sublicenses in a manner consistent with the requirements of
+this License.
+
+ Each contributor grants you a non-exclusive, worldwide, royalty-free
+patent license under the contributor's essential patent claims, to
+make, use, sell, offer for sale, import and otherwise run, modify and
+propagate the contents of its contributor version.
+
+ In the following three paragraphs, a "patent license" is any express
+agreement or commitment, however denominated, not to enforce a patent
+(such as an express permission to practice a patent or covenant not to
+sue for patent infringement). To "grant" such a patent license to a
+party means to make such an agreement or commitment not to enforce a
+patent against the party.
+
+ If you convey a covered work, knowingly relying on a patent license,
+and the Corresponding Source of the work is not available for anyone
+to copy, free of charge and under the terms of this License, through a
+publicly available network server or other readily accessible means,
+then you must either (1) cause the Corresponding Source to be so
+available, or (2) arrange to deprive yourself of the benefit of the
+patent license for this particular work, or (3) arrange, in a manner
+consistent with the requirements of this License, to extend the patent
+license to downstream recipients. "Knowingly relying" means you have
+actual knowledge that, but for the patent license, your conveying the
+covered work in a country, or your recipient's use of the covered work
+in a country, would infringe one or more identifiable patents in that
+country that you have reason to believe are valid.
+
+ If, pursuant to or in connection with a single transaction or
+arrangement, you convey, or propagate by procuring conveyance of, a
+covered work, and grant a patent license to some of the parties
+receiving the covered work authorizing them to use, propagate, modify
+or convey a specific copy of the covered work, then the patent license
+you grant is automatically extended to all recipients of the covered
+work and works based on it.
+
+ A patent license is "discriminatory" if it does not include within
+the scope of its coverage, prohibits the exercise of, or is
+conditioned on the non-exercise of one or more of the rights that are
+specifically granted under this License. You may not convey a covered
+work if you are a party to an arrangement with a third party that is
+in the business of distributing software, under which you make payment
+to the third party based on the extent of your activity of conveying
+the work, and under which the third party grants, to any of the
+parties who would receive the covered work from you, a discriminatory
+patent license (a) in connection with copies of the covered work
+conveyed by you (or copies made from those copies), or (b) primarily
+for and in connection with specific products or compilations that
+contain the covered work, unless you entered into that arrangement,
+or that patent license was granted, prior to 28 March 2007.
+
+ Nothing in this License shall be construed as excluding or limiting
+any implied license or other defenses to infringement that may
+otherwise be available to you under applicable patent law.
+
+ 12. No Surrender of Others' Freedom.
+
+ If conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot convey a
+covered work so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you may
+not convey it at all. For example, if you agree to terms that obligate you
+to collect a royalty for further conveying from those to whom you convey
+the Program, the only way you could satisfy both those terms and this
+License would be to refrain entirely from conveying the Program.
+
+ 13. Use with the GNU Affero General Public License.
+
+ Notwithstanding any other provision of this License, you have
+permission to link or combine any covered work with a work licensed
+under version 3 of the GNU Affero General Public License into a single
+combined work, and to convey the resulting work. The terms of this
+License will continue to apply to the part which is the covered work,
+but the special requirements of the GNU Affero General Public License,
+section 13, concerning interaction through a network will apply to the
+combination as such.
+
+ 14. Revised Versions of this License.
+
+ The Free Software Foundation may publish revised and/or new versions of
+the GNU General Public License from time to time. Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+ Each version is given a distinguishing version number. If the
+Program specifies that a certain numbered version of the GNU General
+Public License "or any later version" applies to it, you have the
+option of following the terms and conditions either of that numbered
+version or of any later version published by the Free Software
+Foundation. If the Program does not specify a version number of the
+GNU General Public License, you may choose any version ever published
+by the Free Software Foundation.
+
+ If the Program specifies that a proxy can decide which future
+versions of the GNU General Public License can be used, that proxy's
+public statement of acceptance of a version permanently authorizes you
+to choose that version for the Program.
+
+ Later license versions may give you additional or different
+permissions. However, no additional obligations are imposed on any
+author or copyright holder as a result of your choosing to follow a
+later version.
+
+ 15. Disclaimer of Warranty.
+
+ THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
+APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
+HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
+OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
+THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
+IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
+ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+ 16. Limitation of Liability.
+
+ IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
+THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
+GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
+USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
+DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
+PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
+EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGES.
+
+ 17. Interpretation of Sections 15 and 16.
+
+ If the disclaimer of warranty and limitation of liability provided
+above cannot be given local legal effect according to their terms,
+reviewing courts shall apply local law that most closely approximates
+an absolute waiver of all civil liability in connection with the
+Program, unless a warranty or assumption of liability accompanies a
+copy of the Program in return for a fee.
+
+ END OF TERMS AND CONDITIONS
diff --git a/src/ifcsverchok/__init__.py b/src/ifcsverchok/__init__.py
index 5cf6e07600..91890a934a 100644
--- a/src/ifcsverchok/__init__.py
+++ b/src/ifcsverchok/__init__.py
@@ -43,6 +43,7 @@ def nodes_index():
("ifc.get_property", "SvIfcGetProperty"),
("ifc.get_attribute", "SvIfcGetAttribute"),
("ifc.select_blender_objects", "SvIfcSelectBlenderObjects"),
+ ("ifc.api", "SvIfcApi"),
],
)
]
diff --git a/src/ifcsverchok/nodes/ifc/api.py b/src/ifcsverchok/nodes/ifc/api.py
new file mode 100644
index 0000000000..81bb53c06a
--- /dev/null
+++ b/src/ifcsverchok/nodes/ifc/api.py
@@ -0,0 +1,88 @@
+import bpy
+import ifcopenshell
+import ifcopenshell.api
+import ifcsverchok.helper
+from bpy.props import StringProperty, EnumProperty
+from sverchok.node_tree import SverchCustomTreeNode
+from sverchok.data_structure import updateNode
+
+
+def update_usecase(self, context):
+ module_usecase = self.get_module_usecase()
+ if module_usecase:
+ self.generate_node(*module_usecase)
+
+
+class SvIfcTooltip(bpy.types.Operator):
+ bl_idname = "node.sv_ifc_tooltip"
+ bl_label = "IFC Info"
+ tooltip: bpy.props.StringProperty()
+
+ @classmethod
+ def description(cls, context, properties):
+ return properties.tooltip
+
+ def execute(self, context):
+ return {"FINISHED"}
+
+
+class SvIfcApi(bpy.types.Node, SverchCustomTreeNode, ifcsverchok.helper.SvIfcCore):
+ bl_idname = "SvIfcApi"
+ bl_label = "IFC API"
+ tooltip: StringProperty(name="Tooltip")
+ usecase: StringProperty(name="Usecase", update=update_usecase)
+
+ def sv_init(self, context):
+ self.inputs.new("SvStringsSocket", "usecase").prop_name = "usecase"
+ self.outputs.new("SvVerticesSocket", "file")
+
+ def draw_buttons(self, context, layout):
+ op = layout.operator("node.sv_ifc_tooltip", text="", icon="QUESTION", emboss=False)
+ op.tooltip = self.tooltip
+
+ def process(self):
+ print("process")
+ module_usecase = self.get_module_usecase()
+ if module_usecase:
+ self.sv_input_names = [i.name for i in self.inputs]
+ super().process()
+
+ def get_module_usecase(self):
+ usecase = self.inputs["usecase"].sv_get()[0][0]
+ if usecase:
+ return usecase.split(".")
+
+ def generate_node(self, module, usecase):
+ try:
+ node_data = ifcopenshell.api.extract_docs(module, usecase)
+ except:
+ print("Node not yet implemented:", module, usecase)
+ return
+ while len(self.inputs) > 1:
+ self.inputs.remove(self.inputs[-1])
+
+ self.tooltip = ""
+ for name, data in node_data["inputs"].items():
+ setattr(SvIfcApi, name, StringProperty(name=name, update=updateNode))
+ self.inputs.new("SvStringsSocket", name).prop_name = name
+ if "default" in data:
+ self.tooltip = f"{name} ({data['default']}): {data['description']}\n"
+ else:
+ self.tooltip = f"{name}: {data['description']}\n"
+ self.tooltip = self.tooltip.strip()
+
+ def process_ifc(self, usecase, *setting_values):
+ if usecase:
+ settings = dict(zip(self.sv_input_names[1:], setting_values))
+ settings = {k: v for k, v in settings.items() if v != ""}
+ self.outputs["file"].sv_set([ifcopenshell.api.run(usecase, **settings)])
+
+
+def register():
+ bpy.utils.register_class(SvIfcTooltip)
+ bpy.utils.register_class(SvIfcApi)
+
+
+def unregister():
+ bpy.utils.unregister_class(SvIfcApi)
+ bpy.utils.unregister_class(SvIfcTooltip)
diff --git a/src/ifcwrap/IfcPython.i b/src/ifcwrap/IfcPython.i
index 7af36d71e1..e20e09641b 100644
--- a/src/ifcwrap/IfcPython.i
+++ b/src/ifcwrap/IfcPython.i
@@ -165,3 +165,7 @@
%include "IfcGeomWrapper.i"
%include "IfcParseWrapper.i"
+
+namespace std {
+ %template(float_array_3) array;
+}
diff --git a/src/serializers/SvgSerializer.cpp b/src/serializers/SvgSerializer.cpp
index 5aa43bd4d4..a2d29fe7b1 100644
--- a/src/serializers/SvgSerializer.cpp
+++ b/src/serializers/SvgSerializer.cpp
@@ -543,7 +543,12 @@ void SvgSerializer::write(const IfcGeom::BRepElement* brep_obj) {
const gp_Trsf& trsf = brep_obj->transformation().data();
const bool is_section = (section_ref_ && object_type && *section_ref_ == *object_type);
- const bool is_elevation = (elevation_ref_ && object_type && *elevation_ref_ == *object_type);
+ bool is_elevation = false;
+ if (elevation_ref_ && object_type) {
+ is_elevation = *elevation_ref_ == *object_type;
+ } else if (elevation_ref_guid_) {
+ is_elevation = *elevation_ref_guid_ == brep_obj->guid();
+ }
if (is_section || is_elevation) {
BRepBuilderAPI_Transform make_transform_global(compound_local, trsf, true);
@@ -663,7 +668,7 @@ void SvgSerializer::write(const IfcGeom::BRepElement* brep_obj) {
// @todo is it correct to call nameElement() here with a single storey (what if this element spans multiple?)
geometry_data data{ compound_local, dash_arrays, trsf, brep_obj->product(), storey, elev, brep_obj->name(), nameElement(storey, brep_obj) };
- if (auto_section_ || auto_elevation_ || section_ref_ || elevation_ref_) {
+ if (auto_section_ || auto_elevation_ || section_ref_ || elevation_ref_ || elevation_ref_guid_) {
element_buffer_.push_back(data);
}
@@ -1196,11 +1201,17 @@ void SvgSerializer::write(const geometry_data& data) {
emitted = true;
+ auto svg_name = data.svg_name;
+ if (object_type.size()) {
+ // prefix class to indicate this is a cut element
+ boost::replace_all(svg_name, "class=\"", "class=\"cut ");
+ }
+
if (po == nullptr) {
if (storey) {
- po = &start_path(pln, storey, data.svg_name);
+ po = &start_path(pln, storey, svg_name);
} else {
- po = &start_path(pln, drawing_name, data.svg_name);
+ po = &start_path(pln, drawing_name, svg_name);
}
}
@@ -1960,13 +1971,19 @@ void SvgSerializer::finalize() {
svg_file.stream << " first]) << ">\n";
}
}
+
+ previous = it->first;
+
+ if (it->second.second.empty()) {
+ continue;
+ }
+
svg_file.stream << " second.first << ">\n";
std::vector::const_iterator jt;
for (jt = it->second.second.begin(); jt != it->second.second.end(); ++jt) {
svg_file.stream << jt->str();
}
svg_file.stream << " \n";
- previous = it->first;
}
if (previous) {
@@ -2000,45 +2017,49 @@ void SvgSerializer::doWriteHeader() {
" \n"
" \n"
" \n"
- " \n"
- " \n";
}
-
- svg_file.stream <<
- " ]]>\n"
- " \n";
}
namespace {
diff --git a/src/serializers/SvgSerializer.h b/src/serializers/SvgSerializer.h
index f57e6d38a3..39f2c1c849 100644
--- a/src/serializers/SvgSerializer.h
+++ b/src/serializers/SvgSerializer.h
@@ -157,6 +157,7 @@ protected:
bool auto_section_, auto_elevation_;
bool use_namespace_, use_hlr_poly_, always_project_, polygonal_;
bool emit_building_storeys_;
+ bool no_css_;
IfcParse::IfcFile* file;
IfcUtil::IfcBaseEntity* storey_;
@@ -167,7 +168,7 @@ protected:
float_item_list xcoords, ycoords, radii;
size_t xcoords_begin, ycoords_begin, radii_begin;
- boost::optional section_ref_, elevation_ref_;
+ boost::optional section_ref_, elevation_ref_, elevation_ref_guid_;
std::list element_buffer_;
@@ -201,6 +202,7 @@ public:
, always_project_(false)
, polygonal_(false)
, emit_building_storeys_(true)
+ , no_css_(false)
, file(0)
, storey_(0)
, xcoords_begin(0)
@@ -242,8 +244,15 @@ public:
void setSectionRef(const boost::optional& s) {
section_ref_ = s;
}
+
void setElevationRef(const boost::optional& s) {
elevation_ref_ = s;
+ elevation_ref_guid_ = boost::none;
+ }
+
+ void setElevationRefGuid(const boost::optional& s) {
+ elevation_ref_ = boost::none;
+ elevation_ref_guid_ = s;
}
void setAutoSection(bool b) {
@@ -275,6 +284,10 @@ public:
emit_building_storeys_ = !b;
}
+ void setNoCSS(bool b) {
+ no_css_ = b;
+ }
+
void setScale(double s) { scale_ = s; }
void setDrawingCenter(double x, double y) {
center_x_ = x; center_y_ = y;