10.02.2015 09:03    

özkan-wien
Arkadaslar su kodu starwars.fs seklinde kaydedebilirmisiniz?
Ya da dll mi olmasi gerekiyor autocada f# codlari nasil yüklenir Bilgi verirseniz sevinirim.

Kod:

module StarWars.Crawler



open Autodesk.AutoCAD.ApplicationServices

open Autodesk.AutoCAD.ApplicationServices.Core

open Autodesk.AutoCAD.DatabaseServices

open Autodesk.AutoCAD.EditorInput

open Autodesk.AutoCAD.Geometry

open Autodesk.AutoCAD.Runtime

open FSharp.Data

open System

open System.Windows.Media



// Our JSON Type Provider providing access to SWAPI



type Film = JsonProvider<"http://swapi.co/api/films">



// The intro music MP3 file



let mp3 =

  "http://s.cdpn.io/1202/Star_Wars_original_opening_crawl_1977.mp3"



// The layers we want to create as a list of (name, (r, g, b))



let layers =

  [

    ("Stars", (255, 255, 255));

    ("Intro", (75, 213, 238));

    ("Crawl", (229, 177, 58));

    ("Planet", (238, 232, 170))

  ]



// Create layers based on the provided names and colour values

// (only creates layers if they don't already exist... could be

// updated to make sure the layers are on/thawed and have the

// right colour values)



let createLayers (tr:Transaction) (db:Database) =

  let lt =

    tr.GetObject(db.LayerTableId, OpenMode.ForWrite) :?> LayerTable

  layers |>

  List.iter (fun (name, (r, g, b)) ->

    if not(lt.Has(name)) then

      let lay = new LayerTableRecord()

      lay.Color <-

        Autodesk.AutoCAD.Colors.Color.FromRgb(byte r, byte g, byte b)

      lay.Name <- name

      lt.Add(lay) |> ignore

      tr.AddNewlyCreatedDBObject(lay, true)

    )



// Get a view by name



let getView (tr:Transaction) (db:Database) (name:string) =

  let vt =

    tr.GetObject(db.ViewTableId, OpenMode.ForRead) :?> ViewTable

  if vt.Has(name) then

    tr.GetObject(vt.[name], OpenMode.ForRead) :?> ViewTableRecord

  else

    null



// Add an entity to a block and a transaction



let addToDatabase (tr:Transaction) (btr:BlockTableRecord) o =

  btr.AppendEntity(o) |> ignore

  tr.AddNewlyCreatedDBObject(o, true)



// Flush the graphics for a particular document



let refresh (doc:Document) =

  doc.TransactionManager.QueueForGraphicsFlush()

  doc.TransactionManager.FlushGraphics()



// Transform between the Display and World Coordinate Systems



let dcs2wcs (vtr:AbstractViewTableRecord) =

  Matrix3d.Rotation(-vtr.ViewTwist, vtr.ViewDirection, vtr.Target) *

  Matrix3d.Displacement(vtr.Target - Point3d.Origin) *

  Matrix3d.PlaneToWorld(vtr.ViewDirection)



// Poll until a music file has downloaded fully

// (could sleep or use a callback to avoid this being too

// CPU-intensive, but hey)



let rec waitForComplete (mp:MediaPlayer) =

  if mp.DownloadProgress < 1. then

    System.Windows.Forms.Application.DoEvents()

    waitForComplete mp



// Poll until a specified delay has elapsed since start

// (could sleep or use a callback to avoid this being too

// CPU-intensive, but hey)



let rec waitForElapsed (start:DateTime) delay =

  let elapsed = DateTime.Now - start

  if elapsed.Seconds < delay then

    System.Windows.Forms.Application.DoEvents()

    waitForElapsed start delay



// Run operation f n times and then wait until

// a specified delay has elapsed since start



let rec performNTimesOrUntilElapsed (start:DateTime) delay f n =

  let elapsed = DateTime.Now - start

  if n > 0 || elapsed.Seconds < delay then

    if n > 0 then f()

    System.Windows.Forms.Application.DoEvents()

    performNTimesOrUntilElapsed start delay f (n-1)



