Forum Sketchup Artlantis Archicad
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
Annonces
Bonjour Invité Bienvenue sur le forum biblio3d - le forum a été créé le Sam 19 Jan 2008 - 14:26- Nous avons enregistrés 14802 topics pour un total de : 175615 posts - le record de membres connectés simultanément :555
Galerie


comment modéliser un terrain d'après le fichier dwg du géomètre? - Page 3 Empty
Ton bloc notes
Derniers sujets
» Bonjour à tous !
par tenrev Hier à 11:49

» Recherche un dessinateur pour mes produits
par tenrev Hier à 11:48

» [ SKETCHUP composants dynamiques ]
par simjoubert Dim 15 Sep 2024 - 9:37

» [ CHALLENGE 2024 ] Challenge architecture extérieure ou paysagiste - allansens - cinema 4D
par Allansens Sam 14 Sep 2024 - 16:32

» [ CHALLENGE 2024 ]Challenge architecture extérieure ou paysagiste - Nicolaco - Sketchup - Blender - Cycles (ABANDON)
par youyou40 Lun 9 Sep 2024 - 19:18

» Des vignettes à la place d'un export Graphique 2D !
par Gaspard Hauser Ven 6 Sep 2024 - 0:01

» [ MATOS INFORM. ] Application Splashtop Wired XDisplay, pour utliser votre tablette iPad ou Android en moniteur supplémentaire
par JDD Jeu 5 Sep 2024 - 10:49

» [ CHALLENGE 2024 ] Challenge architecture extérieure ou paysagiste- Gaspard Hauser - Sketchup - D5 render
par JDD Mer 4 Sep 2024 - 18:03

» [ SKETCHUP généralité ]
par lionel Claude Mar 3 Sep 2024 - 19:45

» [ D5_RENDER ] Comparatif D5 enhancement vs Krea AI enhancement
par Gaspard Hauser Dim 1 Sep 2024 - 19:40

» [ Challenge 2024] cHallenge archjtexture exterieur ou paysagiste-vick-sketchup-enscape
par Gaspard Hauser Dim 1 Sep 2024 - 12:34

» [ D5_RENDER ] Animation d'objets, Phasing animation D5 render
par AK40Cess Sam 31 Aoû 2024 - 10:33

» [ TWINMOTION ] Appliquer un decal avec les outils spacing et area de Twinmotion 2024
par AK40Cess Ven 30 Aoû 2024 - 4:00

» [ SKETCHUP généralité ]
par Gaspard Hauser Dim 25 Aoû 2024 - 8:58

» [ SKETCHUP plugins ]
par furax49 Ven 23 Aoû 2024 - 15:54

» [ CHALLENGE 2024 ] Challenge architecture extérieure ou paysagiste - AK40Cess - Archicad-Twinmotion
par JDD Ven 23 Aoû 2024 - 11:20

» [ SKETCHUP généralité ] SOS problème avec les arêtes
par vick Jeu 22 Aoû 2024 - 19:15

» [ CHALLENGE 2024 ] Challenge architecture extérieure ou paysagiste - JDD - SketchUp - Enscape
par Gaspard Hauser Jeu 22 Aoû 2024 - 12:10

» [ D5_RENDER ] Images de l'intérieur meublé de de la villa Bauhaus
par Gaspard Hauser Sam 17 Aoû 2024 - 19:24

» [ CHALLENGE 2024 ] Challenge architecture extérieure ou paysagiste - Simjoubert - sketchup Enscape
par simjoubert Sam 17 Aoû 2024 - 15:32

» [ D5_RENDER ] comparaison D5 render Twinmotion
par Gaspard Hauser Jeu 15 Aoû 2024 - 10:08

» [ SKETCHUP généralité ] Objets 3D luminaires
par PEGASE Mar 13 Aoû 2024 - 6:14

» [ TWINMOTION ] rayon de soleil
par simjoubert Lun 12 Aoû 2024 - 23:42

» [ LUMION ] License-Abonnement
par tenrev Jeu 8 Aoû 2024 - 15:29

» [ ENSCAPE ] HDRI dans projet
par tenrev Mer 7 Aoû 2024 - 9:57

» [ TUTO ] tutos pour une utilisation optimale du forum
par tenrev Dim 4 Aoû 2024 - 15:22

