Archi-Cadlinkeuses, Archi-Cadlinkeurs,

Vous êtes les bienvenus.

Ce nouveau forum, ouvert depuis le mois de novembre 2018, a pour objectif, vocation et ambition de répondre à toutes vos interrogations sur l'outil logiciel ArchiCAD®, développé par GRAPHISOFT© (au delà des canaux officiels type forum éditeur, distributeur, revendeurs... et des "baratins commerciaux" ! ;-)).

Il s'adresse à tous, du débutant a l'expert, et repose exclusivement sur le bénévolat collaboratif et participatif.

Pour éviter toutes pertes de cette future base de connaissances et la pérenniser, ce forum est géré, administré, développé et financé par une association loi 1901 à but non lucratif, ou vous pouvez (ou pas) adhérer comme membre actif, moyennent une cotisation faible et attractive !

Cet espace est libre, sans contraintes d'intérêts tiers (éditeur, distributeur, revendeur, etc.) et donc indépendant.

Il est entièrement dédié aux utilisateurs (dessinateur-projeteur, technicien, maitre d’œuvre, collaborateur d'architecte, architecte, ingénieur, etc...) qui, "sur le terrain" conçoivent, produisent, réalisent, diffusent, des publications numériques et/ou "papier", avec ce logiciel.

Les accès au site et à ses différentes rubriques sont entièrement libres et gratuits après inscription. Les pièces téléchargeables et le droit à poster exigent de même l'inscription avec le remplissage de votre signature stipulant votre OS (Mac ou Windows) et votre numéro de version d'ArchiCAD® (de la 4.5 à la 22!).
C'est uniquement fait pour faciliter les réponses.

La rubrique "Je me présente" vous permettra d'accéder à de nouveaux salons permettant le téléchargement d'objets mis à disposition et de quelques autres goodies à venir.

Les membres fondateurs :

Bernard, David, Felipe, Frédéric, Maël, Nicolas, Pierre, Sam, Simon, Yves


PS : Énorme remerciement à Eric Wilk pour sa confiance renouvelée aux "irréductibles" (les "anciens" te saluent tous), et le lien de ta page d'au revoir sur la notre ;-)

Coordonnée à l’int. d’un périmètre  [RÉSOLU]

Les trucs un peu plus complexes, le cœur des objets paramétriques
Avatar de l’utilisateur
Zanel
Messages : 123
Inscription : 19 nov. 2018 11:40
Localisation : Lausanne - CH
Version d'Archicad : ArchiCad 21
Système d'exploitation : Windows 10

Coordonnée à l’int. d’un périmètre

Message par Zanel » 27 janv. 2019 20:32

Bonsoir,
Avez-vous une idée s’il existe une fonction qui retourne une valeur vraie si une coord XY se trouve à l’intérieur d’un périmètre formé par une liste de sommet ? Si non, une piste pour une macro maison :geek: ? C’est chaud, non ? :shock:
En vous remerciant.
Lausanne en Helvétie
ArchiCad 21 - Windows 10

Avatar de l’utilisateur
Pierre Fernandez
Messages : 233
Inscription : 18 nov. 2018 13:14
Localisation : Tours
LinkedIn : www.linkedin.com/in/pierre-fernandez-a1263255/
Version d'Archicad : 22
Système d'exploitation : Windows
A été remercié : 4 fois
Contact :

Re: Coordonnée à l’int. d’un périmètre

Message par Pierre Fernandez » 27 janv. 2019 22:19

Bonsoir
Tu dois trouver ça dans le bouquin de Dwight Atkinson

ERRATUM : Je voulais parler d'Andrew Watson
Windows 10 - ArchiCAD 15 à 22
BIM Services Patrimoine Virtuel

Avatar de l’utilisateur
Fmr
Messages : 1075
Inscription : 14 nov. 2018 17:14
Localisation : Les Sables d'Olonne
Version d'Archicad : AC 22
Système d'exploitation : MacOS 10.12
A remercié : 10 fois
A été remercié : 4 fois
Contact :

Re: Coordonnée à l’int. d’un périmètre

Message par Fmr » 27 janv. 2019 22:30

Bonsoir Claude

Ca doit être possible l'outil zone y arrive… :mrgreen:
Il arrive à reconnaître les objets placés dans son emprise.

Serait il possible de générer une hachure avec ta liste de point, serait il possible de générer une hachure ronde centrée autour de ton point, de soustraire la deuxième par rapport à la première et de comparer surface avant et après. Il n'y aura qu'à gérer le moins bêtement possible les cas de proximité ou le résultat est compris entre Surface 1 et Surface 1 - Surface 2.
La Chaume —Les Sables d'Olonne
Architecte DPLG —Formateur ArchiCAD — Consultant BIM
https://www.bimservices.fr/
ArchiCAD 4.12 à 22 — MacBook Pro 2,5 Ghz i7— Mac OS 10.11.6

Avatar de l’utilisateur
Fmr
Messages : 1075
Inscription : 14 nov. 2018 17:14
Localisation : Les Sables d'Olonne
Version d'Archicad : AC 22
Système d'exploitation : MacOS 10.12
A remercié : 10 fois
A été remercié : 4 fois
Contact :

Re: Coordonnée à l’int. d’un périmètre

Message par Fmr » 27 janv. 2019 22:32

Pierre Fernandez a écrit :
27 janv. 2019 22:19
Bonsoir
Tu dois trouver ça dans le bouquin de Dwight Atkinson
Dwight a écrit sur le GDL ? J'ai au bureau l'extra ordinaire livre qu'il avait fait sur Lightworks, je ne savais pas qu'il avait écrit autre chose.
La Chaume —Les Sables d'Olonne
Architecte DPLG —Formateur ArchiCAD — Consultant BIM
https://www.bimservices.fr/
ArchiCAD 4.12 à 22 — MacBook Pro 2,5 Ghz i7— Mac OS 10.11.6

Avatar de l’utilisateur
Pierre Fernandez
Messages : 233
Inscription : 18 nov. 2018 13:14
Localisation : Tours
LinkedIn : www.linkedin.com/in/pierre-fernandez-a1263255/
Version d'Archicad : 22
Système d'exploitation : Windows
A été remercié : 4 fois
Contact :

Re: Coordonnée à l’int. d’un périmètre

Message par Pierre Fernandez » 27 janv. 2019 22:50

Fmr a écrit :
27 janv. 2019 22:32
Pierre Fernandez a écrit :
27 janv. 2019 22:19
Bonsoir
Tu dois trouver ça dans le bouquin de Dwight Atkinson
Dwight a écrit sur le GDL ?
Oups, pardon, je me suis trompé
Je voulais parler du bouquin de Andrew Watson
Windows 10 - ArchiCAD 15 à 22
BIM Services Patrimoine Virtuel

Avatar de l’utilisateur
Zanel
Messages : 123
Inscription : 19 nov. 2018 11:40
Localisation : Lausanne - CH
Version d'Archicad : ArchiCad 21
Système d'exploitation : Windows 10

Re: Coordonnée à l’int. d’un périmètre

Message par Zanel » 28 janv. 2019 09:01

Bonjour vous 2 et merci. Vais jeter un œil sur l'œuvre du Doc Watson. Fred, mmm, suis pessimiste sur ton idée :mrgreen: !
Lausanne en Helvétie
ArchiCad 21 - Windows 10

Avatar de l’utilisateur
Zanel
Messages : 123
Inscription : 19 nov. 2018 11:40
Localisation : Lausanne - CH
Version d'Archicad : ArchiCad 21
Système d'exploitation : Windows 10

Re: Coordonnée à l’int. d’un périmètre

Message par Zanel » 28 janv. 2019 10:44

Mmmm voilà, page 369.... De prime abord pas forcement la chose la plus limpide que j'ai pu lire :shock: :mrgreen:. Je vais étudier tout ça.
Lausanne en Helvétie
ArchiCad 21 - Windows 10

Avatar de l’utilisateur
Simon
Site Admin
Messages : 201
Inscription : 14 nov. 2018 16:18
Version d'Archicad : 21
Système d'exploitation : Windows 10
A remercié : 5 fois
A été remercié : 17 fois

Re: Coordonnée à l’int. d’un périmètre

Message par Simon » 28 janv. 2019 15:56

J'ai déjà fait ça il me semble... Enfin, j'avais trouvé une formule magique à l'époque, je vais rechercher ...
Windows 10 - Archicad 21 - Sketch'up
Thearender - Lumion
GDL Addict !

Avatar de l’utilisateur
Simon
Site Admin
Messages : 201
Inscription : 14 nov. 2018 16:18
Version d'Archicad : 21
Système d'exploitation : Windows 10
A remercié : 5 fois
A été remercié : 17 fois

Re: Coordonnée à l’int. d’un périmètre

Message par Simon » 28 janv. 2019 16:50

Résultat après recherche :
  • Je n'ai pas retrouvé la formule magique, je pense que de toute façon elle était limité à savoir si un point était à l'intérieur d'un polygone formé par les coordonnées de 4 sommets, dans mon souvenir, c'était limité mais diablement élégant !
  • Sinon, la méthode qui a été retenue est celle du "Polygon Operations Extension".
    C'est ultra complexe mais une fois en place, ça marche pas mal, je crois toutefois avoir décelé quelques bugs dans certains cas de figures...
Si j'en parle autant au conditionnel, c'est que je l'ai utilisé sur un objet dont le développement s'est arrêté en avril 2017 et pas repris depuis (un projet de dalles sur plots)...

Mon bout de code :

Code : Tout sélectionner

! ==============================================================================
! Initialize PolyOperations Add-On
! ==============================================================================

ch = INITADDONSCOPE ("PolyOperations", "", "")

! ------------------------------------------------------------------------------
! Creating polygon containers
! ------------------------------------------------------------------------------

PREPAREFUNCTION ch, "CreateContainer", "mySourceContainer", ""
PREPAREFUNCTION ch, "CreateContainer", "myDestinationContainer", ""

PREPAREFUNCTION ch, "SetSourceContainer",		"mySourceContainer", ""
PREPAREFUNCTION ch, "SetDestinationContainer",	"myDestinationContainer", ""

! ------------------------------------------------------------------------------
! Set input polygon 1
! ------------------------------------------------------------------------------

nVertices1 = points	! Number of vertices in the polygon

FOR i=1 TO points
	PUT x[i], y[i], 0
NEXT i

dim vertArr1[][]

FOR i=1 TO points
	vertArr1[i][1] = GET (1)
	vertArr1[i][2] = GET (1)
	vertArr1[i][3] = GET (1)
NEXT i

nContours1 = 1	! Number of contours in the polygon
dim contArr1[]
contArr1[1] = points	! Last vertex index of the main contour

PREPAREFUNCTION ch, "Store", "poly1", nVertices1, nContours1, vertArr1, contArr1
PREPAREFUNCTION ch, "OffsetParams", "", 1, -spPlotOff

! ------------------------------------------------------------------------------
! Enlarges or shrinks a contour of polygon 1
! ------------------------------------------------------------------------------

dim resPolyIDArray[]
nPgon = CALLFUNCTION (ch, "ResizeContour", "poly1", resPolyIDArray)

!PRINT resPolyIDArray
!PRINT spresPolyIDArray

	polygonID = spresPolyIDArray[1]

! ==============================================================================
! Get GDL Polygon
! ------------------------------------------------------------------------------
! Input variables:
!	ch:				Channel ID
!	polygonID:		Polygon ID
!
! Returned variables:
!	GDL stack:			GDL polygon
! ==============================================================================

	dim resVertices[]
	numVertices = CALLFUNCTION (ch, "GetVertices", polygonID, resVertices)
!	numVertices = numVertices / 3

!PRINT numVertices

	FOR i=1 TO numVertices
		PUT resVertices[i]
	NEXT i

	dim polygonOffset[][]
	FOR i=1 TO numVertices/3
		PARAMETERS polygonOffset[i][1] = GET (1)
		PARAMETERS polygonOffset[i][2] = GET (1)
		PARAMETERS polygonOffset[i][3] = GET (1)+1
	NEXT i


! ==============================================================================
! Dispose PolyOperations Add-On
! ==============================================================================

CLOSEADDONSCOPE ch
Et là où je m'en suis arrêté sur ce projet de dallettes (cliquez pour voir l'animation):
DalleSurPlots2_3.gif
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Windows 10 - Archicad 21 - Sketch'up
Thearender - Lumion
GDL Addict !