// Get the roman numerals for an integer



let roman n =

  let numerals =

    [(1000, "M"); (900, "CM"); (500, "D"); (400, "CD"); (100, "C");

     (90, "XC"); (50, "L"); (40, "XL"); (10, "X"); (9, "IX");

     (5, "V"); (4, "IV"); (1, "I")]

  let rec acc (v, r) (m, s) =

    if (v < m) then (v, r) else acc (v-m, r+s) (m, s)

  List.fold acc (n, "") numerals |> snd



// Get info on all 6 Star Wars episodes



let allFilms =

  let films = Film.Load("http://swapi.co/api/films")

  films.Results



// Create the intro text as an MText object relative to the view

// (has a parameter to the function doesn't execute when loaded...

// also has hardcoded values that make it view-specific)



let createIntro _ =



  let mt = new MText()

  mt.Contents <-

    "{\\fFranklin Gothic Book|b0|i0|c0|p34;" +

    "A long time ago, in a galaxy far,\\Pfar away...}"

  mt.Layer <- "Intro"

  mt.TextHeight <- 0.5

  mt.Width <- 10.

  mt.Normal <- Vector3d.ZAxis

  mt.TransformBy(Matrix3d.Displacement(new Vector3d(1., 6., 0.)))

  mt



// Generate a quantity of randomly located stars... a list of (x,y)

// tuples where x and y are between 0 and 1. These will later

// get transformed into the relevant space (on the screen, etc.)



let locateStars quantity =



  // Create our random number generator



  let ran = new System.Random()



  // Note: _ is only used to make sure this function gets

  // executed when it is called... if we have no argument

  // it's a value that doesn't require repeated execution



  let randomPoint _ =



    // Get random values between 0 and 1 for our x and y coordinates



    (ran.NextDouble(), ran.NextDouble())



  // Local recursive function to create n stars at random

  // locations (in the plane of the screen)



  let rec randomStars n =

    match n with

    | 0 -> []

    | _ -> (randomPoint 0.) :: randomStars (n-1)



  // Create the specified number of stars at random locations



  randomStars quantity



// Take locations from 0-1 in X and Y and place them

// relative to the screen



let putOnScreen wid hgt dcs (x, y) =



  // We want to populate a space that's 2 screens high (so we

  // can pan/rotate downwards at the end of the crawl), hence

  // the additional multiplier on y



  let pt = new Point3d(wid * (x - 0.5), hgt * ((y * -1.5) + 0.5), 0.)

  pt.TransformBy(dcs)   



// Create a polyline from a vertex list



let polyFromVerts n w m lay verts =

  let pl = new Polyline(List.length verts)

  pl.Normal <- n

  List.iteri

    (fun i v ->

      pl.AddVertexAt(i, new Point2d(fst v, snd v), 0., w, w)

    )

    verts

  pl.Closed <- true

  pl.TransformBy(m)

  pl.Layer <- lay

  pl



// Create the Star Wars logo from a list of vertex lists