» [ SKETCHUP LIVE COMPONENT ] un petit exemple simple
par tenrev Ven 2 Aoû 2024 - 11:38

» [ SKETCHUP composants dynamiques ] Optimisez votre workflow Sketchup : Composants dynamiques, couleurs et export Excel !
par tenrev Jeu 1 Aoû 2024 - 9:31

» [ PRESENTATION ] Hello et un de plus
par simjoubert Jeu 1 Aoû 2024 - 0:26

» [ INTELLIGENCE ARTIFICIELLE ] i'eau est leur milieu de prédilection
par tenrev Mer 31 Juil 2024 - 13:06

» [ CHALLENGE ARCHITECTURE EXTERIEURE OU PAYSAGISTE ] Démarrage du challenge 2024 - les régles
par tenrev Mer 31 Juil 2024 - 9:00

» [ CHALLENGE 2024 ] Challenge architecture extérieure ou paysagiste - Tenrev - Sketchup - Enscape - Twinmotion - IA
par tenrev Mer 31 Juil 2024 - 8:51

» [ SKETCHUP plugins ] plugin sj_add_dc_attribute_v.0.3.3
par tenrev Mer 31 Juil 2024 - 8:38

» [ SKETCHUP plugins ] Universal Importer
par tenrev Mer 31 Juil 2024 - 8:36

» [ CHALLENGES ] Ca vous intéresserait un challenge - je lance un sondage
par tenrev Mar 30 Juil 2024 - 10:15

Sondage

êtes vous intéressé et prêt à participer à un challenge ?

comment modéliser un terrain d'après le fichier dwg du géomètre? - Page 3 Poll_c1015%comment modéliser un terrain d'après le fichier dwg du géomètre? - Page 3 Poll_c10 15% [ 2 ]
comment modéliser un terrain d'après le fichier dwg du géomètre? - Page 3 Poll_c1031%comment modéliser un terrain d'après le fichier dwg du géomètre? - Page 3 Poll_c10 31% [ 4 ]
comment modéliser un terrain d'après le fichier dwg du géomètre? - Page 3 Poll_c1046%comment modéliser un terrain d'après le fichier dwg du géomètre? - Page 3 Poll_c10 46% [ 6 ]
comment modéliser un terrain d'après le fichier dwg du géomètre? - Page 3 Poll_c108%comment modéliser un terrain d'après le fichier dwg du géomètre? - Page 3 Poll_c10 8% [ 1 ]
comment modéliser un terrain d'après le fichier dwg du géomètre? - Page 3 Poll_c100%comment modéliser un terrain d'après le fichier dwg du géomètre? - Page 3 Poll_c10 0% [ 0 ]
comment modéliser un terrain d'après le fichier dwg du géomètre? - Page 3 Poll_c100%comment modéliser un terrain d'après le fichier dwg du géomètre? - Page 3 Poll_c10 0% [ 0 ]

Total des votes : 13

