yjpzc 发表于 2011-1-25 00:21:22

已有 50 人购买  本主题需向作者支付 1 个明经币 才能浏览 购买主题

gzxl 发表于 2011-9-12 11:17:07

本帖最后由 gzxl 于 2011-9-12 11:18 编辑

gzxl 发表于 2011-9-11 03:51 http://bbs.mjtd.com/static/image/common/back.gif
C#的

可以啊,不过里面还没完善,比如判断左正右负等等

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Autodesk.AutoCAD.ApplicationServices;
using Autodesk.AutoCAD.EditorInput;
using Autodesk.AutoCAD.Runtime;
using Autodesk.AutoCAD.DatabaseServices;
using Autodesk.AutoCAD.Geometry;

namespace 断面采集//gzxl
{
    public class Class1
    {
      
      public static void cjdm()
      {
            var db = HostApplicationServices.WorkingDatabase;
            var doc = Application.DocumentManager.GetDocument(db);
            var ed = doc.Editor;
            Database acCurDb = doc.Database;

            Application.SetSystemVariable("osmode", 513);
            PromptPointOptions prPointOptions = new PromptPointOptions("\n选择断面起点或中点:");
            PromptPointResult prPointRes;
            prPointRes = ed.GetPoint(prPointOptions);
            if (prPointRes.Status != PromptStatus.OK)
                return;
            Application.SetSystemVariable("osmode", 0);

            var resEnt = ed.GetEntity("\n请选择断面线(直线):");
            if (resEnt.Status != PromptStatus.OK)
                return;

            using (Transaction acTrans = acCurDb.TransactionManager.StartTransaction())
            {
                Line line = resEnt.ObjectId.GetObject(OpenMode.ForRead) as Line;
                LineSegment3d ls3d = new LineSegment3d(line.StartPoint, line.EndPoint); ;
                Line3d l3d = new Line3d(line.StartPoint, line.EndPoint);               
               
                TypedValue[] acTypValAr = new TypedValue;
                acTypValAr.SetValue(new TypedValue((int)DxfCode.Start, "INSERT"), 0);
                acTypValAr.SetValue(new TypedValue((int)DxfCode.LayerName, "GCD"), 1);
                SelectionFilter acSelFtr = new SelectionFilter(acTypValAr);

                PromptSelectionResult acSSPrompt;
                acSSPrompt = ed.GetSelection(acSelFtr);

                if (acSSPrompt.Status == PromptStatus.OK)
                {
                  SelectionSet acSSet = acSSPrompt.Value;
                  int count2 = 0;
                  string LineText2 = "";
                  //double[] PositionX, PositionY, PositionZ;
                  double[]PositionZ;
                  // 遍历选择集中的对象
                  foreach (SelectedObject acSSObj in acSSet)
                  {
                        // 检查以确定返回的 SelectedObject 对象是有效的
                        if (acSSObj != null)
                        {

                            Entity acEnt = acTrans.GetObject(acSSObj.ObjectId, OpenMode.ForWrite) as Entity;
                            if (acEnt != null)
                            {
                              count2++;
                              //PositionX = new Double;
                              //PositionY = new Double;
                              PositionZ = new Double;
                              Point3d Position = ((Autodesk.AutoCAD.DatabaseServices.BlockReference)(acEnt)).Position;
                              //PositionX = Position;
                              //PositionY = Position;
                              PositionZ = Position;   

                              Point3d pt1 = prPointRes.Value; //断面起点
                              Point3d pt2 = l3d.GetClosestPointTo(Position).Point;

                              //double dist = pt2.DistanceTo(pt1);
                              LineText2 += (pt2 - pt1).Length + "," + PositionZ.ToString() + "\n";
                            }                           
                        }
                  }
                  ed.WriteMessage(LineText2 + "\n");
                }
            }
      }
    }
}

13648893846 发表于 2017-9-12 22:08:20

zjlszw 发表于 2012-2-24 21:52
提取断面数据 我发一个,源码如下:
(defun c:tqdmsj()
(srcs_data)


能否加个循环,能批量提取就好了

f4800 发表于 2020-11-1 11:18:54

取cass断面数据

没有币下载也没截图啊。。

yjpzc 发表于 2011-1-25 00:25:00

本帖最后由 yjpzc 于 2011-1-25 00:27 编辑

回复 yjpzc 的帖子

取cass断面数据演示
横断面线需要为直线

yfanzi 发表于 2011-9-10 01:10:55

不顶此贴哥心里不踏实!

gzxl 发表于 2011-9-11 03:51:52

C#的

xiao1979 发表于 2011-10-5 22:21:58

好东西

★胜/tp驮 发表于 2011-10-18 14:56:09

没 币咯!郁闷

xgr 发表于 2011-10-23 08:22:24

顶一下,希望多发一些类似的测绘方面的源码。

54525596 发表于 2011-11-11 18:37:01

怎么这样子..

杜阳 发表于 2012-2-8 17:02:23

没有钱了 悲哀啊
页: [1] 2 3
查看完整版本: 取cass断面数据