let createLogo n w (p:Point3d) =

  let verts =

    [

      [

        (3.44258, 3.55679214868466);

        (3.44258, 3.17553);

        (2.8459, 3.17553);

        (2.8459, 2.26434);

        (2.40686, 2.26434);

        (2.40686, 3.17612262061896);

        (1.75655462335279, 3.17429248415801);

        (1.72128333960472, 3.16669182023216);

        (1.70763551483587, 3.15445862216978);

        (1.70053119527792, 3.13782570874412);

        (1.69872472722736, 3.12280350074472);

        (1.69905468222644, 3.1191373340882);

        (1.70087251722259, 3.11283393221843);

        (1.70607593564196, 3.10180962306061);

        (1.71621799674036, 3.08484068174517);

        (1.73226620616926, 3.06151479594735);

        (1.75494342528422, 3.03081841447927);

        (1.78484748611009, 2.99191745820677);

        (1.82294826291299, 2.94341738705363);

        (1.87617804512918, 2.87460815638392);

        (1.92246977710667, 2.81233246534401);

        (1.95733932573181, 2.76278154528292);

        (1.97888966827266, 2.72730122581048);

        (1.99798396461003, 2.61953152517619);

        (1.97570333908842, 2.50537461239132);

        (1.91940141039899, 2.40109844384521);

        (1.83646768287547, 2.32393324739609);

        (1.80352751564867, 2.30404166777099);

        (1.77133382731068, 2.28892985436458);

        (1.73039688525943, 2.27813889539216);

        (1.6754267050528, 2.27134897179126);

        (1.59812878352077, 2.26745012799826);

        (1.48927961179153, 2.26536230567172);

        (1.33992701030606, 2.26450009692313);

        (1.14136357854396, 2.26434001353564);

        (1.04351, 2.26434);

        (0.353207, 2.26434);

        (0.353207, 2.68233);

        (1.40159102170787, 2.68233);

        (1.41748209051223, 2.69338144406387);

        (1.43267712171974, 2.70939240011938);

        (1.44055338604423, 2.73157466234716);

        (1.44119451950013, 2.7367666633397);

        (1.44105860097375, 2.73978455802721);

        (1.43997063735183, 2.74322220229697);

        (1.43439829934938, 2.75301581981413);

        (1.4213959120805, 2.77071589918082);

        (1.39979463633981, 2.7968603003749);

        (1.36874714824015, 2.83262747962015);

        (1.32697107584659, 2.87983734880692);

        (1.23683919774444, 2.98529715322583);

        (1.18339822046774, 3.06424778707422);

        (1.16026089514802, 3.13669377471704);

        (1.15987518361763, 3.21768150787052);

        (1.18779743410553, 3.32756187144587);

        (1.25599700588018, 3.43654449583423);

        (1.36395601807001, 3.52111523123897);

        (1.50483659505006, 3.55390286925382)

      ];

      [

        (4.39994870002626, 3.54702);

        (4.84743214991296, 2.25278501118727);

        (4.41662097329373, 2.25517027344357);

        (4.36118115868732, 2.43645696748207);

        (3.81392247714979, 2.4388933038331);

        (3.75959503424206, 2.26439);

        (3.32291291955518, 2.26439);

        (3.76562469596367, 3.54702)

      ];

      [

        (3.93947639266304, 2.78028246119739);

        (4.0036225829752, 2.96145971580626);

        (4.09333768797878, 3.21205266525835);

        (4.17869162137176, 2.9611015523335);

        (4.23989035006252, 2.78062648416092)

      ];

      [

        (5.54586280271403, 3.54702);

        (5.73207467832675, 3.54636901457996);

        (5.88112842531212, 3.54435138355133);

        (5.98711334518623, 3.54111056421452);

        (6.04631520398901, 3.53650379705603);

        (6.11453578628832, 3.51811946058964);

        (6.17810911285892, 3.48782673131194);

        (6.23583237180861, 3.44644129584782);

        (6.28596484458466, 3.39522327740142);

        (6.32595493380338, 3.3422331096743);

        (6.35270689747694, 3.29157143345469);

        (6.3680867123442, 3.23557047460095);

        (6.37643733628869, 3.16568660578167);

        (6.36992931993028, 3.05606170860937);

        (6.33210762885031, 2.95400067046692);

        (6.26513711406835, 2.86555263333169);

        (6.17366080953793, 2.79497351541438);

        (6.14309800665153, 2.7769730033941);

        (6.11700705528388, 2.76203194437172);

        (6.1127843266014, 2.7596756036369);

        (6.13885495853737, 2.73241774032095);

        (6.17040343063679, 2.70456002005355);

        (6.19335603450253, 2.68673568368009);

        (6.86633739559967, 2.67707780533635);

        (6.8742792314147, 2.26439);

        (6.43526528939969, 2.26439);

        (6.2418481178589, 2.26499101663952);

        (6.11292604672176, 2.26701660378081);

        (6.03406510582276, 2.27102207373412);

        (5.9876655077232, 2.2786416155789);

        (5.93407000168671, 2.30917788766821);

        (5.85931623340334, 2.36822655452807);

        (5.75524877978626, 2.46058692597491);

        (5.61622131796047, 2.59075075972907);

        (5.53661647932702, 2.66649674082322);

        (5.5380039627306, 2.26439);

        (5.0687, 2.26439);

        (5.0687, 3.54702)

      ];

      [

        (5.53061, 3.22193);

        (5.67562434528338, 3.22193);

        (5.76549694080276, 3.22143652653738);

        (5.8227611211413, 3.21969654059112);

        (5.85910049504742, 3.21603930873005);

        (5.8835168373915, 3.20907338608929);

        (5.91186718137154, 3.19493342317029);

        (5.93449705925347, 3.17520079608985);

        (5.9461460801979, 3.14851545023844);

        (5.94993368385409, 3.1219164675812);

        (5.95063789889132, 3.09471968284322);

        (5.94382358152697, 3.06635439430217);

        (5.92659250539508, 3.04172336065536);

        (5.90396433067426, 3.02224480067035);

        (5.89094323070014, 3.01257677365093);

        (5.85401438673261, 3.00939777579999);

        (5.81195751173521, 3.00827403940718);

        (5.75772390976083, 3.00788023741928);

        (5.69388269742043, 3.00778);

        (5.53061, 3.00778)

      ];

      [

        (1.57896862502186, 2.10589);

        (1.67880828853815, 1.81260822369826);

        (1.71379594628957, 1.71227377415791);

        (1.73527827819659, 1.65374851057995);

        (1.75920847744905, 1.72143678846549);

        (1.79238473443157, 1.81629031452661);

        (1.82529369636899, 1.9108498644361);

        (1.85381147382987, 1.99319569627039);

        (1.87388905179331, 2.05149770143778);

        (1.8912822178088, 2.10154);

        (2.32183990237932, 2.10154);

        (1.87988984918951, 0.813874);

        (1.58239936659396, 0.813874);

        (1.56171424001044, 0.873466415317032);

        (1.53295553769481, 0.956661589981072);

        (1.49226696124087, 1.07432847254541);

        (1.44570537030483, 1.20935203857834);

        (1.39914465363298, 1.34447313546997);

        (1.35858792560323, 1.46260098506068);

        (1.35731504835852, 1.46634287831389);

        (1.12278635463374, 0.823096);

        (0.828087008371704, 0.823096);

        (0.391580354628849, 2.10592925972778);

        (0.820152580844014, 2.10564013321748);

        (0.837989023926543, 2.05516759780397);

        (0.859154236649471, 1.99519000485767);

        (0.889137620919735, 1.91045548589063);

        (0.92363489102879, 1.81330725414169);

        (0.95817174136269, 1.71621235357281);

        (0.979127616594254, 1.65771496109079);

        (1.13684321996318, 2.10589)

      ];

      [

        (3.28904785776228, 2.11550813590997);

        (3.73761724891686, 0.824937551963215);

        (3.30662126941653, 0.822954990623427);

        (3.24971008910397, 1.00471601224713);

        (2.69993521628902, 1.00914873793685);

        (2.64593333868056, 0.827492143980233);

        (2.21818710344123, 0.831947254825196);

        (2.6611172170532, 2.11491182100224)

      ];

      [

        (2.83075227905127, 1.35366041729816);

        (2.87923452796852, 1.48620742282014);

        (2.91710514665256, 1.58972911414478);

        (2.98271654250203, 1.76897755710787);

        (3.04320129635346, 1.59028356566733);

        (3.05209063261682, 1.56402552642664);

        (3.06700400017455, 1.52004510187737);

        (3.0854341923654, 1.46582399091646);

        (3.12362427253239, 1.35375);

        (2.96565, 1.35375)

      ];

      [

        (6.86738701658834, 2.11055);

        (6.86636282954738, 1.71143316113769);

        (6.80968306747308, 1.71166033453278);

        (6.76879036498295, 1.71182022759786);

        (6.70799358315783, 1.71199016269997);

        (6.63307325593112, 1.7122001636159);

        (6.55001968254444, 1.71242014609799);

        (6.46487686643307, 1.71259008296755);

        (6.38353162001043, 1.71274);

        (6.3119, 1.71274);

        (6.27257783369629, 1.71274);

        (6.24205274248879, 1.71264056973548);

        (6.22660212251127, 1.7125107967416);

        (6.2251332275232, 1.71152567832907);

        (6.21826693670348, 1.69895889104225);

        (6.21368777582741, 1.67971131922799);

        (6.21435024322066, 1.66802861722527);

        (6.21739642079077, 1.6617633178101);

        (6.23123505854596, 1.64006984102296);

        (6.25133503104544, 1.61172470022028);

        (6.27506976405328, 1.58087731010094);

        (6.30343445446908, 1.54536194073766);

        (6.33613016667173, 1.50446982038211);

        (6.36882765268814, 1.46364795338937);

        (6.39759648916047, 1.42768942522637);

        (6.42698279823146, 1.39058529555372);

        (6.45061281453046, 1.35962111552111);

        (6.46946283661554, 1.33294897542795);

        (6.48427168722091, 1.30886051606526);

        (6.49558070778541, 1.2857968585775);

        (6.50373858922054, 1.26288773947885);

        (6.50912773260329, 1.23975035055556);

        (6.51327721344814, 1.21302571797147);

        (6.51175336049161, 1.12736501317236);

        (6.48652470110405, 1.04165809320606);

        (6.44008974336086, 0.963007688635264);

        (6.37622624858673, 0.897126531506992);

        (6.34136126462528, 0.869847315902196);

        (6.30454078761051, 0.848196296706673);

        (6.25735068769598, 0.832813348711309);

        (6.1946926284406, 0.82334703105736);

        (6.10791480816548, 0.817863341131013);

        (5.98694154482626, 0.815070019097485);

        (5.82230156071494, 0.814036130538472);

        (5.60480157525874, 0.813819020750331);

        (5.57579464995636, 0.813819);

        (5.31033615083933, 0.814524554163534);

        (5.1147019020476, 0.816483302483575);

        (4.987492484323, 0.819719154126808);

        (4.92211642121057, 0.824809172133531);

        (4.86255265351012, 0.851353630113647);

        (4.78599624454765, 0.907412194416292);

        (4.67949985067332, 1.00068616876809);

        (4.53106852156296, 1.14052267830742);

        (4.47120745637841, 1.19730089863496);

        (4.43722713582279, 1.22872889310876);

        (4.43479568627557, 0.813638441379537);

        (3.97790059619618, 0.815626482435268);

        (3.9754088950639, 2.09644);

        (4.85435350955452, 2.09644);

        (4.9524384120744, 2.08116590914619);

        (5.0421132756076, 2.04495127286902);

        (5.11968748422517, 1.9926567681356);

        (5.18396561975463, 1.92855365816238);

        (5.23369876113581, 1.8565584931861);

        (5.26760265295347, 1.78012486674058);

        (5.28395979085181, 1.70241419345942);

        (5.28004510702221, 1.62839637688364);

        (5.25918823660479, 1.55956085936412);

        (5.23129767989095, 1.49769758838801);

        (5.19287713035147, 1.44636773420326);

        (5.14201539837177, 1.39663698792505);

        (5.08439692602106, 1.35247865701708);

        (5.02763448373853, 1.32012290369814);

        (5.01926153493527, 1.31567062139799);

        (5.0201401696421, 1.31465755077974);

        (5.03635825437325, 1.29789855762624);

        (5.05404454395319, 1.28126513332677);

        (5.07123638095395, 1.26662725426366);

        (5.08545995358084, 1.25609066762876);

        (5.09155854789262, 1.25261446887105);

        (5.11520296200932, 1.24773262641588);

        (5.1839384665362, 1.2437210842384);

        (5.31499237416825, 1.24167909762829);

        (5.52681922465014, 1.24108996855417);

        (5.63722185856806, 1.24103002684722);

        (5.75066647981753, 1.24129939671563);

        (5.83424919549954, 1.24231918109318);

        (5.89196733024185, 1.24477834974135);

        (5.92703259711752, 1.248815584514);

        (5.94186413459469, 1.25312246895092);

        (5.94452720971008, 1.2550352046588);

        (5.94806585844389, 1.26045738811548);

        (5.95485974741274, 1.27515168783283);

        (5.95764005574495, 1.28273863090887);

        (5.95785068079404, 1.28531001171654);

        (5.95662977011935, 1.29060599364051);

        (5.95018212309273, 1.30349479459504);

        (5.9355344205503, 1.32495058423466);

        (5.9118829225398, 1.3549665197346);

        (5.87849452603907, 1.39425562054069);

        (5.83444545149862, 1.44431638015785);

        (5.73724255457614, 1.5576766597549);

        (5.68852920511552, 1.65032448217977);

        (5.6739520592985, 1.72315250284916);

        (5.67339629718887, 1.7776616505618);

        (5.67582917215106, 1.81532530917471);

        (5.6869349467792, 1.86440938045866);

        (5.70875633588307, 1.91894581413262);

        (5.74384006043308, 1.97499767954953);

        (5.79476342169442, 2.02753710966927);

        (5.86330983842433, 2.07103004485607);

        (5.95041130228872, 2.10023544319704);

        (6.0548074435266, 2.11055)

      ];

      [

        (4.4345937394936, 1.56212643206149);

        (4.43518042620646, 1.67044148437216);

        (4.43556787492364, 1.77298062965549);

        (4.59383378518243, 1.77217924888779);

        (4.64881620553342, 1.77178759329077);

        (4.70616920376935, 1.77085699790493);

        (4.75610194813188, 1.76893449843586);

        (4.79998632985362, 1.76368084421198);

        (4.84719213337829, 1.71746157785606);

        (4.8610886482744, 1.66244080023347);

        (4.85668777505293, 1.63727739146715);

        (4.84628131477829, 1.61325711967745);

        (4.82603724633321, 1.58950045930602);

        (4.79564620691826, 1.57081593809471);

        (4.76918190987008, 1.56332632934342);

        (4.73276899886416, 1.5595967363527);

        (4.67535969661275, 1.55779395371568);

        (4.58510256995686, 1.55724810481441);

        (4.52224299866422, 1.5581940498193)

      ]

    ]



  // Displace our vertices to the specified point and then

  // apply a hardcoded, view-specific scaling



  let m1 = Matrix3d.Displacement(p.GetAsVector())

  let m = m1 * Matrix3d.Scaling(1.4, p + new Vector3d(3.5,0.,0.))

  verts |> List.map (polyFromVerts n w m "Crawl")



// Format the "opening crawl" text appropriately for MText



let crawlText num (title:string) (text:string) =

  let lines =

    text.Split([|"\r\n"|], StringSplitOptions.None) |>

    Array.toList

  let rec convert (lns:string list) =

    match lns with

    | [] -> ""

    | (x::xs) ->

      let ln =

        if xs = [] || (xs <> [] && xs.Head = "") then

          "\\pql;" + x + "\\P"

        else

          "\\pqd;" + x + "\\P"

      ln + convert xs



  String.Format(

    "\\pxsm1.5,qc;{{\\fFranklin Gothic Demi|b0|i0|c0|p34;" +

    "Episode {0}\\P\\P\\fFranklin Gothic Medium Cond|b0|i0|c0|p34;" +

    "\\H1.3333x;\\W0.95;{1}\\P\\fFranklin Gothic Demi|b0|i0|c0|" +

    "p34;\\H0.74999x;\\W1;\\P\\pqd;\\H0.83334x;{2}}}",

    roman num, title.ToUpper(), convert lines

  )



// Create the crawl text object with the provided text contents

// (again with hardcoded values that are view-specific)



let createCrawlText text =



  // Create our MText object



  let mt = new MText()



  // Set its contents and other properties



  mt.Contents <- text   

  mt.Layer <- "Crawl"

  mt.TextHeight <- 0.3

  mt.Width <- 6.

  mt



