Você está aqui: Cards de |
||
|
||
|
|
||
Revit C# ::: Dicas & Truques ::: Colunas e Pilares |
Como listar os tipos de colunas e pilares disponíveis no Revit usando a Revit C# APIQuantidade de visualizações: 495 vezes |
|
Nesta dica mostrarei como podemos obter e retorna uma lista com as colunas e pilares disponíveis na sua instalação do Revit. Esse passo é muito importante quando precisamos informar o id do símbolo de família, ou seja, o tipo de coluna ou pilar que queremos criar, em um determinado momento, via programação Revit C# API. O primeiro passo é acessar o documento atual do Revit usando uma chamada à this.ActiveUIDocument.Document. Em seguida nós obtemos um objeto FilteredElementCollector para filtrar e retornar os símbolos de família que se enquadrem na categoria OST_StructuralColumns. Para finalizar, nós convertemos os elementos Element em FamilySymbol. Veja o código completo para o exemplo:
using System;
using Autodesk.Revit.UI;
using Autodesk.Revit.DB;
using Autodesk.Revit.DB.Structure;
using Autodesk.Revit.UI.Selection;
using System.Collections.Generic;
using Autodesk.Revit.DB.Architecture;
using System.Linq;
namespace Estudos {
[Autodesk.Revit.Attributes.Transaction(Autodesk.Revit.Attributes.
TransactionMode.Manual)]
[Autodesk.Revit.DB.Macros.AddInId("ED8EC6C4-9489-48F7-B04E-B45B5D1BEB12")]
public partial class ThisApplication {
private void Module_Startup(object sender, EventArgs e) {
// vamos obter uma referência ao Document ativo
Document doc = this.ActiveUIDocument.Document;
// vamos obter um FilteredElementCollector contendo apenas
// elementos que sejam ElementType e pertençam à categoria
// OST_StructuralColumns
try {
FilteredElementCollector elementos = new FilteredElementCollector(doc)
.WhereElementIsElementType().OfCategory(BuiltInCategory.OST_StructuralColumns);
String lista = "";
// vamos percorrer os elementos retornados
foreach(Element elemento in elementos) {
// vamos converter o Element em FamilySymbol
FamilySymbol coluna = elemento as FamilySymbol;
// agora montamos a lista de colunas (ou pilares)
lista = lista + "Id: " + elemento.Id.IntegerValue + "; Nome: "
+ elemento.Name + "; Tipo: " + elemento.Category.Name +
"; Família: " + coluna.Family.Name + "\n";
}
// mostramos o resultado
TaskDialog.Show("Aviso", lista);
}
catch (Exception ex) {
TaskDialog.Show("Aviso", "Erro: " + ex.Message);
}
}
private void Module_Shutdown(object sender, EventArgs e) {
// para fazer alguma limpeza de memória ou algo assim
}
#region Revit Macros generated code
private void InternalStartup() {
this.Startup += new System.EventHandler(Module_Startup);
this.Shutdown += new System.EventHandler(Module_Shutdown);
}
#endregion
}
}
Ao executar este código Revit C# nós teremos o seguinte resultado: Id: 12190; Nome: UC305x305x97; Tipo: Pilares estruturais; Família: UC-Universal Columns-Column Id: 355634; Nome: 80 x 50; Tipo: Pilares estruturais; Família: Pila de Concreto - Retangular Id: 355636; Nome: 50 x 50; Tipo: Pilares estruturais; Família: Pila de Concreto - Retangular |
wxWidgets ::: Dicas & Truques ::: wxFrame |
Como usar a classe wxFrame para criar a janela principal de suas aplicações C++ wxWidgetsQuantidade de visualizações: 2286 vezes |
|
A classe wxFrame, definida no arquivo <wx/frame.h>, herda diretamente da classe wxTopLevelWindow (que herda de wxWindow) e, em geral, é usada para representar a janela principal da aplicação. Em tempo de execução seu tamanho pode ser alterado, maximizado, restaurado e minimizado. Esta janela também inclui uma borda mais grossa, uma barra de títulos e, opcionalmente, uma barra de menus, uma barra de ferramentas ou uma barra de status. Uma wxFrame pode atuar como um contâiner para outros controles, tais como botões, caixa de texto, listas, tabelas, etc. No entanto, não podemos inserir em uma wxFrame uma outra wxFrame ou um diálogo. O construtor não vazio da classe wxFrame é: wxFrame::wxFrame(wxWindow* parent, wxWindowID id, const wxString& title, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = wxDEFAULT_FRAME_STYLE, const wxString& name = wxFrameNameStr) O parâmetro parent pode ser, e geralmente é, NULL. Se esse valor for diferente de NULL, a frame será minimizada quando sua janela mãe foi minimizada e restaurada quando esta for restaurada. Note que estamos falando de aplicações de janelas de múltiplos documentos (janelas MDI). O parâmetro id é o identificador da janela. Podemos informar -1 para indicar um valor default. O parâmetro title é o texto a ser exibido na barra de títulos da janela. O parâmetro pos é a posição da janela, expressa como um wxPoint (coordenada x e y). Se fornecermos o valor wxDefaultPosition para este parâmetro, a posição da janela será escolhida pelo sistema de janelas ou pela biblioteca wxWidgets, dependendo da plataforma. O parâmetro size é o tamanho da janela, expresso como um wxSize (largura e altura). O valor wxDefaultSize indica o tamanho padrão (default), escolhido pelo sistema de janelas ou pela biblioteca wxWidgets, dependendo da plataforma. O parâmetro style é o estilo da janela. O valor padrão é wxDEFAULT_FRAME_STYLE (que pode ser redimensionada, possui um botão de minimizar, de maximizar, etc). O parâmetro name é usado para associar a janela com um item nomeado, permitindo a personalização individual da janela em sistemas que usam o Motif. No Windows este parâmetro não possui nenhum efeito. Vamos ao código agora. Veja os arquivos de definição e de implementação para a criação de uma janela wxFrame: Código para janelaprincipal.h:
#ifndef _JANELAPRINCIPAL_H
#define _JANELAPRINCIPAL
#include <wx/wx.h>
// Definição da nossa janela wxFrame
class JanelaPrincipal : public wxFrame{
public:
// construtor não vazio
JanelaPrincipal(const wxChar *titulo, int posX, int posY,
int largura, int altura);
// destrutor
~JanelaPrincipal();
};
#endif // _JANELAPRINCIPAL_H
Código para janelaprincipal.cpp:
#include "janelaprincipal.h"
// arquivo de implementação
JanelaPrincipal::JanelaPrincipal(const wxChar *titulo, int posX,
int posY, int largura, int altura) : wxFrame((wxFrame *)NULL, -1,
titulo, wxPoint(posX, posY), wxSize(largura, altura)){
// não vamos fazer nada aqui por enquanto
}
JanelaPrincipal::~JanelaPrincipal(){
// por enquanto vamos deixar o construtor vazio
}
Agora veja o arquivo de definição e de implementação necessários para a criação e exibição da nossa janela: Código para aplicacao.h:
#include <wx/wx.h>
// arquivo de definição
// declaramos a classe application
class MinhaAplicacao : public wxApp{
public:
// é chamado no startup da aplicação
virtual bool OnInit();
};
// declara MinhaAplicacao& GetApp()
DECLARE_APP(MinhaAplicacao)
Código para aplicacao.cpp
#include "aplicacao.h"
#include "janelaprincipal.h"
// arquivo de implementação
// aqui o wxWidgets cria nosso objeto MinhaAplicacao e o associa
// com a função de entrada main() ou WinMain()
IMPLEMENT_APP(MinhaAplicacao)
bool MinhaAplicacao::OnInit(){
// vamos criar nossa janela
JanelaPrincipal *janela = new JanelaPrincipal(wxT("Cadastro"),
50, 50, 500, 400);
// vamos exibir a janela wxFrame
janela->Show(TRUE);
// essa vai ser a janela principal da aplicação
SetTopWindow(janela);
// podemos iniciar o loop de eventos
return true;
}
Note que, para que a janela seja visível na tela, devemos fazer uma chamada ao método Show() e fornecer o valor TRUE. Esta função é definida originalmente em wxWindow. Veja também que chamamos SetTopWindow() para informar ao wxWidgets que esta é a janela principal, razão pela qual fornecemos o valor NULL para o parâmetro parent. |
Java ::: Coleções (Collections) ::: ArrayList |
Como excluir de uma ArrayList todos os elementos contidos em outra ArrayList ou coleção do Java usando o método removeAll()Quantidade de visualizações: 10463 vezes |
|
Em algumas situações pode ser útil sabermos como remover de uma ArrayList todos os elementos contidos em outra ArrayList ou coleção. Para isso podemos usar o método removeAll(), que a classe ArrayList herda da interface java.util.List. Veja sua assinatura: boolean removeAll(Collection<?> c) E agora veja um exemplo de seu uso:
import java.util.ArrayList;
public class Estudos{
public static void main(String[] args){
// cria uma ArrayList que conterá strings
ArrayList<String> nomes = new ArrayList<String>();
// cria uma segunda ArrayList que conterá mais strings
ArrayList<String> nomes2 = new ArrayList<String>();
// adiciona itens na primeira lista
nomes.add("Carlos");
nomes.add("Maria");
nomes.add("Fernanda");
nomes.add("Osmar");
nomes.add("Zacarias");
// adiciona itens na segunda lista
nomes2.add("Maria");
nomes2.add("Zacarias");
// vamos remover da primeira lista todos os elementos
// contidos na segunda lista
nomes.removeAll(nomes2);
// vamos exibir o resultado
for(int i = 0; i < nomes.size(); i++){
System.out.println(nomes.get(i));
}
System.exit(0);
}
}
|
VB.NET ::: Fundamentos da Linguagem ::: Estruturas de Controle |
Como usar o laço While em VB.NETQuantidade de visualizações: 11715 vezes |
|
Um instrução de repetição (também chamada de laço ou loop) permite que um bloco de códigos seja executado repetidamente até que uma condição seja satisfeita. O laço While é usado quando queremos testar uma condição e, executar um bloco de código repetidamente enquanto esta condição for verdadeira. Lembre-se de que, se a condição já for falsa, o laço nunca será executado. Veja um exemplo de laço While que nos permite exibir os números de 0 a 10: Dim numero As Integer = 0 While numero <= 10 Console.WriteLine(numero) numero += 1 End While Veja uma nova versão deste código, desta vez contando de 10 a 0: Dim numero As Integer = 10 While numero >= 0 Console.WriteLine(numero) numero -= 1 End While Aqui nós estamos novamente avaliando uma condição, ou seja, se o resultado da condição for True, a execução do laço continua. Se for False, o laço para. Veja um exemplo no qual a condição booleana está bem explícita:
Dim pode As Boolean = True
Dim valor As Integer = 1
While pode
Console.WriteLine(valor)
valor += 1
If valor > 20 Then
pode = False
End If
End While
|
Java ::: Classes e Componentes ::: JTree |
Java Swing - Como criar sua primeira JTree usando um vetor de nomes de linguagens de programaçãoQuantidade de visualizações: 13657 vezes |
|
Este exemplo mostra como criar uma JTree bem simples, e que servirá de base para a criação de aplicações Java Swing mais elaboradas. Os itens da JTree são fornecidos como um vetor de objetos, de forma que cada sub-vetor constitui uma seção da árvore. Os elementos (nós) são inseridos em suas devidas posições usando uma função recursiva. Veja o resultado na figura abaixo: ![]() E agora o código Java completo para o exemplo:
package arquivodecodigos;
import javax.swing.*;
import java.awt.*;
import javax.swing.tree.*;
public class Estudos extends JFrame{
public Estudos(){
super("Exemplo de uma JTree simples");
Object[] linguagens = {
"Linguagens",
new Object[]{
"Compiladas",
"C++",
"Delphi"
},
new Object[]{
"Interpretadas",
"JavaScript",
"Python",
"Ruby"
}
};
DefaultMutableTreeNode raiz = montar(linguagens);
JTree arvore = new JTree(raiz);
Container c = getContentPane();
c.setLayout(new FlowLayout());
JScrollPane scrollPane = new JScrollPane(arvore);
c.add(scrollPane);
setSize(400, 300);
setVisible(true);
}
public static void main(String args[]){
Estudos app = new Estudos();
app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
private DefaultMutableTreeNode montar(Object[] hier){
DefaultMutableTreeNode no = new DefaultMutableTreeNode(hier[0]), filho;
for(int i = 1; i < hier.length; i++){
Object n_no = hier[i];
if(n_no instanceof Object[]){ // nó possui filhos
filho = montar((Object[])n_no);
}
else{
filho = new DefaultMutableTreeNode(n_no); // folha
}
no.add(filho);
}
return(no);
}
}
|
Desafios, Exercícios e Algoritmos Resolvidos de Java |
Veja mais Dicas e truques de Java |
E-Books em PDF |
||||
|
||||
|
||||
Linguagens Mais Populares |
||||
|
1º lugar: Java |