Avatar de l’utilisateur
Simon
Site Admin
Messages : 201
Inscription : 14 nov. 2018 16:18
Version d'Archicad : 21
Système d'exploitation : Windows 10
A remercié : 5 fois
A été remercié : 17 fois

Re: Coordonnée à l’int. d’un périmètre

Message par Simon » 28 janv. 2019 16:57

En essayant d'analyser mon bout de code (bonjour le mal de crane), il semble que ça ne soit pas la partie pour déterminer la présence d'un point à l'intérieur d'un polygone.

C'est l'initialisation du polygone, et un décalage de son contour. (script principal)

Je me sers ensuite de ce bout de code dans mon script 3D pour savoir si un plot de ma grille se trouve à l'intérieur de mon polygone :

Code : Tout sélectionner

			call "PolygonOperations",
				parameters 	opcode = 2,
							srcPolygon1 = 1,
							polygon1=spPolygonOffset, ! les coordonnées du polygone dans une matrice[x][y] obtenue après le décalage dans le script principal
							result = 1,
							pntX = spPntX, ! coordonnées X du point testé
							pntY = spPntY, ! coordonnées Y du point testé
				returned_parameters ret ! résultat : 1=dedans, 0=dehors
Pas très digeste tout ça, j'en conviens ! Bon courage ! ;)
Windows 10 - Archicad 21 - Sketch'up
Thearender - Lumion
GDL Addict !

Répondre