// Move the crawl text through space in a number of increments



let moveThroughSpace (doc:Document) (ent:Entity) steps delay =



  // Record our start time, so we stop when delay has elapsed



  let start = DateTime.Now



  // Specify our displacement increment



  let mat = Matrix3d.Displacement(new Vector3d(0.,0.2,0.))



  // Define a local recursive function to move the object

  // n times (but to check for user escape and terminate, as

  // needed)



  let rec moveLoop n =

    ent.TransformBy(mat)

    refresh doc

    let elapsed = DateTime.Now - start

    if n > 0 &&

        not(

          (HostApplicationServices.Current.UserBreak() ||

            elapsed.TotalSeconds >= delay)

        ) then

          moveLoop (n-1)



  // Move the MText a number of times along the Y axis



  moveLoop steps



// Commands to recreate the open crawl experience for a selected

// Star Wars episode



[<CommandMethod("EPISODE")>]

let episode() =



  // Make sure the active document is valid before continuing



  let doc = Application.DocumentManager.MdiActiveDocument

  if doc <> null then



    let db = doc.Database

    let ed = doc.Editor



    // Ask for the episode number



    let pso = new PromptIntegerOptions("\nEnter episode")

    pso.LowerLimit <- 1

    pso.UpperLimit <- 6 // Change to 7 in December 2015... :-)

    let psr = ed.GetInteger(pso)

    if psr.Status = PromptStatus.OK then



      // Start our transaction and create the required layers



      use tr = doc.TransactionManager.StartTransaction()

      createLayers tr db



      // Get our special Initial and Crawl views



      let ivtr = getView tr db "Initial"

      let cvtr = getView tr db "Crawl"



      if ivtr = null || cvtr = null then

        ed.WriteMessage(

          "\nPlease load StarWarsCrawl.dwg before running command.")



      doc.TransactionManager.EnableGraphicsFlush(true)

      let btr =

        tr.GetObject(doc.Database.CurrentSpaceId, OpenMode.ForWrite)

          :?> BlockTableRecord



      // Set the initial view: this gives us higher quality text



      ed.SetCurrentView(ivtr)



      // First we create the intro text



      let intro = createIntro ()

      intro |> addToDatabase tr btr



      // Make sure the intro text is visible



      doc |> refresh

      ed.UpdateScreen()



      // We'll now perform a number of start-up tasks, while our

      // initial intro text is visible... we'll start vy recording

      // our start time, so we can synchronise our delay



      let start = DateTime.Now



      // Get our view's DCS matrix



      let dcs = dcs2wcs(cvtr)



      // Create our planet with hardcoded, view-specific values

      // (do it here as demand-loading ASM may take time)



      let planet = new Solid3d()

      planet.CreateSphere(3.)

      planet.Layer <- "Planet"

      let bot =

        Point3d.Origin.TransformBy(dcs) +

        new Vector3d(0.,-1.1,-3.2)

      planet.TransformBy(Matrix3d.Displacement(bot.GetAsVector()))

      planet |> addToDatabase tr btr



      // Create a host of stars at random screen positions



      locateStars 1000 |>

      List.iter

        (fun xy ->

          let p = putOnScreen cvtr.Width cvtr.Height dcs xy

          let dbp = new DBPoint(p)

          dbp.Layer <- "Stars"

          dbp |> addToDatabase tr btr)



      // Open the intro music over the web



      let mp = new MediaPlayer()

      mp.Open(new Uri(mp3))



      // Wait for the download to complete before playing it



      waitForComplete mp



      // Get the data associated with the specified episode

      // (this can take some time)



      let epNum = psr.Value

      let epInfo =

        allFilms |>

        Array.pick

          (fun e -> if e.EpisodeId = epNum then Some(e) else None)



      // Have a minimum delay of 5 seconds showing the intro text



      waitForElapsed start 5



      // Start the audio at 8.5 seconds in



      mp.Position <- new TimeSpan(0, 0, 0, 8, 500)

      mp.Play()



      // Switch to the crawl view: this will also change the

      // visual style from 2D Wireframe to Realistic



      ed.SetCurrentView(cvtr)



      // Remove the intro text



      intro.Erase()



      // Draw the SW logo and "move it away" from the camera,

      // once again with hardcoded, view-specific values



      let es =

        createLogo cvtr.ViewDirection 0.0833

          (new Point3d(-1.,-5.,0.))

      es |> List.iter (addToDatabase tr btr)



      // Use a simple scaling to give the impression of movement

      // (yes, with hardcoded, view-specific values)



      let rec moveAway (es:Polyline list) n =

        let m = Matrix3d.Scaling(0.91, new Point3d(3.,12.,0.))

        es |>

        List.iter

          (fun e ->

            e.TransformBy(m)

            refresh doc

            System.Threading.Thread.Sleep(15))

        if n > 0 &&

          not(HostApplicationServices.Current.UserBreak()) then

            moveAway es (n-1)

      moveAway es 40



      // Remove the polylines making up the logo



      es |> List.iter (fun e -> e.Erase())



      if not(HostApplicationServices.Current.UserBreak()) then



        // Create the crawl text



        let crawl =

          crawlText epNum epInfo.Title epInfo.OpeningCrawl |>

          createCrawlText

        crawl |> addToDatabase tr btr



        // Start moving it through space, with 300 steps or for 68

        // seconds (whichever comes first)



        moveThroughSpace doc crawl 300 68.



        crawl.Erase()



        // After the crawl is done, rotate the view down onto

        // the surface of the planet



        if not(HostApplicationServices.Current.UserBreak()) then



          // We'll display the target by a portion of the distance

          // between the top set of stars and the bottom



          let pt2 = new Point3d(0., -0.5 * cvtr.Height, 0.)

          let dpt1 = Point3d.Origin.TransformBy(dcs)

          let dpt2 = pt2.TransformBy(dcs)

          let del = (dpt2 - dpt1) / 100.

          let disp = Matrix3d.Displacement(del)



          // We'll rotate the view direction at the same time,

          // so that the planet appears at the bottom



          let rot =

            Matrix3d.Rotation(-0.005, Vector3d.XAxis, cvtr.Target)



          // Our view table record needs to be writeable, of course



          cvtr.UpgradeOpen()



          // Perform the specified view changes 100 times,

          // waiting until 12 seconds have elapsed



          performNTimesOrUntilElapsed DateTime.Now 12

            (fun f ->

              cvtr.Target <- cvtr.Target.TransformBy(disp)

              cvtr.ViewDirection <-

                cvtr.ViewDirection.TransformBy(rot)

              ed.SetCurrentView(cvtr)

              System.Threading.Thread.Sleep(50)

            )

            100



      tr.Commit() // Commit the transaction

      mp.Stop() // Stop the music

özkan-wien (10.02.2015 09:11 GMT)

10.02.2015 11:15    

Travaci
c sharp ı duydukta f sharp ne yauf :) yanlış yazmadıysan ilgili programın editöründen dll ye çevirebilirsin.

10.02.2015 11:38    

özkan-wien
olsa dükkan senin travaci :-) yok iste ben de. visual studiosu olan yok mu ? o yapabiliyor galiba.

10.02.2015 11:52    

Travaci
Günümüz de yok diye birşey mi var özkan :) Şimdi forum kuralları dışına çıkartma beni :D

10.02.2015 11:57    

özkan-wien
ya bizde hersey yasak :-) pc ye lisansi ürün bile yükleyemiyoruz

> 1 <
Copyright © 2004-2022 SQL: 0.86 saniye - Sorgu: 55 - Ortalama: 0.01564 saniye