chaine sketchup.tv
Serveur Discord
-45%
Le deal à ne pas rater :
Pack Tablette tactile Samsung Galaxy Tab S9 FE + Cover Noir (ODR ...
299.99 € 549.99 €
Voir le deal

comment modéliser un terrain d'après le fichier dwg du géomètre?

Page 3 sur 3 Précédent  1, 2, 3

Voir le sujet précédent Voir le sujet suivant Aller en bas

yayak
yayak
V.I.P.
V.I.P.
Masculin Humeur : www.lunik-be.com
Date d'inscription : 13/02/2010
Nombre de messages : 987
Points : 1231
Age : 48
Localisation : BAS-RHIN
Emploi : Maître d'Oeuvre
http://www.lunik-be.com

Messageyayak Dim 25 Avr 2010 - 9:18

merci Christophe, vais tester ! bravo2
Fab
Fab
modérateur
modérateur
Masculin Humeur : Rester COOL......
Date d'inscription : 03/10/2008
Nombre de messages : 4823
Points : 5411
Age : 57
Localisation : Normandie
Emploi : Dessinateur en bâtiment et génie civil
https://www.pinterest.fr/lignesvintage/_saved/

MessageFab Dim 25 Avr 2010 - 10:31

j'ai aussi le même problème, je vais essayer. aurevoir
c.plassais
c.plassais
modérateur
modérateur
Masculin Date d'inscription : 19/07/2009
Nombre de messages : 2058
Points : 2479
Age : 62
Localisation : Chambéry
Emploi : Responsable Gestion Atelier
http://bande.village.free.fr/

Messagec.plassais Dim 25 Avr 2010 - 10:57

Si vous avez un problème, dites le moi et je vous mets un lien en place pour les télécharger.
Par contre faites bien attention il faut installer la version 2 de delauney.rb (delauney2.rb ou fr_delauney2.rb)

@+
c.plassais
c.plassais
modérateur
modérateur
Masculin Date d'inscription : 19/07/2009
Nombre de messages : 2058
Points : 2479
Age : 62
Localisation : Chambéry
Emploi : Responsable Gestion Atelier
http://bande.village.free.fr/

Messagec.plassais Dim 25 Avr 2010 - 11:02

Sinon vous faites un copier coller du code suivant et vous le sauvergardez sous le nom de fr_points_cloud_triangulation.rb
Code:
# Copyright 2004, D. Bur, C. Fale

# Permission to use, copy, modify, and distribute this software for
# any purpose and without fee is hereby granted, provided that the above
# copyright notice appear in all copies.

# THIS SOFTWARE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR
# IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
#-----------------------------------------------------------------------------
# Name        :  points_cloud_triangulation
# Description :  A tool to create triangles starting from a construction points selection
# Menu Item  :  Plugins -> Triangulate points
# Context Menu:  NONE
# Usage      :  Select construction points. Select menu Plugins/Triangulate points
#            :  read the status bar to check information about triangulation
# Date        :  9/17/2004
# Type        :  Tool
#-----------------------------------------------------------------------------

require 'fr_delauney2.rb'


def points_to_array(z)
  z = 1
  model = Sketchup.active_model
  model.start_operation "points triangulation"
  entities = model.active_entities
  ss = model.selection

  if ss.empty?
    UI.messagebox("Pas de selection !")
    return nil
  end

  # Selection error checking: eliminates the non-cpoint objects
  look = 1
  i = 0
  0.upto( ss.length - 1) do |look|
    if( not ss[i].kind_of? Sketchup::ConstructionPoint )
      look = 0
    end
    i = i + 1
  end  #of upto

  if(look == 0)
    UI.messagebox("Certain objet(s) de la selection ne sont pas des points de construction.")
    return nil
  end
 
  i = 0
  # Fill an array of 3D_points with selection
  points_array = Array.new(ss.length)

    # read the points in the file and create the vertex array
   
    for ind in (0..(ss.length - 1))
      cpt = ss[i]
      x = cpt.position[0].to_f
      y = cpt.position[1].to_f
      z = cpt.position[2].to_f
      points_array[ind] = [x, y ,z]

      i = i + 1
    end
   
  #points_array = points_array[0..points_array.length - 4]
  points_array.uniq!
  return points_array
 
end #of def


def triangulate_points

model = Sketchup.active_model
entities = model.active_entities

#-----------------------------------------------------------------------------    Layer settings
   set_layer_code = UI.messagebox("Mettre les triangles sur un calque specifique ?", MB_YESNO)
   if set_layer_code == 6
         prompts1 = ["Nom du calque"]
         values1 = ["Triangles"]
         results1 = inputbox prompts1, values1, "Nom du calque"
               if results1.to_s.empty? == true      # Deleted value handler
                  results1 = model.layers.unique_name("Triangles")
               elsif results1 == false
                  results1 = saved_layer.name
               end
      model.layers.add(results1.to_s)
      model.active_layer = (results1.to_s)
   end
       
z = 0
triangles = []
points_table = points_to_array(z)


# Takes as input a array with NVERT lines, each line is a array with three values x, y, and z (vertex[j][0] = x value of j + 1 component)

if points_table
  triangles = triangulate(points_table)
end

i = 0
0.upto( triangles.length - 1 ) do |something|
  indices = triangles[i]
  ind1 = indices[0]
  ind2 = indices[1]
  ind3 = indices[2]
 
  # Verbose
  print triangles.length.to_s
  print "\n"
 
  Sketchup.set_status_text("Ajout du triangle: "  + i.to_s + " / " + triangles.length.to_s )
 
  Sketchup.active_model.active_entities.add_face( points_table[indices[2]], points_table[indices[1]], points_table[indices[0]] )
  i = i + 1
end

end    #of def


if( not file_loaded?("fr_points_cloud_triangulation.rb") )
    add_separator_to_menu("Plugins")
    UI.menu("Plugins").add_item("Trianguler nuage de points") { triangulate_points }
end
file_loaded("fr_points_cloud_triangulation.rb")

et celui-ci sous le nom de fr_delauney2.rb

Code:

# Credit to Paul Bourke (pbourke@swin.edu.au) for original Fortran 77 Program :))
# August 2004 - Conversion and adaptation to Ruby by Carlos Falé (carlosfale@sapo.pt)
# September 2004 - Updated by Carlos Falé
#
# You can use this code, for non commercial purposes, however you like, providing the above credits remain in tact

# Return two logical values, first is TRUE if the point (xp, yp) lies inside the circumcircle made up by points (x1, y1), (x2, y2) and (x3, y3)
# and FALSE if not, second is TRUE if xc + r < xp and FALSE if not
# NOTE: A point on the edge is inside the circumcircle
def incircum(xp, yp, x1, y1, x2, y2, x3, y3)

  eps = 0.000001
  res = [FALSE, FALSE]

  if (y1 - y2).abs >= eps || (y2 - y3).abs >= eps
    if (y2 - y1).abs < eps
      m2 = -(x3 - x2) / (y3 - y2)
      mx2 = (x2 + x3) / 2
      my2 = (y2 + y3) / 2
      xc = (x1 + x2) / 2
      yc = m2 * (xc - mx2) + my2
    elsif (y3 - y2).abs < eps
      m1 = -(x2 - x1) / (y2 - y1)
      mx1 = (x1 + x2) / 2
      my1 = (y1 + y2) / 2
      xc = (x2 + x3) / 2
      yc = m1 * (xc - mx1) + my1
    else
      m1 = -(x2 - x1) / (y2 - y1)
      m2 = -(x3 - x2) / (y3 - y2)
      mx1 = (x1 + x2) / 2
      mx2 = (x2 + x3) / 2
      my1 = (y1 + y2) / 2
      my2 = (y2 + y3) / 2
      if (m1 - m2) == 0
        xc = (x1 + x2 + x3) / 3
        yc = (y1 + y2 + y3) / 3
      else
        xc = (m1 * mx1 - m2 * mx2 + my2 - my1) / (m1 - m2)
        yc = m1 * (xc - mx1) + my1
      end
    end

    dx = x2 - xc
    dy = y2 - yc
    rsqr = dx * dx + dy * dy
    r = Math.sqrt(rsqr)

    dx = xp - xc
    dy = yp - yc
    drsqr = dx * dx + dy * dy
    if drsqr < rsqr
      res[0] = TRUE
    end
   
    if xc + r < xp
      res[1] = TRUE
    end

  end

  return res

end

# Takes as input a array with NVERT lines, each line is a array with three values x, y, and z (vertex[j][0] = x value of j + 1 component) and
# return a array with NTRI lines, each line is a array with three values i, j, and k (each value is the index of a point in the input array (vertex array))
# i is the index of the first point, j is the index of the second point and k is the index of the third point,
def triangulate(vert)

  # Sort the input array in x values
 
 
  vert.sort!
 
  nvert = vert.length

  triang = Array.new
  edges = Array.new
  complete = Array.new

  # Verbose
  Sketchup.set_status_text("Demarrage de la triangulation de " + nvert.to_s + " points")

  # Find the minimum and maximum vertex bounds. This is to allow calculation of the bounding triagle
  xmin = vert[0][0]
  ymin = vert[0][1]
  xmax = xmin
  ymax = ymin

  for i in (2..nvert)
    x1 = vert[i - 1][0]
    y1 = vert[i - 1][1]
    xmin = [x1, xmin].min
    xmax = [x1, xmax].max
    ymin = [y1, ymin].min
    ymax = [y1, ymax].max
  end

  dx = xmax - xmin
  dy = ymax - ymin
  dmax = [dx, dy].max
  xmid = (xmin + xmax) / 2
  ymid = (ymin + ymax) / 2

  # Set up the supertriangle. This is a triangle which encompasses all the sample points. The supertriangle coordinates are added to the end
  # of the vertex list. The supertriangle is the first triangle in the triangles list.
  p1 = nvert + 1
  p2 = nvert + 2
  p3 = nvert + 3
  vert[p1 - 1] = [xmid - 2 * dmax, ymid - dmax, 0]
  vert[p2 - 1] = [xmid, ymid + 2 * dmax, 0]
  vert[p3 - 1] = [xmid + 2 * dmax, ymid - dmax, 0]
  triang[0] = [p1 - 1, p2 - 1, p3 - 1]
  complete[0] = FALSE
  ntri = 1

  # Include each point one at a time into the exixsting mesh
  for i in (1..nvert)
    xp = vert[i - 1][0]
    yp = vert[i - 1][1]
    nedge = 0
   
  # Verbose 
  Sketchup.set_status_text("Triangulation du point " + i.to_s + " / " + nvert.to_s)
 
    # Set up the edge buffer. If the point (xp, yp) lies inside the circumcircle then the three edges of that triangle are added to the edge buffer.
    j = 0
    while j < ntri
      j = j +1
      if complete[j - 1] != TRUE
        p1 = triang[j - 1][0]
   p2 = triang[j - 1][1]
   p3 = triang[j - 1][2]
   x1 = vert[p1][0]
   y1 = vert[p1][1]
   x2 = vert[p2][0]
   y2 = vert[p2][1]
   x3 = vert[p3][0]
   y3 = vert[p3][1]
   inc = incircum(xp, yp, x1, y1, x2, y2, x3, y3)
   if inc[1] == TRUE
     complete[j - 1] = TRUE
   else
     if inc[0] == TRUE
       edges[nedge] = [p1, p2]
       edges[nedge + 1] = [p2, p3]
       edges[nedge + 2] = [p3, p1]
       nedge = nedge + 3
       triang[j - 1] = triang[ntri - 1]
       complete[j - 1] = complete[ntri - 1]
       j = j - 1
       ntri = ntri - 1
     end
   end
      end
    end

    # Tag multiple edges
    # NOTE: if all triangles are specified anticlockwise then all interior edges are pointing in direction.
    for j in (1..nedge - 1)
      if edges[j - 1][0] != -1 || edges[j - 1][1] != -1
        for k in ((j + 1)..nedge)
          if edges[k - 1][0] != -1 || edges[k - 1][1] != -1
       if edges[j - 1][0] == edges[k - 1][1]
         if edges[j - 1][1] == edges[k - 1][0]
           edges[j - 1] = [-1, -1]
      edges[k - 1] = [-1, -1]
         end
       end
     end
        end
      end
    end

    # Form new triangles for the current point. Skipping over any tagged adges. All edges are arranged in clockwise order.
    for j in (1..nedge)
      if edges[j - 1][0] != -1 || edges[j - 1][1] != -1
        ntri = ntri + 1
   triang[ntri - 1] = [edges[j - 1][0], edges[j - 1][1], i - 1]
   complete[ntri - 1] = FALSE
      end
    end
  end

  # Remove triangles with supertriangle vertices. These are triangles which have a vertex number greater than NVERT.
  i = 0
  while i < ntri
    i = i + 1
    if triang[i - 1][0] > nvert - 1 || triang[i - 1][1] > nvert - 1 || triang[i - 1][2] > nvert - 1
      triang[i - 1] = triang[ntri - 1]
      i = i - 1
      ntri = ntri - 1
    end
  end
 
# Verbose
Sketchup.set_status_text("Triangulation terminee: "  + ntri.to_s + " triangles crees.")

  return triang[0..ntri - 1]

end

@+

Christophe
Contenu sponsorisé

MessageContenu sponsorisé

Page 3 sur 3 Précédent  1, 2, 3

Voir le sujet précédent Voir le sujet suivant Revenir en haut

Créer un compte ou se connecter pour répondre

Vous devez être membre pour répondre.

S'enregistrer

Rejoignez notre communauté ! C'est facile !


S'enregistrer

Connexion

Vous êtes déjà membre ? Aucun soucis, cliquez ici pour vous connecter.


Connexion

 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum