工具箱相关
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

GB-512.lsp 168KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530253125322533253425352536253725382539254025412542254325442545254625472548254925502551255225532554255525562557255825592560256125622563256425652566256725682569257025712572257325742575257625772578257925802581258225832584258525862587258825892590259125922593259425952596259725982599260026012602260326042605260626072608260926102611261226132614261526162617261826192620262126222623262426252626262726282629263026312632263326342635263626372638263926402641264226432644264526462647264826492650265126522653265426552656265726582659266026612662266326642665266626672668266926702671267226732674267526762677267826792680268126822683268426852686268726882689269026912692269326942695269626972698269927002701270227032704270527062707270827092710271127122713271427152716271727182719272027212722272327242725272627272728272927302731273227332734273527362737273827392740274127422743274427452746274727482749275027512752275327542755275627572758275927602761276227632764276527662767276827692770277127722773277427752776277727782779278027812782278327842785278627872788278927902791279227932794279527962797279827992800280128022803280428052806280728082809281028112812281328142815281628172818281928202821282228232824282528262827282828292830283128322833283428352836283728382839284028412842284328442845284628472848284928502851285228532854285528562857285828592860286128622863286428652866286728682869287028712872287328742875287628772878287928802881288228832884288528862887288828892890289128922893289428952896289728982899290029012902290329042905290629072908290929102911291229132914291529162917291829192920292129222923292429252926292729282929293029312932293329342935293629372938293929402941294229432944294529462947294829492950295129522953295429552956295729582959296029612962296329642965296629672968296929702971297229732974297529762977297829792980298129822983298429852986298729882989299029912992299329942995299629972998299930003001300230033004300530063007300830093010301130123013301430153016301730183019302030213022302330243025302630273028302930303031303230333034303530363037303830393040304130423043304430453046304730483049305030513052305330543055305630573058305930603061306230633064306530663067306830693070307130723073307430753076307730783079308030813082308330843085308630873088308930903091309230933094309530963097309830993100310131023103310431053106310731083109311031113112311331143115311631173118311931203121312231233124312531263127312831293130313131323133313431353136313731383139314031413142314331443145314631473148314931503151315231533154315531563157315831593160316131623163316431653166316731683169317031713172317331743175317631773178317931803181318231833184318531863187318831893190319131923193319431953196319731983199320032013202320332043205320632073208320932103211321232133214321532163217321832193220322132223223322432253226322732283229323032313232323332343235323632373238323932403241324232433244324532463247324832493250325132523253325432553256325732583259326032613262326332643265326632673268326932703271327232733274327532763277327832793280328132823283328432853286328732883289329032913292329332943295329632973298329933003301330233033304330533063307330833093310331133123313331433153316331733183319332033213322332333243325332633273328332933303331333233333334333533363337333833393340334133423343334433453346334733483349335033513352335333543355335633573358335933603361336233633364336533663367336833693370337133723373337433753376337733783379338033813382338333843385338633873388338933903391339233933394339533963397339833993400340134023403340434053406340734083409341034113412341334143415341634173418341934203421342234233424342534263427342834293430343134323433343434353436343734383439344034413442344334443445344634473448344934503451345234533454345534563457345834593460346134623463346434653466346734683469347034713472347334743475347634773478347934803481348234833484348534863487348834893490349134923493349434953496349734983499350035013502350335043505350635073508350935103511351235133514351535163517351835193520352135223523352435253526352735283529353035313532353335343535353635373538353935403541354235433544354535463547354835493550355135523553355435553556355735583559356035613562356335643565356635673568356935703571357235733574357535763577357835793580358135823583358435853586358735883589359035913592359335943595359635973598359936003601360236033604360536063607360836093610361136123613361436153616361736183619362036213622362336243625362636273628362936303631363236333634363536363637363836393640364136423643364436453646364736483649365036513652365336543655365636573658365936603661366236633664366536663667366836693670367136723673367436753676367736783679368036813682368336843685368636873688368936903691369236933694369536963697369836993700370137023703370437053706370737083709371037113712371337143715371637173718371937203721372237233724372537263727372837293730373137323733373437353736373737383739374037413742374337443745374637473748374937503751375237533754375537563757375837593760376137623763376437653766376737683769377037713772377337743775377637773778377937803781378237833784378537863787378837893790379137923793379437953796379737983799380038013802380338043805380638073808380938103811381238133814381538163817381838193820382138223823382438253826382738283829383038313832383338343835383638373838383938403841384238433844384538463847384838493850385138523853385438553856385738583859386038613862386338643865386638673868386938703871387238733874387538763877387838793880388138823883388438853886388738883889389038913892389338943895389638973898389939003901390239033904390539063907390839093910391139123913391439153916391739183919392039213922392339243925392639273928392939303931393239333934393539363937393839393940394139423943394439453946394739483949395039513952395339543955395639573958395939603961396239633964396539663967396839693970397139723973397439753976397739783979398039813982398339843985398639873988398939903991399239933994399539963997399839994000400140024003400440054006400740084009401040114012401340144015401640174018401940204021402240234024402540264027402840294030403140324033403440354036403740384039404040414042404340444045404640474048404940504051405240534054405540564057405840594060406140624063406440654066406740684069407040714072407340744075407640774078407940804081408240834084408540864087408840894090409140924093409440954096409740984099410041014102410341044105410641074108410941104111411241134114411541164117411841194120412141224123412441254126412741284129413041314132413341344135413641374138413941404141414241434144414541464147414841494150415141524153415441554156415741584159416041614162416341644165416641674168416941704171417241734174417541764177417841794180418141824183418441854186418741884189419041914192419341944195419641974198419942004201420242034204420542064207420842094210421142124213421442154216421742184219422042214222422342244225422642274228422942304231423242334234423542364237423842394240424142424243424442454246424742484249425042514252425342544255425642574258425942604261426242634264426542664267426842694270427142724273427442754276427742784279428042814282428342844285428642874288428942904291429242934294429542964297429842994300430143024303430443054306430743084309431043114312431343144315431643174318431943204321432243234324432543264327432843294330433143324333433443354336433743384339434043414342434343444345434643474348434943504351435243534354435543564357435843594360436143624363436443654366436743684369437043714372437343744375437643774378437943804381438243834384438543864387438843894390439143924393439443954396439743984399440044014402440344044405440644074408440944104411441244134414441544164417441844194420442144224423442444254426442744284429443044314432443344344435443644374438443944404441444244434444444544464447444844494450445144524453445444554456445744584459446044614462446344644465446644674468446944704471447244734474447544764477447844794480448144824483448444854486448744884489449044914492449344944495449644974498449945004501450245034504450545064507450845094510451145124513451445154516451745184519452045214522452345244525452645274528452945304531453245334534453545364537453845394540454145424543454445454546454745484549455045514552455345544555455645574558455945604561456245634564456545664567456845694570457145724573457445754576457745784579458045814582458345844585458645874588458945904591459245934594459545964597459845994600460146024603460446054606460746084609461046114612461346144615461646174618461946204621462246234624462546264627462846294630463146324633463446354636463746384639464046414642464346444645464646474648464946504651465246534654465546564657465846594660466146624663466446654666466746684669467046714672467346744675467646774678467946804681468246834684468546864687468846894690469146924693469446954696469746984699470047014702470347044705470647074708470947104711471247134714471547164717471847194720472147224723472447254726472747284729473047314732473347344735473647374738473947404741474247434744474547464747474847494750475147524753475447554756475747584759476047614762476347644765476647674768476947704771477247734774477547764777477847794780478147824783478447854786478747884789479047914792479347944795479647974798479948004801480248034804480548064807480848094810481148124813481448154816481748184819482048214822482348244825482648274828482948304831483248334834483548364837483848394840484148424843484448454846484748484849485048514852485348544855485648574858485948604861486248634864486548664867486848694870487148724873487448754876487748784879488048814882488348844885488648874888488948904891489248934894489548964897489848994900490149024903490449054906490749084909491049114912491349144915491649174918491949204921492249234924492549264927492849294930493149324933493449354936493749384939494049414942494349444945494649474948494949504951495249534954495549564957495849594960496149624963496449654966496749684969497049714972497349744975497649774978497949804981498249834984498549864987498849894990499149924993499449954996499749984999500050015002500350045005500650075008500950105011501250135014501550165017501850195020502150225023502450255026502750285029503050315032503350345035503650375038503950405041504250435044504550465047504850495050505150525053505450555056505750585059506050615062506350645065506650675068506950705071507250735074507550765077507850795080508150825083508450855086508750885089509050915092509350945095509650975098509951005101510251035104510551065107510851095110511151125113511451155116511751185119512051215122512351245125512651275128512951305131513251335134513551365137513851395140514151425143514451455146514751485149515051515152515351545155515651575158515951605161516251635164516551665167516851695170517151725173517451755176517751785179518051815182518351845185518651875188518951905191519251935194519551965197519851995200520152025203520452055206520752085209521052115212521352145215521652175218521952205221522252235224522552265227522852295230523152325233523452355236523752385239524052415242524352445245524652475248524952505251525252535254525552565257525852595260526152625263526452655266526752685269527052715272527352745275527652775278527952805281528252835284528552865287528852895290529152925293529452955296529752985299530053015302530353045305530653075308530953105311531253135314531553165317531853195320532153225323532453255326532753285329533053315332533353345335533653375338533953405341534253435344534553465347534853495350535153525353535453555356535753585359536053615362536353645365536653675368536953705371537253735374537553765377537853795380538153825383538453855386538753885389539053915392539353945395539653975398539954005401540254035404540554065407540854095410541154125413541454155416541754185419542054215422542354245425542654275428542954305431543254335434543554365437543854395440544154425443544454455446544754485449545054515452545354545455545654575458545954605461546254635464546554665467546854695470547154725473547454755476547754785479548054815482548354845485548654875488548954905491549254935494549554965497549854995500550155025503550455055506550755085509551055115512551355145515551655175518551955205521552255235524552555265527552855295530553155325533553455355536553755385539554055415542554355445545554655475548554955505551555255535554555555565557555855595560556155625563556455655566556755685569557055715572557355745575557655775578557955805581558255835584558555865587558855895590559155925593559455955596559755985599560056015602560356045605560656075608560956105611561256135614561556165617561856195620562156225623562456255626562756285629563056315632563356345635563656375638563956405641564256435644564556465647564856495650565156525653565456555656565756585659566056615662566356645665566656675668566956705671567256735674567556765677567856795680568156825683568456855686568756885689569056915692569356945695569656975698569957005701570257035704570557065707570857095710571157125713571457155716571757185719572057215722572357245725572657275728572957305731573257335734573557365737573857395740574157425743574457455746574757485749575057515752575357545755575657575758575957605761576257635764576557665767576857695770577157725773577457755776577757785779578057815782578357845785578657875788578957905791579257935794579557965797579857995800580158025803580458055806580758085809581058115812581358145815581658175818581958205821582258235824582558265827582858295830583158325833583458355836583758385839584058415842584358445845584658475848584958505851585258535854585558565857585858595860586158625863586458655866586758685869587058715872587358745875587658775878587958805881588258835884588558865887588858895890589158925893589458955896589758985899590059015902590359045905590659075908590959105911591259135914591559165917591859195920592159225923592459255926592759285929593059315932593359345935593659375938593959405941594259435944594559465947594859495950595159525953595459555956595759585959596059615962596359645965596659675968596959705971597259735974597559765977597859795980598159825983598459855986598759885989599059915992599359945995599659975998599960006001600260036004600560066007600860096010601160126013601460156016601760186019602060216022602360246025602660276028602960306031603260336034603560366037603860396040604160426043604460456046604760486049605060516052605360546055605660576058605960606061606260636064606560666067606860696070607160726073607460756076607760786079608060816082608360846085608660876088608960906091609260936094609560966097609860996100610161026103610461056106610761086109611061116112611361146115611661176118611961206121612261236124612561266127612861296130613161326133613461356136613761386139614061416142614361446145614661476148614961506151615261536154615561566157615861596160616161626163616461656166616761686169617061716172617361746175617661776178617961806181618261836184618561866187618861896190619161926193619461956196619761986199620062016202620362046205620662076208620962106211621262136214621562166217621862196220622162226223622462256226622762286229623062316232623362346235623662376238623962406241624262436244624562466247624862496250625162526253625462556256625762586259626062616262626362646265626662676268626962706271627262736274627562766277627862796280628162826283628462856286628762886289629062916292629362946295629662976298629963006301630263036304630563066307630863096310631163126313631463156316631763186319632063216322632363246325632663276328632963306331633263336334633563366337633863396340634163426343634463456346634763486349635063516352635363546355635663576358635963606361636263636364636563666367636863696370637163726373637463756376637763786379638063816382638363846385638663876388638963906391639263936394639563966397639863996400640164026403640464056406640764086409641064116412641364146415641664176418641964206421642264236424642564266427642864296430643164326433643464356436643764386439644064416442644364446445644664476448644964506451645264536454645564566457645864596460646164626463646464656466646764686469647064716472647364746475647664776478647964806481648264836484648564866487648864896490649164926493649464956496649764986499650065016502650365046505650665076508650965106511651265136514651565166517651865196520652165226523652465256526652765286529653065316532653365346535653665376538653965406541654265436544654565466547654865496550655165526553655465556556655765586559656065616562656365646565656665676568656965706571657265736574657565766577657865796580658165826583658465856586658765886589659065916592659365946595659665976598659966006601660266036604660566066607660866096610661166126613661466156616661766186619662066216622662366246625662666276628662966306631663266336634663566366637663866396640664166426643664466456646664766486649665066516652665366546655665666576658665966606661666266636664666566666667666866696670667166726673667466756676667766786679668066816682668366846685668666876688668966906691669266936694669566966697669866996700670167026703670467056706670767086709671067116712671367146715671667176718671967206721672267236724672567266727672867296730673167326733673467356736673767386739674067416742674367446745674667476748674967506751675267536754675567566757675867596760676167626763676467656766676767686769677067716772677367746775677667776778677967806781678267836784678567866787678867896790679167926793679467956796679767986799680068016802680368046805680668076808680968106811681268136814681568166817681868196820682168226823682468256826682768286829683068316832683368346835683668376838683968406841684268436844684568466847684868496850685168526853685468556856685768586859686068616862686368646865686668676868686968706871687268736874687568766877687868796880688168826883688468856886688768886889689068916892689368946895689668976898689969006901690269036904690569066907690869096910691169126913691469156916691769186919692069216922692369246925692669276928692969306931693269336934693569366937693869396940694169426943694469456946694769486949695069516952695369546955695669576958695969606961696269636964696569666967696869696970697169726973697469756976697769786979698069816982698369846985698669876988698969906991699269936994699569966997699869997000700170027003700470057006700770087009701070117012701370147015701670177018701970207021702270237024702570267027702870297030703170327033703470357036703770387039704070417042704370447045704670477048704970507051705270537054705570567057705870597060706170627063706470657066706770687069707070717072707370747075707670777078707970807081708270837084708570867087708870897090709170927093709470957096709770987099710071017102710371047105710671077108710971107111711271137114711571167117711871197120712171227123712471257126712771287129713071317132713371347135713671377138713971407141714271437144714571467147714871497150715171527153715471557156715771587159716071617162716371647165716671677168716971707171717271737174717571767177717871797180718171827183718471857186718771887189719071917192719371947195719671977198719972007201720272037204720572067207720872097210721172127213721472157216721772187219722072217222722372247225722672277228722972307231723272337234723572367237723872397240724172427243724472457246724772487249725072517252725372547255
  1. (command "_menuunload" "GB-512")
  2. (command "_menuload" "GB-512")
  3. (menucmd "p15=+GB-512.pop1")
  4. (setvar "cmdecho" 0);;;关闭命令行回显功能
  5. (setvar "osmode" 0);关闭捕捉
  6. (setq wwh 8888)
  7. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  8. (defun c:edPLnElve()
  9. ;(princ "\n选择曲线:\n")
  10. (setq enedBreak (entsel "选择一根曲线:"))
  11. (if (/= enedBreak nil)
  12. (progn
  13. (setq Myen (car enedBreak))
  14. (setq Med (entget myen))
  15. (setq Mxyz (assoc 10 Med))
  16. (setq Myz (nth 3 Mxyz))
  17. (princ "\n曲线原来的值为: ")
  18. (princ Myz)
  19. (princ "\n")
  20. (setq Newz (getreal "输入曲线的值:"))
  21. (if (/= Newz nil)
  22. (command "change" myen "" "p" "e" newz "")
  23. )
  24. ))
  25. )
  26. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  27. (defun Joinzobao(en)
  28. (SETVAR "CMDECHO" 0)
  29. (setq lt nil)
  30. (setq enlist nil)
  31. (setq ed (entget en))
  32. (SETQ D70 (CDR (ASSOC 70 ED)))
  33. (setq en1 (entnext en))
  34. (setq ed1 (entget en1))
  35. (setq pp (cdr (assoc 0 ed1)))
  36. (if (= pp "VERTEX")
  37. (progn
  38. (setq pt1 (assoc 10 ed1))
  39. (if (/= pt1 nil)
  40. (progn
  41. (setq ptx (nth 1 pt1))
  42. (setq pty (nth 2 pt1))
  43. (setq ptz (nth 3 pt1))
  44. (setq pt (list ptx pty ptz))
  45. ))
  46. (setq lt (cons pt lt))
  47. (setq enlist (cons en1 enlist))
  48. (while (/= pp "SEQEND")
  49. (progn
  50. (setq en1 (entnext en1))
  51. (setq ed1 (entget en1))
  52. (setq pp (cdr (assoc 0 ed1)))
  53. (setq pt1 (assoc 10 ed1))
  54. (if (/= pt1 nil)
  55. (progn
  56. (setq ptx (nth 1 pt1))
  57. (setq pty (nth 2 pt1))
  58. (setq ptz (nth 3 pt1))
  59. (setq pt (list ptx pty ptz))
  60. ))
  61. (setq lt (cons pt lt))
  62. (setq enlist (cons en1 enlist))
  63. )
  64. )
  65. (setq lt (cdr lt))
  66. (setq enlist (cdr enlist))
  67. (IF (OR (= D70 1) (= D70 9))
  68. (PROGN
  69. (SETQ LT (CONS (LAST LT) LT))
  70. ))
  71. (setq lt (reverse lt))
  72. (setq enlist (reverse enlist))
  73. )
  74. (progn
  75. (princ "SORRY! NOT 3DPOLYLINE use <gx>\n")
  76. (SETQ LT NIL)
  77. (redraw en 4)
  78. (quit)
  79. ))
  80. )
  81. ;;连接2条3dpolyline;;coord为LJ的子程序
  82. (defun coord(en / ed)
  83. (setq ee (entsel "\n请选择要连接的线:"))
  84. (setq en (car ee))
  85. (setq ed (enTGET en))
  86. (print ed)
  87. (setq la (cdr (assoc 8 ed)))
  88. (setq pp (cdr (assoc 0 ed)))
  89. (if (/= pp "LINE")
  90. (progn
  91. (setq la (cdr (assoc 8 ed)))
  92. (setq c38 (assoc 38 ed))
  93. (if (eq c38 nil)
  94. (progn
  95. (setq en1 (entnext en))
  96. (setq ed1 (entget en1))
  97. (setq pp (cdr (assoc 0 ed1)))
  98. (setq pt1 (assoc 10 ed1))
  99. (if (/= pt1 nil)
  100. (progn
  101. (setq pt (cdr pt1))
  102. ))
  103. (setq lt (list pt))
  104. (while (/= pp "SEQEND")
  105. (progn
  106. (setq en1 (entnext en1))
  107. (setq ed1 (entget en1))
  108. (setq pp (cdr (assoc 0 ed1)))
  109. (setq pt1 (assoc 10 ed1))
  110. (if (/= pt1 nil)
  111. (progn
  112. (setq pt (cdr pt1))
  113. ))
  114. (setq lt (cons pt lt))
  115. )
  116. )
  117. (setq lt (cdr lt))
  118. ); not lwpolyline
  119. (progn
  120. (print "aaa")
  121. (setq ev38 (cdr c38))
  122. (setq len (length ed))
  123. (setq len (- len 3))
  124. (setq j 0)
  125. (setq c10 (car (nth j ed)))
  126. (while (/= c10 10)
  127. (progn
  128. (setq j (+ 1 j))
  129. (setq c10 (car (nth j ed)))
  130. ))
  131. (setq lt (list (list 0 0 0)))
  132. (while (< j len)
  133. (progn
  134. (setq lpt1 (cdr (nth j ed)))
  135. (setq lptx (nth 0 lpt1))
  136. (setq lpty (nth 1 lpt1))
  137. (setq lpt (list lptx lpty ev38))
  138. (setq lt (cons lpt lt))
  139. (setq j (+ j 4))
  140. ))
  141. (setq lt (reverse lt))
  142. (setq lt (cdr lt))
  143. )); is lwpolyline
  144. ) ; not line
  145. (progn
  146. (setq lip1 (cdr (assoc 10 ed)))
  147. (setq lt (list lip1))
  148. (setq lip2 (cdr (assoc 11 ed)))
  149. (setq lt (cons lip2 lt))
  150. )) ; line
  151. (setq pot (cadr ee))
  152. (setq edd ed)
  153. (setq lla la)
  154. (setq e en)
  155. (setq lt lt)
  156. ;(entdel en)
  157. )
  158. 连接2条3dpolyline,LJ为主程序;;coord为LJ的子程序
  159. (defun c:lj1()
  160. (setq lt1 (coord en))
  161. (setq e1 e)
  162. (setq la1 lla)
  163. (setq et1 edd)
  164. (setq pot1 pot)
  165. (setq lt1 (reverse lt1))
  166. (setq color1 (cdr c66))
  167. ;(setq c62 (assoc 62 ed))
  168. ;(setq cc62 (cons 62 3))
  169. ;(setq color1 (cdr c62))
  170. ;(setq ed (subst cc62 c62 ed))
  171. ;(entmod ed)
  172. (command "change" e1 "" "P" "c" "3" "")
  173. ;_______________
  174. (setq pss1 (car lt1))
  175. (setq ps1 (list (nth 0 pss1) (nth 1 pss1)))
  176. (setq pee1 (last lt1))
  177. (setq pe1 (list (nth 0 pee1) (nth 1 pee1)))
  178. (setq pot1 (list (nth 0 pot1) (nth 1 pot1)))
  179. (setq ds1 (distance ps1 pot1))
  180. (setq de1 (distance pe1 pot1))
  181. (if (> ds1 de1)
  182. (progn
  183. (setq lt1 lt1)
  184. )
  185. (progn
  186. (setq lt1 (reverse lt1))
  187. ))
  188. ;________________
  189. (setq lt2 (coord en))
  190. (setq e2 e)
  191. (setq la2 lla)
  192. (setq et2 edd)
  193. (setq pot2 pot)
  194. (setq lt2 (reverse lt2))
  195. (command "change" e2 "" "p" "c" 3 "")
  196. ;_________________
  197. (setq pss2 (car lt2))
  198. (setq ps2 (list (nth 0 pss2) (nth 1 pss2)))
  199. (setq pee2 (last lt2))
  200. (setq pe2 (list (nth 0 pee2) (nth 1 pee2)))
  201. (setq pot2 (list (nth 0 pot2) (nth 1 pot2)))
  202. (setq ds2 (distance ps2 pot2))
  203. (setq de2 (distance pe2 pot2))
  204. (if (< ds2 de2)
  205. (progn
  206. (setq lt2 lt2)
  207. )
  208. (progn
  209. (setq lt2 (reverse lt2))
  210. ))
  211. ;_________________
  212. (if (= la1 la2)
  213. (progn
  214. (setq lt (append lt1 lt2))
  215. (setvar "clayer" la1)
  216. (setq i 0)
  217. (setq len (length lt))
  218. (if (NOT (EQ e1 e2))
  219. (progn
  220. (command "3dpoly")
  221. (while (< i len)
  222. (progn
  223. (setq pt (nth i lt))
  224. (command pt)
  225. (setq i (+ 1 i))
  226. ))
  227. (command "")
  228. (entdel e1)
  229. (entdel e2)
  230. )
  231. (progn
  232. (prompt "\nSORRY! 你选择了同一条线!!!!")
  233. (print)
  234. ))
  235. )
  236. (progn
  237. (prompt "\nSORRY! 你选择的不是同一层的线!!!!")
  238. (PRINT)
  239. ))
  240. ;(command "change" "l" "" "p" "c" color1 "")
  241. )
  242. (defun c:mplnjoin()
  243. (setq Ssent nil)
  244. (setq Ppent nil)
  245. (setq e1 "xxx")
  246. (while (/= e1 nil)
  247. (progn
  248. (print)
  249. (setq E1 (entsel "选择第一根线[右键结束]:"))
  250. (if (/= e1 nil)
  251. (progn
  252. (setq ek1 (car e1))
  253. (setq p1 (cadr e1))
  254. (REDRAW Ek1 3)
  255. (print)
  256. (SETQ E2 (ENTSEL "选择第二根线:"))
  257. (if (/= e2 nil)
  258. (progn
  259. (setq ek2 (car e2))
  260. (setq p2 (cadr e2))
  261. (setq ssent (cons ek1 ssent))
  262. (setq ssent (cons ek2 ssent))
  263. (setq Ppent (cons p1 PPent))
  264. (setq Ppent (cons p2 PPent))
  265. ))
  266. ))
  267. ))
  268. (setq ssLen (length ssent))
  269. (setq ssn 0)
  270. (while (< ssn sslen)
  271. (progn
  272. (setq ek1 (nth ssn ssent))
  273. (setq p1 (nth ssn PPent))
  274. (setq ssn (+ 1 ssn))
  275. (setq ek2 (nth ssn Ssent))
  276. (setq p2 (nth ssn Ppent))
  277. (setq ssn (+ 1 ssn))
  278. (if (= ek1 ek2)
  279. (progn
  280. (command "pedit" ek1 "c" "x" "")
  281. )
  282. (progn
  283. (Joinzobao ek1)
  284. (setq ltk1 lt)
  285. (setq enlist1 enlist)
  286. (setq en1z ptz)
  287. (Joinzobao ek2)
  288. (setq enlist2 enlist)
  289. (setq ltk2 lt)
  290. (setq en2z ptz)
  291. (if (/= en1z en2z)
  292. (progn
  293. (princ "\n不能连接:高程值不相等\n")
  294. )
  295. (progn
  296. (setq pk11 (nth 0 ltk1))
  297. (setq pk12 (nth (- (length ltk1) 1) ltk1))
  298. (setq pk21 (nth 0 ltk2))
  299. (setq pk22 (nth (- (length ltk2) 1) ltk2))
  300. (setq d11 (distance p1 pk11))
  301. (setq d12 (distance p1 pk12))
  302. (setq d21 (distance p2 pk21))
  303. (setq d22 (distance p2 pk22))
  304. (if (< d11 d12)
  305. (progn (setq pk1 pk11) (setq enk1 (nth 0 enlist1)))
  306. (progn (setq pk1 pk12) (setq enk1 (nth (- (length enlist1) 1) enlist1)))
  307. )
  308. (if (< d21 d22)
  309. (progn (setq pk2 pk21) (setq enk2 (nth 0 enlist2)))
  310. (progn (setq pk2 pk22) (setq enk2 (nth (- (length enlist2) 1) enlist2)))
  311. )
  312. (setq pt1x (nth 0 pk1))
  313. (setq pt1y (nth 1 pk1))
  314. (setq pt1z (nth 2 pk1))
  315. (setq pt2x (nth 0 pk2))
  316. (setq pt2y (nth 1 pk2))
  317. (setq pt2z (nth 2 pk2))
  318. (if (= pt1z pt2z)
  319. (progn
  320. (setq ptzdx (/ (+ pt1x pt2x) 2))
  321. (setq ptzdy (/ (+ pt1y pt2y) 2))
  322. (setq Ptzd (list ptzdx ptzdy pt1z))
  323. (setq edk (entget enk1))
  324. (setq c10n (cons 10 ptzd))
  325. (setq c10 (assoc 10 edk))
  326. (setq edk (subst c10n c10 edk))
  327. (entmod edk)
  328. (entupd enk1)
  329. (setq edk (entget enk2))
  330. (setq c10n (cons 10 ptzd))
  331. (setq c10 (assoc 10 edk))
  332. (setq edk (subst c10n c10 edk))
  333. (entmod edk)
  334. (entupd enk1)
  335. (COMMAND "PEDIT" Ek1 "J" Ek1 Ek2 "" "")
  336. ));;
  337. ))
  338. ));;
  339. ))
  340. )
  341. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  342. (defun GB512blc(/ dcl_id1 done1)
  343. (setq dcl_id (load_dialog "GB-512.dcl"))
  344. (if (not (new_dialog "GB512A" dcl_id))
  345. (exit)
  346. )
  347. (setq wwblc "0")
  348. (action_tile "wwwblc" "(setq wwblc $value)")
  349. (setq done1(start_dialog))
  350. (if (= done1 1)
  351. (progn
  352. (if (= wwblc "0")(progn(setq wwblc 2000)(setq jc_dgj 2.0)))
  353. (if (= wwblc "1")(progn(setq wwblc 1000)(setq jc_dgj 1.0)))
  354. (if (= wwblc "2")(progn(setq wwblc 500)(setq jc_dgj 0.5)))
  355. )
  356. (progn
  357. (setq wwblc 2000)
  358. (setq jc_dgj 2.0)
  359. )
  360. )
  361. (unload_dialog dcl_id)
  362. (command "style" "STANDARD" "rs,hztxt" "0" "0.75" "0" "n" "n" "n")
  363. (setq PI 3.141592654)
  364. (setq jieshi "1")
  365. (setq jcdx1 "0")
  366. (setq JC_jqx "8120")
  367. (setq JC_sqx "8110")
  368. (setq JC_gcd "8310")
  369. ;;;;; (setq JC_dgj 2.0)
  370. (setvar "plinetype" 0)
  371. )
  372. ;;;;;;;;;;;;;;;;;;;;
  373. (defun GB512SZ(/ dcl_id1 done2 a1 a2 aa1 aa2)
  374. (setq dcl_id (load_dialog "GB-512.dcl"))
  375. (if (not (new_dialog "GB512B" dcl_id))
  376. (exit)
  377. )
  378. (if (= jieshi "1")
  379. (progn
  380. (set_tile "jieshi0" "0")
  381. (set_tile "jieshi1" "1") )
  382. (progn
  383. (set_tile "jieshi0" "1")
  384. (set_tile "jieshi1" "0") )
  385. )
  386. (if (= jcdx1 "1")
  387. (progn
  388. (set_tile "zdjcdx" "0")
  389. (set_tile "sdjcdx" "1") )
  390. (progn
  391. (set_tile "zdjcdx" "1")
  392. (set_tile "sdjcdx" "0") )
  393. )
  394. (set_tile "JCjqx" JC_jqx)
  395. (set_tile "JCsqx" JC_sqx)
  396. (set_tile "JCgcd" JC_gcd)
  397. (set_tile "JCdgj" (rtos JC_dgj))
  398. (action_tile "jieshi0" "(setq a1 $value)")
  399. (action_tile "jieshi1" "(setq a2 $value)")
  400. (action_tile "zdjcdx" "(setq aa1 $value)")
  401. (action_tile "sdjcdx" "(setq aa2 $value)")
  402. (action_tile "accept" "(box_txt)(done_dialog 1)")
  403. (setq done2(start_dialog))
  404. (if (= done2 1)
  405. (progn
  406. (if (= a2 "1")(setq jieshi "1")(setq jieshi "0"))
  407. (if (= aa2 "1")(setq jcdx1 "1")(setq jcdx1 "0"))
  408. ))
  409. (unload_dialog dcl_id)
  410. )
  411. ;;;;;;;;;;;;;;;;;
  412. (defun box_txt()
  413. (setq JC_jqx (get_tile "JCjqx" ))
  414. (setq JC_sqx (get_tile "JCsqx" ))
  415. (setq JC_gcd (get_tile "JCgcd" ))
  416. (setq JC_dgj (atof(get_tile "JCdgj" )))
  417. )
  418. (defun rcqx_def()
  419. (setq rcQxgs 4)
  420. (setq rcMapdis 1.0)
  421. (setq rcCs 3)
  422. (setq DrcCs0 1)
  423. (setq DrcCs1 1)
  424. (setq rcBlc 2000)
  425. )
  426. (defun MySetdlg(/ dcl_id )
  427. (princ "\nGB-512[设置]:\n")
  428. (setq dcl_id (load_dialog "GB-512.dcl"))
  429. (if (not (new_dialog "GB512c" dcl_id))
  430. (exit)
  431. )
  432. ;;;;;;
  433. (set_tile "RcMapDis" (rtos rcmapdis))
  434. (set_tile "RcBlc" (rtos rcblc))
  435. (set_tile "RcCs" (itoa rccs))
  436. (set_tile "DRcCs0" (itoa drccs0))
  437. (set_tile "DRcCs1" (itoa drccs1))
  438. (set_tile "RcQxgs" (itoa rcqxgs))
  439. ;;;;;;
  440. (action_tile "RcMapDis" "(setq srcmapdis $value)")
  441. (action_tile "RcBlc" "(setq srcblc $value)")
  442. (action_tile "RcCs" "(setq srccs $value)")
  443. (action_tile "DRcCs0" "(setq sdrccs0 $value)")
  444. (action_tile "DRcCs1" "(setq sdrccs1 $value)")
  445. (action_tile "RcQxgs" "(setq srcqxgs $value)")
  446. (setq What_next (start_dialog))
  447. (cond
  448. ((= 1 what_next) (RcNewdata))
  449. )
  450. (unload_dialog dcl_id)
  451. (setq srcqxgs nil
  452. srcblc nil
  453. srcmapdis nil
  454. srccs nil
  455. sdrccs0 nil
  456. sdrccs1 nil)
  457. (setq wwblc rcblc)
  458. (princ)
  459. )
  460. (defun RcNewdata()
  461. (if (/= srcqxgs nil) (setq rcQxgs (atoi srcqxgs)))
  462. (if (/= srcmapdis nil) (setq rcmapdis (atof srcmapdis)))
  463. (if (/= srccs nil) (setq RcCs (atoi srccs)))
  464. (if (/= sdrccs0 nil) (setq dRcCs0 (atoi sdrccs0)))
  465. (if (/= sdrccs1 nil) (setq dRcCs1 (atoi sdrccs1)))
  466. (if (/= srcblc nil) (setq rcBlc (atof srcblc)))
  467. )
  468. ;;;;;;;;;;;;;;;;;;;;;;;;
  469. (defun Zaoqx(l1pt l2pt)
  470. (setq l1tpx (nth 0 l1pt))
  471. (setq l1tpy (nth 1 l1pt))
  472. (setq l2tpx (nth 0 l2pt))
  473. (setq l2tpy (nth 1 l2pt))
  474. (setq qxnn 1)
  475. (while (<= qxnn Rcqxgs)
  476. (progn
  477. (zzpt l1tpx l2tpx rcbs qxnn)
  478. (setq Ltqxn (cons (list px py pz) Ltqxn))
  479. (setq qxnn (+ qxnn 1))
  480. ))
  481. (princ)
  482. )
  483. ;;;;;;
  484. (defun PlnLt(Plt n0)
  485. (if (/= Plt nil)
  486. (progn
  487. (setq i (+ n0 rcqxgs))
  488. (setq pf (nth n0 Plt))
  489. (setq len (length Plt))
  490. (command "pline" pf)
  491. (while (< i len)
  492. (progn
  493. (setq pto (nth i Plt))
  494. (command pto)
  495. (setq i (+ rcqxgs i))
  496. ))
  497. (command "")
  498. ))
  499. ;(setq plt nil)
  500. (princ)
  501. )
  502. ;;;;;;
  503. (defun Myfree()
  504. (setq Ltqxn nil)
  505. (setq lt nil)
  506. (setq lt1 nil)
  507. (setq lt2 nil)
  508. (setq en1 nil)
  509. (setq en2 nil)
  510. (setq rcbs nil)
  511. (setq l1tpx nil)
  512. (setq l2tpx nil)
  513. (setq l1tpy nil)
  514. (setq l2tpy nil)
  515. (setq dx nil)
  516. (setq dy nil)
  517. (setq px nil)
  518. (setq py nil)
  519. (princ)
  520. )
  521. (defun zzpt(l1tpx l2tpx rcbs nn)
  522. (setq dx (- l1tpx l2tpx))
  523. (setq dy (- l1tpy l2tpy))
  524. (setq px (- l1tpx (* dx rcbs nn)))
  525. (setq py (- l1tpy (* dy rcbs nn)))
  526. (setq pz (- p1z (* dgj nn)))
  527. ;;;;free
  528. (princ)
  529. )
  530. ;;;;;
  531. (rcqx_def)
  532. ;;;;(Mysetdlg);;;;;;;;;;参数设置;;;;;;;;
  533. ;;;;;
  534. (defun Rcqxzb(enLt p1 p2)
  535. (SETVAR "CMDECHO" 0)
  536. ;;;;;
  537. (setq EnLen (length enlt))
  538. (setq n 0)
  539. (setq min1 1000)
  540. (setq min2 1000)
  541. (while (< n Enlen)
  542. (progn
  543. (setq pt (nth n enlt))
  544. (setq ds1 (distance pt p1))
  545. (setq ds2 (distance pt p2))
  546. (if (< ds1 min1)
  547. (progn
  548. (setq min1 ds1)
  549. (setq the1 n)
  550. ))
  551. (if (< ds2 min2)
  552. (progn
  553. (setq min2 ds2)
  554. (setq the2 n)
  555. ))
  556. (setq n (+ 1 n))
  557. ))
  558. ;;;;
  559. (if (> the1 the2)
  560. (progn
  561. (setq addlt (reverse addlt))
  562. (setq thetmp the1)
  563. (setq the1 the2)
  564. (setq the2 thetmp)
  565. ))
  566. ;;;;
  567. (setq lt nil)
  568. (setq n 0)
  569. (while (< n Enlen)
  570. (progn
  571. ;;
  572. (if (and (>= n the1) (<= n the2))
  573. (progn
  574. (setq pt (nth n enlt))
  575. (setq ptx (nth 0 pt))
  576. (setq pty (nth 1 pt))
  577. (setq pt (list ptx pty))
  578. (setq lt (cons pt lt))
  579. )
  580. )
  581. ;;
  582. (setq n (+ 1 n))
  583. ))
  584. (princ)
  585. )
  586. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  587. (defun zobao(en p1 p2 dJx)
  588. (SETVAR "CMDECHO" 0)
  589. (setq IsJL 0)
  590. (setq lt nil)
  591. (setq ed (entget en))
  592. (SETQ D70 (CDR (ASSOC 70 ED)))
  593. (setq en1 (entnext en))
  594. (setq ed1 (entget en1))
  595. (setq pp (cdr (assoc 0 ed1)))
  596. (if (= pp "VERTEX")
  597. (progn
  598. (if (< djx 0)
  599. (progn
  600. (setq pt1 (assoc 10 ed1))
  601. (if (/= pt1 nil)
  602. (progn
  603. (setq ptx (nth 1 pt1))
  604. (setq pty (nth 2 pt1))
  605. (setq ptz (nth 3 pt1))
  606. (setq pt (list ptx pty))
  607. (setq lt (cons pt lt))
  608. ))
  609. ))
  610. ;;
  611. (while (/= pp "SEQEND")
  612. (progn
  613. (setq en1 (entnext en1))
  614. (setq ed1 (entget en1))
  615. (setq pp (cdr (assoc 0 ed1)))
  616. (setq pt1 (assoc 10 ed1))
  617. (if (/= pt1 nil)
  618. (progn
  619. (setq ptx (nth 1 pt1))
  620. (setq pty (nth 2 pt1))
  621. (setq ptz (nth 3 pt1))
  622. (setq pt (list ptx pty))
  623. ;;;;
  624. (if (< djx 0)
  625. (progn
  626. (setq lt (cons pt lt))
  627. )
  628. (progn
  629. (setq ds1 (distance pt p1))
  630. (setq ds2 (distance pt p2))
  631. ;;(print "ds1")
  632. ;;(print ds1)
  633. (if (= IsJL 0)
  634. (progn
  635. (if (< ds1 djx)
  636. (setq IsJL 1)
  637. )
  638. (if (< ds2 djx)
  639. (setq IsJL 2)
  640. )
  641. ))
  642. (if (and (= IsjL 1) (< ds2 djx))
  643. (setq pp "SEQEND");exit
  644. )
  645. (if (and (= IsjL 2) (< ds1 djx))
  646. (setq pp "SEQEND");exit
  647. )
  648. (if (or (= IsjL 1) (= IsjL 2))
  649. (setq lt (cons pt lt))
  650. )
  651. ));end 0
  652. ));;if
  653. ));;while
  654. (setq Mycando 1)
  655. )
  656. (progn
  657. (prompt "SORRY! NOT 3DPOLYLINE")
  658. (SETQ LT NIL)
  659. (setq Mycantdo 0)
  660. (redraw en 4)
  661. (quit)
  662. ))
  663. (princ)
  664. )
  665. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  666. (defun c:myedclose()
  667. (setq enedclose "xxx")
  668. (while (/= enedclose nil)
  669. (progn
  670. (princ "\n闭合:\n")
  671. (setq enedclose (entsel "选择一根线:"))
  672. (if (/= enedclose nil)
  673. (progn
  674. (setq Myen (car enedclose))
  675. (princ "\nedclose:")
  676. (command "pedit" Myen "c" "" "")
  677. (setq Myundoned (+ 1 Myundoned))
  678. ))
  679. ))
  680. )
  681. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  682. (defun c:myDelen()
  683. (princ "\n选择删除目标:\n")
  684. (setq en_delp1 (getpoint))
  685. (if (/= en_delp1 nil)
  686. (progn
  687. (setq en_delp2 (getcorner en_delp1))
  688. (if (/= en_delp2 nil)
  689. (progn
  690. (msg "1_x")
  691. (setq delp1_x (nth 0 en_delp1))
  692. (setq delp2_x (nth 0 en_delp2))
  693. (if (> delp1_x delp2_x)
  694. (progn
  695. (setq del_ens (ssget "c" en_delp1 en_delp2))
  696. )
  697. (progn
  698. (setq del_ens (ssget "w" en_delp1 en_delp2))
  699. ))
  700. (msg "s_L")
  701. (if (/= del_ens nil)
  702. (progn
  703. (setq Dels_Len (sslength del_ens))
  704. (msg Dels_Len)
  705. (setq n 0)
  706. (while (< n Dels_Len)
  707. (progn
  708. (setq delen (ssname del_ens n))
  709. (redraw delen 3)
  710. (setq n (+ 1 n))
  711. ))
  712. (princ "\n确定要删除![Y/N]\n")
  713. (setq Key (getstring))
  714. (if (not (eq (strcase key) "N"))
  715. (progn
  716. (setq drawLundo Dels_Len)
  717. (setq n 0)
  718. (while (< n Dels_Len)
  719. (progn
  720. (setq delen (ssname del_ens n))
  721. (command "erase" delen "")
  722. (setq n (+ 1 n))
  723. ))
  724. )
  725. (progn
  726. (setq n 0)
  727. (while (< n Dels_Len)
  728. (progn
  729. (setq delen (ssname del_ens n))
  730. (redraw delen 4)
  731. (setq n (+ 1 n))
  732. ))
  733. ));if "N"
  734. ))))
  735. ))
  736. )
  737. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  738. (defun c:myedBreak()
  739. (setq enedBreak "xxx")
  740. (while (/= enedBreak nil)
  741. (progn
  742. (princ "\n打断:\n")
  743. (setq enedBreak (entsel "选择一根线:"))
  744. (if (/= enedBreak nil)
  745. (progn
  746. (setq Myen (car enedBreak))
  747. (setq Mypt1 (cadr enedBreak))
  748. (princ Mypt1)
  749. (redraw myen 3)
  750. (setq enedpt (getpoint "选择打断点:"))
  751. (if (/= enedpt nil)
  752. (progn
  753. (command "break" Myen mypt1 enedpt "")
  754. (setq Myundoned (+ 1 Myundoned))
  755. ))
  756. ))
  757. ))
  758. )
  759. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  760. (defun c:myUndo()
  761. (if (> drawLundo 0)
  762. (progn
  763. (setq undon 0)
  764. (while (< undon drawLundo)
  765. (progn
  766. (command "undo" "")
  767. (setq undon (+ undon 1))
  768. ))
  769. (setq drawLundo -1)
  770. )
  771. (progn
  772. (if (> Myundon 0)
  773. (progn
  774. (setq undon 0)
  775. (while (< undon rcQxgs)
  776. (progn
  777. (command "undo" "")
  778. (setq undon (+ undon 1))
  779. ))
  780. (setq Myundon 0)
  781. )
  782. (progn
  783. (if (> Myundoned 0)
  784. (progn
  785. (command "undo" "")
  786. (setq Myundoned (- Myundoned 1))
  787. )
  788. (progn
  789. (princ "\n确定还要后悔![Y/N]\n")
  790. (setq Key (getstring))
  791. (if (eq (strcase key) "Y")
  792. (command "undo" "")
  793. )))))))
  794. (princ)
  795. )
  796. (defun c:chd()
  797. (setq en (car (entsel "请选择一条要修改方向的线::\n")))
  798. (setq ed (entget en))
  799. (setq en1 (entnext en))
  800. (setq ed1 (entget en1))
  801. (setq pp (cdr (assoc 0 ed1)))
  802. (setq pt (assoc 10 ed1))
  803. (setq lt (list pt))
  804. (while (/= pp "SEQEND")
  805. (progn
  806. (setq en1 (entnext en1))
  807. (setq ed1 (entget en1))
  808. (setq pp (cdr (assoc 0 ed1)))
  809. (setq pt (assoc 10 ed1))
  810. (setq lt (cons pt lt))
  811. )
  812. )
  813. (setq lt (cdr lt))
  814. (setq ln (length lt))
  815. (setq i 0)
  816. (setq e1 (entnext en))
  817. (setq d1 (entget e1))
  818. (while (< i ln)
  819. (progn
  820. (setq ptt (nth i lt))
  821. (setq pt (assoc 10 d1))
  822. (setq d2 (subst ptt pt d1))
  823. (entmod d2)
  824. (setq e1 (entnext e1))
  825. (setq d1 (entget e1))
  826. (setq i (+ 1 i))
  827. ))
  828. (command "redraw")
  829. )
  830. ;;;;;;;;;;格网;;;
  831. (defun c:gw()
  832. (undo_begin)
  833. (command "layer" "m" "TK" "c" "7" "" "")
  834. (setq p1 (getpoint "\n 输入第1个点:"))
  835. (setq p2 (getpoint "\n 输入第2个点:"))
  836. (setq p3 (getpoint "\n 输入第3个点:"))
  837. (setq p4 (getpoint "\n 输入第4个点:"))
  838. (setq p1x (car p1))
  839. (setq p1y (cadr p1))
  840. (setq p2x (car p2))
  841. (setq p2y (cadr p2))
  842. (setq p3x (car p3))
  843. (setq p3y (cadr p3))
  844. (setq p4x (car p4))
  845. (setq p4y (cadr p4))
  846. (setq pxa (* 200 (fix (/ (max p1x p2x p3x p4x) 200))))
  847. (setq pxi (+ 200 (* 200 (fix (/ (min p1x p2x p3x p4x) 200)))))
  848. (setq pya (* 200 (fix (/ (max p1y p2y p3y p4y) 200))))
  849. (setq pyi (+ 200 (* 200 (fix (/ (min p1y p2y p3y p4y) 200)))))
  850. (setq ps (list pxi pyi 0))
  851. (setq n1 (/ (- pxa pxi) 200))
  852. (setq n2 (/ (- pya pyi) 200))
  853. (setq i 0)
  854. (while ( <= i n1)
  855. (progn
  856. (setq j 0)
  857. (while ( <= j n2)
  858. (progn
  859. (setq ptx (+ pxi (* i 200)))
  860. (setq pty (+ pyi (* j 200)))
  861. (setq pt (list ptx pty 0))
  862. (command "insert" "cs" pt 2 2 0 "")
  863. (setq j (+ 1 j))
  864. (princ "okokok")
  865. )
  866. )
  867. (setq i (+ 1 i))
  868. )
  869. )
  870. (undo_end)
  871. )
  872. (defun c:3D-2D( / i flr ss slen ent ed la cla)
  873. (undo_begin)
  874. (setq flr '((-4 . "<AND")
  875. (0 . "POLYLINE")
  876. (-4 . "<OR") (70 . 8) (70 . 9) (70 . 12) (70 . 13) (-4 . "OR>")
  877. (-4 . "AND>")))
  878. (princ "\n曲线编辑[三维转二维]")
  879. (setq cla (getvar "clayer"))
  880. (setq ss (ssget flr))
  881. (if (/= ss nil)
  882. (progn
  883. (setq slen (sslength ss))
  884. (setq i 0)
  885. (while (< i slen)
  886. (setq ent (ssname ss i))
  887. (setq ed (entget ent))
  888. (setq la (cdr (assoc 8 ed)))
  889. (get-line-list ent)
  890. (entdel ent)
  891. (command "layer" "m" la "")
  892. (Draw_Pln_lt line-list)
  893. (setq i (+ 1 i))
  894. )
  895. ))
  896. (command "layer" "m" cla "")
  897. (setvar "plinewid" 0)
  898. (undo_end)
  899. )
  900. (defun Draw_Pln_lt(Plt / i pf len pto)
  901. (if (/= Plt nil)
  902. (progn
  903. (setq i 0)
  904. (setq pf (nth i Plt))
  905. (setq len (length Plt))
  906. (command "pline" pf)
  907. (setq i 1)
  908. (while (< i len)
  909. (setq pto (nth i Plt))
  910. (command pto)
  911. (setq i (+ 1 i))
  912. )
  913. (command "")
  914. ))
  915. )
  916. ;;;;;;高程点;;;
  917. (defun c:smb()
  918. (undo_begin)
  919. (setq lla (getstring "输入层名:"))
  920. (command "layer" "s" lla "" "")
  921. (setq ss (ssget "x" (list (cons 8 lla))))
  922. (setq len (sslength ss))
  923. (setq i 0)
  924. (while (< i len)
  925. (progn
  926. (setq en (ssname ss i))
  927. (setq et (entget en))
  928. (setq pp (cdr (assoc 0 et)))
  929. (if (= pp "POINT")
  930. (progn
  931. (setq pt (cdr (assoc 10 et)))
  932. (command "erase" en "")
  933. ; (command "DONUT" 0 1 pt "")
  934. (COMMAND "INSERT" "HP" PT 1 1 0)
  935. )
  936. (PROGN
  937. (IF (= PP "INSERT")
  938. (PROGN
  939. (command "erase" en "")
  940. )
  941. )
  942. ))
  943. (setq i (+ 1 i))
  944. )
  945. )
  946. (undo_end)
  947. )
  948. ;;;;替换块;;;;
  949. (defun c:chgsmb1()
  950. (undo_begin)
  951. (if (= wwblc nil) (setq xl 4.0))
  952. (if (= wwblc 500) (setq xl 1.0))
  953. (if (= wwblc 1000) (setq xl 2.0))
  954. (if (= wwblc 2000) (setq xl 4.0))
  955. (print /n)
  956. (setq lla (getstring "输入被替换块层名:"))
  957. (setq dblock (getstring "输入新块名:"))
  958. (setq newlay (getstring "输入替换后新层名:"))
  959. ;(setq xl (getreal "输入比列:"))
  960. (command "layer" "s" lla "")
  961. (setq lla (list '(0 . "insert") (cons 8 lla)))
  962. (setq ss (ssget "x" lla))
  963. (setq len (sslength ss))
  964. (setq i 0)
  965. (while (< i len)
  966. (progn
  967. (print /ni)
  968. (setq en (ssname ss i))
  969. (setq et (entget en))
  970. (setq pp (cdr (assoc 0 et)))
  971. (if (= pp "INSERT")
  972. (progn
  973. (setq pt (cdr (assoc 10 et)))
  974. (command "erase" en "")
  975. (command "layer" "m" newlay "c" "4" "" "")
  976. (command "insert" dblock pt xl xl "" "")
  977. ))
  978. (setq i (+ 1 i))
  979. )
  980. )
  981. (undo_end)
  982. )
  983. ;;;;;;点线;;;
  984. (defun c:dx () ;点线
  985. (setq en (car(entsel "\n请选择线:")));
  986. (setq d1 (getdist "\n点距:"))
  987. (setq rad (getdist "\n点径:"))
  988. (setq ed (entget en))
  989. (setq la (cdr (assoc 8 ed)))
  990. (setq lla (strcat la "_sym"))
  991. (command "layer" "m" lla "c" "4" "" "")
  992. (setq lt (get-line-list en))
  993. (IF (/= LT NIL)
  994. (PROGN
  995. (setq i 0)
  996. (setq d1 (* d1 (/ wwblc 1000)))
  997. (setq rad (* rad (/ wwblc 1000)))
  998. (setq D D1)
  999. (setq PC (nth i lt))
  1000. (setq i (+ 1 I))
  1001. (setq DC (nth i lt))
  1002. ;;;;;;;;;;;;;;;;;;;;;以下为替换部分
  1003. (WHILE (/= dc nil)
  1004. (setq km (distance pc dc))
  1005. (setq ang (angle pc dc))
  1006. (while (>= km d)
  1007. (setq am (polar pc ang d))
  1008. (command "donut" "0" rad am "")
  1009. (setq km (- km d))
  1010. (setq d d1)
  1011. (setq pc am)
  1012. );endwhile
  1013. (setq d (- d km))
  1014. (setq pc dc)
  1015. ;;;;;;;;;;;;;;;;;;;;;以上为替换部分
  1016. (setq i (+ 1 i))
  1017. (setq DC (nth i lt))
  1018. );endwhile
  1019. ));IF LT IS NULL BLOCK
  1020. ;(command "layer" "f" la "");根据需要选择此行
  1021. );endfunction
  1022. ;;;;;;;;;;;;;;;;;;;;;;解释部分;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  1023. (defun ZuoBiao1 (en) ;提取Z值
  1024. (SETVAR "CMDECHO" 0)
  1025. (setq lt nil)
  1026. (setq D70 (CDR (ASSOC 70 ED)))
  1027. (setq en1 (entnext en))
  1028. (setq ed1 (entget en1))
  1029. (setq pp (cdr (assoc 0 ed1)))
  1030. (if (= pp "VERTEX")
  1031. (progn
  1032. (setq pt1 (assoc 10 ed1))
  1033. (if (/= pt1 nil)
  1034. (progn
  1035. (setq ptx (nth 1 pt1))
  1036. (setq pty (nth 2 pt1))
  1037. (setq ptz (nth 3 pt1))
  1038. (setq pt (list ptx pty ptz))
  1039. );endprogn
  1040. );endif
  1041. (setq lt (cons pt lt))
  1042. (while (/= pp "SEQEND")
  1043. (progn
  1044. (setq en1 (entnext en1))
  1045. (setq ed1 (entget en1))
  1046. (setq pp (cdr (assoc 0 ed1)))
  1047. (setq pt1 (assoc 10 ed1))
  1048. (if (/= pt1 nil)
  1049. (progn
  1050. (setq ptx (nth 1 pt1))
  1051. (setq pty (nth 2 pt1))
  1052. (setq ptz (nth 3 pt1))
  1053. (setq pt (list ptx pty ptz))
  1054. );endprogn
  1055. );endif
  1056. (setq lt (cons pt lt))
  1057. );endprong
  1058. );endwhile
  1059. (setq lt (cdr lt))
  1060. (IF (OR (= D70 1) (= D70 32))
  1061. (PROGN
  1062. (setq LT (CONS (LAST LT) LT))
  1063. );endprogn
  1064. );endif
  1065. (setq lt (reverse lt))
  1066. );endprogn
  1067. (progn
  1068. (prompt "SORRY! THERE IS NOT 3DPOLYLINE IN YOUR LAYER::\n")
  1069. (setq LT NIL)
  1070. (setq KEY (GETSTRING "GO! GO!<Y>:\n"))
  1071. (redraw en 3)
  1072. );endprogn
  1073. );endif
  1074. );endfunction
  1075. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;生成所需符号线
  1076. ;;;;;;
  1077. (defun c:gxk () ;;改变所选线的线宽
  1078. (prompt "\n改变所选线的线宽!")
  1079. (setq en (car (entsel "\n选择需要改线宽的线:")))
  1080. ;(setq sww (getint "\n输入比例(1.(1:500) 2.(1:1000) 3.(1:2000))<3>:"))
  1081. (setq wid (getreal "\n输入新线宽(mm):"))
  1082. (cond
  1083. ((= wwblc nil) (setq sc 2.0))
  1084. ((= wwblc 500) (setq sc 0.5))
  1085. ((= wwblc 1000) (setq sc 1.0))
  1086. ((= wwblc 2000) (setq sc 2.0))
  1087. );endcond
  1088. (setq width (* wid sc))
  1089. (command "pedit" en "w" width "")
  1090. ; (setq ed (entget en))
  1091. ; (setq la (cdr (assoc 8 ed)))
  1092. ; (setq lla (strcat la "_sym"))
  1093. ; (command "layer" "m" lla "c" "4" "" "")
  1094. ;
  1095. ; (setq lt (get-line-list en))
  1096. ; (IF (/= LT NIL)
  1097. ; (PROGN
  1098. ; (setq i 0)
  1099. ; (setvar "PLINEWID" width) ;;;
  1100. ; (setq Pt (nth i lt))
  1101. ;;;;;;;;;;;;;;;;;;;;;;以下为替换部分
  1102. ; (command "pline" pt)
  1103. ; (while (/= pt nil)
  1104. ; (setq i (+ 1 i))
  1105. ; (setq pt (nth i lt))
  1106. ; (command pt)
  1107. ; );endwhile
  1108. ; (command "")
  1109. ; );endprogn
  1110. ; );endif
  1111. ;(command "erase" en "")
  1112. ;;;;;;;;;;;;;;;;;;;;;以上为替换部分
  1113. ;(setvar "PLINEWID" 0)
  1114. );endfunction
  1115. ;;;;;;
  1116. (defun c:gxkla () ;;改变所选层的线宽
  1117. (prompt "\n改变所选层的线宽!")
  1118. (setq s (getstring "\n选择需要改线宽的层名:"))
  1119. ;(setq sww (getint "\n输入比例(1.(1:500) 2.(1:1000) 3.(1:2000))<3>:"))
  1120. (setq wid (getreal "\n输入新线宽(mm):"))
  1121. (setq s1 (cons '8 s))
  1122. (setq s2 '(0 . "POLYLINE"))
  1123. (setq s3 (list s1 s2))
  1124. (setq ss (ssget "x" s3))
  1125. (setq n (sslength ss))
  1126. (setq t 0)
  1127. (setq en (ssname ss t))
  1128. ;(setq ed (entget en))
  1129. ;(setq la (cdr (assoc 8 ed)))
  1130. ;(setq lla (strcat la "_sym"))
  1131. ;(command "layer" "m" lla "c" "4" "" "")
  1132. (cond
  1133. ((= wwblc nil) (setq sc 2.0))
  1134. ((= wwblc 500) (setq sc 0.5))
  1135. ((= wwblc 1000) (setq sc 1.0))
  1136. ((= wwblc 2000) (setq sc 2.0))
  1137. );endcond
  1138. (setq width (* wid sc))
  1139. (while (< t n)
  1140. (command "pedit" en "w" width "")
  1141. ; (setq lt (get-line-list en))
  1142. ; (IF (/= LT NIL)
  1143. ; (PROGN
  1144. ; (setq i 0)
  1145. ; (setvar "PLINEWID" width) ;;;
  1146. ; (setq Pt (nth i lt))
  1147. ;;;;;;;;;;;;;;;;;;;;;;以下为替换部分
  1148. ; (command "pline" pt)
  1149. ; (while (/= pt nil)
  1150. ; (setq i (+ 1 i))
  1151. ; (setq pt (nth i lt))
  1152. ; (command pt)
  1153. ; );endwhile
  1154. ; (command "")
  1155. ; );endprogn
  1156. ; );endif
  1157. ;(command "erase" en "")
  1158. ;;;;;;;;;;;;;;;;;;;;;以上为替换部分
  1159. (setq t (+ 1 t))
  1160. (setq en (ssname ss t))
  1161. );endwhile(< t n)
  1162. ;(setvar "PLINEWID" 0)
  1163. );endfunction
  1164. ;;;;;;
  1165. (defun c:443b () ;;不依比例尺的围墙
  1166. (undo_begin)
  1167. (if (= jieshi "1")
  1168. (PROGN
  1169. (setq enss (ssget "x" '((-4 . "<OR")(0 . "POLYLINE")(0 . "LWPOLYLINE")(-4 . "OR>") (8 . "2430"))))
  1170. (if (= enss nil)(PROGN(print "找不到 2430 !")(exit)))
  1171. (setq len (sslength enss))
  1172. (setq t 0)
  1173. (setq en (ssname enss t))
  1174. )
  1175. (PROGN
  1176. (setq en(car (entsel "\n选择基线:")))
  1177. (setq len 1)
  1178. (setq t 0)
  1179. ));endif
  1180. (setq ed (entget en))
  1181. (setq la (cdr (assoc 8 ed)))
  1182. (setq lla (strcat la "_sym"))
  1183. (command "layer" "m" lla "c" "4" "" "")
  1184. (setq width (* 0.0003 wwblc))
  1185. (setq wid_1 (* 0.0006 wwblc))
  1186. (setq hei_1 (* (+ 0.00015 0.0006) wwblc))
  1187. (setq d1 (* 0.01 wwblc))
  1188. (setq d d1)
  1189. (setvar "PLINEWID" width) ;;;
  1190. (while (< t len)
  1191. (setq lt (get-line-list en))
  1192. (IF (/= LT NIL)
  1193. (PROGN
  1194. (setq i 0)
  1195. (setvar "PLINEWID" width)
  1196. (setq Pt (nth i lt))
  1197. (command "pline" pt)
  1198. (while (/= pt nil)
  1199. (setq i (+ 1 i))
  1200. (setq pt (nth i lt))
  1201. (command pt)
  1202. );endwhile
  1203. (command "")
  1204. );endprogn
  1205. );endif
  1206. (setq I 0)
  1207. (setq pc (nth I lt))
  1208. (setq I (+ 1 I))
  1209. (setq dc (nth I lt))
  1210. (WHILE (/= dc nil)
  1211. (setq km (distance pc dc))
  1212. (setq ang (angle pc dc))
  1213. (while (>= km d)
  1214. (setvar "PLINEWID" wid_1)
  1215. (setq am (polar pc ang d))
  1216. (setq an (polar am (+ ang 1.570796) hei_1))
  1217. (command "pline" am an "")
  1218. (setq km (- km d))
  1219. (setq d d1)
  1220. (setq pc am)
  1221. );endwhile
  1222. (setq d (- d km))
  1223. (setq pc dc)
  1224. (setq i (+ 1 i))
  1225. (setq DC (nth i lt))
  1226. );endwhile
  1227. ;;;;;;;;;;;;;;;;;;;;;以上为替换部分
  1228. (setq t (+ 1 t))
  1229. (if (= jieshi "1")(setq en (ssname enss t)))
  1230. );endwhile(< t n)
  1231. (setvar "PLINEWID" 0)
  1232. (command "layer" "f" la "")
  1233. (undo_end)
  1234. );endfunction
  1235. ;;;;;
  1236. (defun c:535 () ;打谷场,球场
  1237. (undo_begin)
  1238. (setvar "cmdecho" 0)
  1239. (if (= jieshi "0")
  1240. (progn
  1241. (SETQ enn '((-4 . "<OR")
  1242. (0 . "POLYLINE")
  1243. (0 . "LWPOLYLINE")
  1244. (-4 . "OR>"))
  1245. )
  1246. (prompt "\n选择基线: ")
  1247. (setq SsSel (ssget enn))
  1248. )
  1249. (progn
  1250. (setq SsSel (ssget "x" '((-4 . "<or") (0 . "POLYLINE") (0 . "LWPOLYLINE")(-4 . "or>")(8 . "3350"))))
  1251. ))
  1252. (setq len (sslength SsSel))
  1253. (setq t 0)
  1254. (setq en (ssname SsSel t))
  1255. (setq ed (entget en))
  1256. (setq la (cdr (assoc 8 ed)))
  1257. (setq lla (strcat la "_sym"))
  1258. (command "layer" "m" lla "c" "4" "" "")
  1259. (while (< t len)
  1260. (setq lt (get-line-list en))
  1261. (IF (/= LT NIL)
  1262. (PROGN
  1263. (setq i 0)
  1264. (setq d1 (* 0.0016 wwblc))
  1265. (setq rad (* 0.0003 wwblc))
  1266. (setq D D1)
  1267. (setq PC (nth i lt))
  1268. (setq i (+ 1 I))
  1269. (setq DC (nth i lt))
  1270. ;;;;;;;;;;;;;;;;;;;;;以下为替换部分
  1271. (WHILE (/= dc nil)
  1272. (setq km (distance pc dc))
  1273. (setq ang (angle pc dc))
  1274. (while (>= km d)
  1275. (setq am (polar pc ang d))
  1276. (command "donut" "0" rad am "")
  1277. (setq km (- km d))
  1278. (setq d d1)
  1279. (setq pc am)
  1280. );endwhile
  1281. (setq d (- d km))
  1282. (setq pc dc)
  1283. ;;;;;;;;;;;;;;;;;;;;;以上为替换部分
  1284. (setq i (+ 1 i))
  1285. (setq dc (nth i lt))
  1286. );endwhile
  1287. ));IF LT IS NULL BLOCK
  1288. (setq t (+ 1 t))
  1289. (setq en (ssname SsSel t))
  1290. );endwhile
  1291. (command "layer" "f" la "");根据需要选择此行
  1292. (setvar "aunits" 0)
  1293. (undo_end)
  1294. );endfunction
  1295. ;;;;;;;;;;;;;改变已跟计曲线及首曲线的线宽
  1296. (defun c:1011a () ;;首曲线
  1297. (setq width (* 0.00015 wwblc))
  1298. (setq ss (ssget "x" '((0 . "POLYLINE") (8 . "8110"))))
  1299. (setq n (sslength ss))
  1300. (setq t 0)
  1301. (setq en (ssname ss t))
  1302. (setq ed (entget en))
  1303. (setq la (cdr (assoc 8 ed)))
  1304. (setq lla (strcat la "_sym"))
  1305. (command "layer" "m" lla "c" "4" "" "")
  1306. (while (< t n)
  1307. (setq lt (ZuoBiao1 en))
  1308. (IF (/= LT NIL)
  1309. (PROGN
  1310. (setq i 0)
  1311. (setvar "PLINEWID" width) ;;;
  1312. (setq Pt (nth i lt))
  1313. ;;;;;;;;;;;;;;;;;;;;;以下为替换部分
  1314. (command "pline" pt)
  1315. (while (/= pt nil)
  1316. (setq i (+ 1 i))
  1317. (setq pt (nth i lt))
  1318. (command pt)
  1319. );endwhile
  1320. (command "")
  1321. );endprogn
  1322. );endif
  1323. ;;;;;;;;;;;;;;;;;;;;;以上为替换部分
  1324. (setq t (+ 1 t))
  1325. (setq en (ssname ss t))
  1326. );endwhile(< t n)
  1327. (setvar "PLINEWID" 0)
  1328. (command "layer" "f" la "" );;根据需要选择此行
  1329. );endfunction
  1330. ;;;
  1331. (defun c:1011b () ;;;;计曲线
  1332. (setq width (* 0.0003 wwblc))
  1333. (setq ss (ssget "x" '((0 . "POLYLINE") (8 . "8120"))))
  1334. (setq n (sslength ss))
  1335. (setq t 0)
  1336. (setq en (ssname ss t))
  1337. (setq ed (entget en))
  1338. (setq la (cdr (assoc 8 ed)))
  1339. (setq lla (strcat la "_sym"))
  1340. (command "layer" "m" lla "c" "4" "" "")
  1341. (while (< t n)
  1342. (setq lt (ZuoBiao1 en))
  1343. (IF (/= LT NIL)
  1344. (PROGN
  1345. (setq i 0)
  1346. (setvar "PLINEWID" width) ;;;
  1347. (setq Pt (nth i lt))
  1348. ;;;;;;;;;;;;;;;;;;;;;以下为替换部分
  1349. (command "pline" pt)
  1350. (while (/= pt nil)
  1351. (setq i (+ 1 i))
  1352. (setq pt (nth i lt))
  1353. (command pt)
  1354. );endwhile
  1355. (command "")
  1356. );endprogn
  1357. );endif
  1358. ;;;;;;;;;;;;;;;;;;;;;以上为替换部分
  1359. (setq t (+ 1 t))
  1360. (setq en (ssname ss t))
  1361. );endwhile(< t n)
  1362. (setvar "PLINEWID" 0)
  1363. (command "layer" "f" la "" );;根据需要选择此行
  1364. );endfunction
  1365. ;;;;;
  1366. (defun c:831 () ;;单线渠831
  1367. (undo_begin)
  1368. (setvar "cmdecho" 0)
  1369. (if (= jieshi "0")
  1370. (progn
  1371. (SETQ enn '((-4 . "<OR")
  1372. (0 . "POLYLINE")
  1373. (0 . "LWPOLYLINE")
  1374. (-4 . "OR>"))
  1375. )
  1376. (prompt "\n选择基线: ")
  1377. (setq SsSel (ssget enn))
  1378. )
  1379. (progn
  1380. (setq SsSel (ssget "x" '((-4 . "<or") (0 . "POLYLINE") (0 . "LWPOLYLINE")(-4 . "or>")(8 . "6310"))))
  1381. ))
  1382. (setq width (* 0.0003 wwblc))
  1383. (setq n (sslength SsSel))
  1384. (setq t 0)
  1385. (setq en (ssname SsSel t))
  1386. (setq ed (entget en))
  1387. (setq la (cdr (assoc 8 ed)))
  1388. (setq lla (strcat la "_sym"))
  1389. (command "layer" "m" lla "c" "4" "" "")
  1390. (while (< t n)
  1391. (setq lt (get-line-list en))
  1392. (IF (/= LT NIL)
  1393. (PROGN
  1394. (setq i 0)
  1395. (setvar "PLINEWID" width) ;;;
  1396. (setq Pt (nth i lt))
  1397. ;;;;;;;;;;;;;;;;;;;;;以下为替换部分
  1398. (command "pline" pt)
  1399. (while (/= pt nil)
  1400. (setq i (+ 1 i))
  1401. (setq pt (nth i lt))
  1402. (command pt)
  1403. );endwhile
  1404. (command "")
  1405. );endprogn
  1406. );endif
  1407. ;;;;;;;;;;;;;;;;;;;;;以上为替换部分
  1408. (setq t (+ 1 t))
  1409. (setq en (ssname SsSel t))
  1410. );endwhile
  1411. (setvar "PLINEWID" 0)
  1412. (command "layer" "f" la "" );;根据需要选择此行
  1413. (undo_end)
  1414. );endfunction
  1415. ;;;;;;
  1416. (defun c:gc ();高程点及注记
  1417. (setvar "cmdecho" 0)
  1418. (setvar "dimzin" 2)
  1419. (setq n 1);注记小数位
  1420. (setq dia (* 0.0004 wwblc))
  1421. (setq hei_word (* 0.002 wwblc))
  1422. (setq jiaju (* 0.0015 wwblc))
  1423. (command "style" "gcd" "黑体" "" 0.8 "" "" "")
  1424. (while
  1425. (setq dot2d (getpoint "\n输入高程点位置:"))
  1426. (setq dott (getpoint "\n输入注记起点:"))
  1427. ;(setq dott (polar dot2d 0 jiaju))
  1428. ;(setq dott (polar dott -90 (/ hei_word 2.0)))
  1429. (setq dotz (getreal "\n输入高程值:"))
  1430. (setq dot (list (car dot2d) (car (cdr dot2d)) dotz))
  1431. (command "layer" "m" "8310" "" "")
  1432. (command "insert" "hp" dot "" "" "")
  1433. (setq dottext (list (car dott) (car (cdr dott)) dotz))
  1434. ;(setq dottext dott)
  1435. (setq zj (rtos dotz 2 1))
  1436. (command "text" dottext hei_word "0" zj)
  1437. (command "layer" "s" "0" "")
  1438. ))
  1439. ;;;;;;
  1440. (defun c:Bg ();比高点及注记
  1441. (setvar "cmdecho" 0)
  1442. (setvar "dimzin" 2)
  1443. (setq n 1);注记小数位
  1444. (setq dia (* 0.0004 wwblc))
  1445. (setq hei_word (* 0.002 wwblc))
  1446. (setq jiaju (* 0.0015 wwblc))
  1447. (command "style" "gcd" "黑体" "" 0.8 "" "" "")
  1448. (while
  1449. (setq dot2d (getpoint "\n输入比高点位置:"))
  1450. (setq dott (getpoint "\n输入注记起点:"))
  1451. ;(setq dott (polar dot2d 0 jiaju))
  1452. ;(setq dott (polar dott -90 (/ hei_word 2.0)))
  1453. (setq dotz (getreal "\n输入高程值:"))
  1454. (setq dot (list (car dot2d) (car (cdr dot2d)) dotz))
  1455. (command "layer" "m" "8340" "" "")
  1456. (command "insert" "hp" dot "" "" "")
  1457. (setq dottext (list (car dott) (car (cdr dott)) dotz))
  1458. ;(setq dottext dott)
  1459. (setq zj (rtos dotz 2 1))
  1460. (command "text" dottext hei_word "0" zj)
  1461. ))
  1462. ;;;;;;;;;;
  1463. (defun jqx (endln / ename etype elist);跟踪后直接生成计曲线
  1464. (setq width (* 0.0003 2000))
  1465. (setq ename (car endln))
  1466. (if ename
  1467. (setq elist (entget ename))
  1468. (princ "\nNo entity found ")
  1469. );end if ename
  1470. (if elist
  1471. (progn
  1472. (setq etype (cdr (assoc 0 elist)))
  1473. (if ( = etype "POLYLINE")
  1474. (command "._pedit" ename "w" width "")
  1475. (princ "\nEntity is not a polyline ")
  1476. );end if etype ends the if statement
  1477. );end progn
  1478. );end if elist
  1479. );end of function
  1480. ;;;;;;;;;;
  1481. (defun sqx (endln / ename etype elist);跟踪后直接生成首曲线
  1482. (setq width (* 0.00015 2000))
  1483. (setq ename (car endln))
  1484. (if ename
  1485. (setq elist (entget ename))
  1486. (princ "\nNo entity found ")
  1487. );end if ename
  1488. (if elist
  1489. (progn
  1490. (setq etype (cdr (assoc 0 elist)))
  1491. (if ( = etype "POLYLINE")
  1492. (command "._pedit" ename "w" width "")
  1493. (princ "\nEntity is not a polyline ")
  1494. );end if etype ends the if statement
  1495. );end progn
  1496. );end if elist
  1497. );end of function
  1498. (defun c:644 () ;内部道路644:虚线--实线1,空格1,线宽0.15
  1499. (undo_begin)
  1500. (setvar "cmdecho" 0)
  1501. (if (= jieshi "0")
  1502. (progn
  1503. (SETQ enn '((-4 . "<OR")
  1504. (0 . "POLYLINE")
  1505. (0 . "LWPOLYLINE")
  1506. (-4 . "OR>"))
  1507. )
  1508. (prompt "\n选择基线: ")
  1509. (setq SsSel (ssget enn))
  1510. )
  1511. (progn
  1512. (setq SsSel (ssget "x" '((-4 . "<or") (0 . "POLYLINE") (0 . "LWPOLYLINE")(-4 . "or>")(8 . "4440"))))
  1513. ))
  1514. (setq len (sslength SsSel))
  1515. (setq t 0)
  1516. (setq en (ssname SsSel t))
  1517. (setq ed (entget en))
  1518. (setq la (cdr (assoc 8 ed)))
  1519. (setq lla (strcat la "_sym"))
  1520. (command "layer" "m" lla "c" "4" "" "")
  1521. (while (< t len)
  1522. (setq lt (get-line-list en))
  1523. (IF (/= LT NIL)
  1524. (PROGN
  1525. (setq i 0)
  1526. (setq d1 (* 0.001 wwblc))
  1527. (setq d2 (* 0.001 wwblc))
  1528. ;(setq width (* 0.00015 wwblc)) ;;;注意线宽
  1529. ;(setvar "PLINEWID" width) ;;;
  1530. (setvar "PLINEWID" 0)
  1531. (setq D D1)
  1532. (setq PC (nth i lt))
  1533. (setq i (+ 1 I))
  1534. (setq DC (nth i lt))
  1535. ;;;;;;;;;;;;;;;;;;;;;以下为替换部分
  1536. (setq kk 1)
  1537. (WHILE (/= dc nil)
  1538. (setq km (distance pc dc))
  1539. (setq ang (angle pc dc))
  1540. (while (>= km d)
  1541. (setq am (polar pc ang d))
  1542. (if (= kk 1)
  1543. (progn(command "pline" pc am ""))
  1544. );endif
  1545. (setq km (- km d))
  1546. (if (= kk 1)
  1547. (progn(setq kk 2)
  1548. (setq d d2));else
  1549. (progn(setq kk 1)
  1550. (setq d d1));endprogn
  1551. );endif
  1552. (setq pc am)
  1553. );endwhile
  1554. (if (= kk 1)
  1555. (progn(command "pline" pc dc ""))
  1556. );endif
  1557. (setq d (- d km))
  1558. (setq pc dc)
  1559. ;;;;;;;;;;;;;;;;;;;;;以上为替换部分
  1560. (setq i (+ 1 i))
  1561. (setq DC (nth i lt))
  1562. );endwhile
  1563. ));IF LT IS NULL BLOCK
  1564. (setq t (+ 1 t))
  1565. (setq en (ssname SsSel t))
  1566. );endwhile
  1567. (setvar "PLINEWID" 0)
  1568. (command "layer" "f" la "" );根据需要选择此行
  1569. (undo_end)
  1570. );endfunction
  1571. ;;;;;;;;;;
  1572. (defun c:414 () ;破坏房屋414,廊房:虚线--实线2,空格1,线宽0.15
  1573. (undo_begin)
  1574. (if (= jieshi "1")
  1575. (PROGN
  1576. (setq ss (ssget "x" '((-4 . "<OR")(0 . "POLYLINE")(0 . "LWPOLYLINE")(-4 . "OR>") (8 . "2140"))))
  1577. (if (= ss nil)(PROGN(print "找不到 2140 !")(exit)))
  1578. (setq len (sslength ss))
  1579. (setq t 0)
  1580. (setq en (ssname ss t))
  1581. )
  1582. (PROGN
  1583. (setq en(car (entsel "\n选择基线:")))
  1584. (setq len 1)
  1585. (setq t 0)
  1586. ));endif
  1587. (setq ed (entget en))
  1588. (setq la (cdr (assoc 8 ed)))
  1589. (setq lla (strcat la "_sym"))
  1590. (command "layer" "m" lla "c" "4" "" "")
  1591. (while (< t len)
  1592. (setq lt (get-line-list en))
  1593. (IF (/= LT NIL)
  1594. (PROGN
  1595. (setq i 0)
  1596. (setq d1 (* 0.002 2000));;注意这两行
  1597. (setq d2 (* 0.001 2000));;
  1598. ;(setq width (* 0.00015 wwblc)) ;;;注意线宽
  1599. ;(setvar "PLINEWID" width);;;
  1600. (setvar "PLINEWID" 0)
  1601. (setq D D1)
  1602. (setq PC (nth i lt))
  1603. (setq i (+ 1 I))
  1604. (setq DC (nth i lt))
  1605. ;;;;;;;;;;;;;;;;;;;;;以下为替换部分
  1606. (setq kk 1)
  1607. (WHILE (/= dc nil)
  1608. (setq km (distance pc dc))
  1609. (setq ang (angle pc dc))
  1610. (while (>= km d)
  1611. (setq am (polar pc ang d))
  1612. (if (= kk 1)
  1613. (progn(command "pline" pc am ""))
  1614. );endif
  1615. (setq km (- km d))
  1616. (if (= kk 1)
  1617. (progn(setq kk 2)
  1618. (setq d d2))
  1619. (progn(setq kk 1)
  1620. (setq d d1));endprogn
  1621. );endif
  1622. (setq pc am)
  1623. );endwhile
  1624. (if (= kk 1)
  1625. (progn(command "pline" pc dc ""))
  1626. );endif
  1627. (setq d (- d km))
  1628. (setq pc dc)
  1629. ;;;;;;;;;;;;;;;;;;;;;以上为替换部分
  1630. (setq i (+ 1 i))
  1631. (setq DC (nth i lt))
  1632. );endwhile
  1633. ));IF LT IS NULL BLOCK
  1634. (setq t (+ 1 t))
  1635. (if (= jieshi "1")(setq en (ssname ss t)))
  1636. );endwhile
  1637. (setvar "PLINEWID" 0)
  1638. (command "layer" "f" la "");根据需要选择此行
  1639. (undo_end)
  1640. );endfunction
  1641. ;;;;;
  1642. (defun c:811b()
  1643. (if (= jieshi "0")
  1644. (progn
  1645. (SETQ enn '((-4 . "<OR")
  1646. (0 . "POLYLINE")
  1647. (0 . "LWPOLYLINE")
  1648. (-4 . "OR>"))
  1649. )
  1650. (prompt "\n选择基线: ")
  1651. (setq SsSel (ssget enn))
  1652. )
  1653. (progn
  1654. (setq SsSel (ssget "x" '((-4 . "<or") (0 . "POLYLINE") (0 . "LWPOLYLINE")(-4 . "or>")(8 . "6113"))))
  1655. ))
  1656. (if (/= sssel nil)(xsh SsSel)(print "没有找到 6113 !"))
  1657. )
  1658. (defun c:812 ()
  1659. (if (= jieshi "0")
  1660. (progn
  1661. (SETQ enn '((-4 . "<OR")
  1662. (0 . "POLYLINE")
  1663. (0 . "LWPOLYLINE")
  1664. (-4 . "OR>"))
  1665. )
  1666. (prompt "\n选择基线: ")
  1667. (setq SsSel (ssget enn))
  1668. )
  1669. (progn
  1670. (setq SsSel (ssget "x" '((-4 . "<or") (0 . "POLYLINE") (0 . "LWPOLYLINE")(-4 . "or>")(8 . "6121"))))
  1671. ))
  1672. (if (/= sssel nil)(xsh SsSel)(print "没有找到 6121 !"))
  1673. )
  1674. (defun xsh(SsSel);时令河,高水界:虚线--实线3,空格1,线宽0.15
  1675. (undo_begin)
  1676. (setvar "cmdecho" 0)
  1677. (setq len (sslength SsSel))
  1678. (setq t 0)
  1679. (setq en (ssname SsSel t))
  1680. (setq ed (entget en))
  1681. (setq la (cdr (assoc 8 ed)))
  1682. (setq lla (strcat la "_sym"))
  1683. (command "layer" "m" lla "c" "4" "" "")
  1684. (while (< t len)
  1685. (setq lt (get-line-list en))
  1686. (IF (/= LT NIL)
  1687. (PROGN
  1688. (setq i 0)
  1689. (setq d1 (* 0.003 wwblc))
  1690. (setq d2 (* 0.001 wwblc))
  1691. ;(setq width (* 0.00015 wwblc)) ;;;注意线宽
  1692. ;(setvar "PLINEWID" width);;;
  1693. (setvar "PLINEWID" 0)
  1694. (setq D D1)
  1695. (setq PC (nth i lt))
  1696. (setq i (+ 1 I))
  1697. (setq DC (nth i lt))
  1698. ;;;;;;;;;;;;;;;;;;;;;以下为替换部分
  1699. (setq kk 1)
  1700. (WHILE (/= dc nil)
  1701. (setq km (distance pc dc))
  1702. (setq ang (angle pc dc))
  1703. (while (>= km d)
  1704. (setq am (polar pc ang d))
  1705. (if (= kk 1)
  1706. (progn(command "pline" pc am ""))
  1707. );endif
  1708. (setq km (- km d))
  1709. (if (= kk 1)
  1710. (progn(setq kk 2)
  1711. (setq d d2))
  1712. (progn(setq kk 1)
  1713. (setq d d1));endprogn
  1714. );endif
  1715. (setq pc am)
  1716. );endwhile
  1717. (if (= kk 1)
  1718. (progn(command "pline" pc dc ""))
  1719. );endif
  1720. (setq d (- d km))
  1721. (setq pc dc)
  1722. ;;;;;;;;;;;;;;;;;;;;;以上为替换部分
  1723. (setq i (+ 1 i))
  1724. (setq DC (nth i lt))
  1725. );endwhile
  1726. ));IF LT IS NULL BLOCK
  1727. (setq t (+ 1 t))
  1728. (setq en (ssname SsSel t))
  1729. );endwhile
  1730. (setvar "PLINEWID" 0)
  1731. (command "layer" "f" la "");根据需要选择此行
  1732. (undo_end)
  1733. );endfunction
  1734. ;;;;;;
  1735. (defun c:642a () ;依比例的乡村路642a--虚线--实线4,空格1,线宽0.2
  1736. (undo_begin)
  1737. (setq en (car(entsel "请选择虚线边:")));绘虚线边
  1738. (setq ed (entget en))
  1739. (setq la (cdr (assoc 8 ed)))
  1740. (setq lla (strcat la "_sym"))
  1741. (command "layer" "m" lla "c" "4" "" "")
  1742. (setq lt (get-line-list en))
  1743. (IF (/= LT NIL)
  1744. (PROGN
  1745. (setq i 0)
  1746. (setq d1 (* 0.004 wwblc))
  1747. (setq d2 (* 0.001 wwblc))
  1748. (setq width (* 0.0002 wwblc)) ;;;注意线宽
  1749. (setvar "PLINEWID" width);;;
  1750. (setq D D1)
  1751. (setq PC (nth i lt))
  1752. (setq i (+ 1 I))
  1753. (setq DC (nth i lt))
  1754. ;;;;;;;;;;;;;;;;;;;;;以下为替换部分
  1755. (setq kk 1)
  1756. (WHILE (/= dc nil)
  1757. (setq km (distance pc dc))
  1758. (setq ang (angle pc dc))
  1759. (while (>= km d)
  1760. (setq am (polar pc ang d))
  1761. (if (= kk 1)
  1762. (progn(command "pline" pc am ""))
  1763. );endif
  1764. (setq km (- km d))
  1765. (if (= kk 1)
  1766. (progn(setq kk 2)
  1767. (setq d d2))
  1768. (progn(setq kk 1)
  1769. (setq d d1));endprogn
  1770. );endif
  1771. (setq pc am)
  1772. );endwhile
  1773. (if (= kk 1)
  1774. (progn(command "pline" pc dc ""))
  1775. );endif
  1776. (setq d (- d km))
  1777. (setq pc dc)
  1778. ;;;;;;;;;;;;;;;;;;;;;以上为替换部分
  1779. (setq i (+ 1 i))
  1780. (setq DC (nth i lt))
  1781. );endwhile
  1782. ));IF LT IS NULL BLOCK
  1783. (setq en (car (entsel "\n请选择实线边:")));绘实线边
  1784. (setq ed (entget en))
  1785. (setq la (cdr (assoc 8 ed)))
  1786. (setq lla (strcat la "_sym"))
  1787. (command "layer" "m" lla "c" "4" "" "")
  1788. (setq lt (get-line-list en))
  1789. (IF (/= LT NIL)
  1790. (PROGN
  1791. (setq i 0)
  1792. (setvar "PLINEWID" width) ;;;
  1793. (setq Pt (nth i lt))
  1794. ;;;;;;;;;;;;;;;;;;;;;以下为替换部分
  1795. (command "pline" pt)
  1796. (while (/= pt nil)
  1797. (setq i (+ 1 i))
  1798. (setq pt (nth i lt))
  1799. (command pt)
  1800. );endwhile
  1801. (command "")
  1802. );endprogn
  1803. );endif
  1804. ;;;;;;;;;;;;;;;;;;;;;以上为替换部分
  1805. (setvar "PLINEWID" 0)
  1806. ;(command "layer" "f" la "" );;根据需要选择此行
  1807. (undo_end)
  1808. );endfunction
  1809. ;;;;;;
  1810. (defun c:642b ();乡村路642b:不依比例--虚线--实线8,空格2,线宽0.3
  1811. (undo_begin)
  1812. (setvar "cmdecho" 0)
  1813. (if (= jieshi "0")
  1814. (progn
  1815. (SETQ enn '((-4 . "<OR")
  1816. (0 . "POLYLINE")
  1817. (0 . "LWPOLYLINE")
  1818. (-4 . "OR>"))
  1819. )
  1820. (prompt "\n选择基线: ")
  1821. (setq SsSel (ssget enn))
  1822. )
  1823. (progn
  1824. (setq SsSel (ssget "x" '((-4 . "<or") (0 . "POLYLINE") (0 . "LWPOLYLINE")(-4 . "or>")(8 . "4422"))))
  1825. ))
  1826. (setq len (sslength SsSel))
  1827. (setq t 0)
  1828. (setq en (ssname SsSel t))
  1829. (setq ed (entget en))
  1830. (setq la (cdr (assoc 8 ed)))
  1831. (setq lla (strcat la "_sym"))
  1832. (command "layer" "m" lla "c" "4" "" "")
  1833. (while (< t len)
  1834. (setq lt (get-line-list en))
  1835. (IF (/= LT NIL)
  1836. (PROGN
  1837. (setq i 0)
  1838. (setq d1 (* 0.008 wwblc))
  1839. (setq d2 (* 0.002 wwblc))
  1840. (setq width (* 0.0003 wwblc)) ;;;注意线宽
  1841. (setvar "PLINEWID" width);;;
  1842. (setq D D1)
  1843. (setq PC (nth i lt))
  1844. (setq i (+ 1 I))
  1845. (setq DC (nth i lt))
  1846. ;;;;;;;;;;;;;;;;;;;;;以下为替换部分
  1847. (setq kk 1)
  1848. (WHILE (/= dc nil)
  1849. (setq km (distance pc dc))
  1850. (setq ang (angle pc dc))
  1851. (while (>= km d)
  1852. (setq am (polar pc ang d))
  1853. (if (= kk 1)
  1854. (progn(command "pline" pc am ""))
  1855. );endif
  1856. (setq km (- km d))
  1857. (if (= kk 1)
  1858. (progn(setq kk 2)
  1859. (setq d d2))
  1860. (progn(setq kk 1)
  1861. (setq d d1));endprogn
  1862. );endif
  1863. (setq pc am)
  1864. );endwhile
  1865. (if (= kk 1)
  1866. (progn(command "pline" pc dc ""))
  1867. );endif
  1868. (setq d (- d km))
  1869. (setq pc dc)
  1870. ;;;;;;;;;;;;;;;;;;;;;以上为替换部分
  1871. (setq i (+ 1 i))
  1872. (setq DC (nth i lt))
  1873. );endwhile
  1874. ));IF LT IS NULL BLOCK
  1875. (setq t (+ 1 t))
  1876. (setq en (ssname SsSel t))
  1877. );endwhile
  1878. (setvar "PLINEWID" 0)
  1879. (command "layer" "f" la "");根据需要选择此行
  1880. (undo_end)
  1881. );endfunction
  1882. ;;;;;;
  1883. (defun c:643 () ;小路643:虚线--实线4,空格1,线宽0.3
  1884. (undo_begin)
  1885. (setvar "cmdecho" 0)
  1886. (if (= jieshi "0")
  1887. (progn
  1888. (SETQ enn '((-4 . "<OR")
  1889. (0 . "POLYLINE")
  1890. (0 . "LWPOLYLINE")
  1891. (-4 . "OR>"))
  1892. )
  1893. (prompt "\n选择基线: ")
  1894. (setq SsSel (ssget enn))
  1895. )
  1896. (progn
  1897. (setq SsSel (ssget "x" '((-4 . "<or") (0 . "POLYLINE") (0 . "LWPOLYLINE")(-4 . "or>")(8 . "4430"))))
  1898. ))
  1899. (setq len (sslength SsSel))
  1900. (setq t 0)
  1901. (setq en (ssname SsSel t))
  1902. (setq ed (entget en))
  1903. (setq la (cdr (assoc 8 ed)))
  1904. (setq lla (strcat la "_sym"))
  1905. (command "layer" "m" lla "c" "4" "" "")
  1906. (while (< t len)
  1907. (setq lt (get-line-list en))
  1908. (IF (/= LT NIL)
  1909. (PROGN
  1910. (setq i 0)
  1911. (setq d1 (* 0.004 wwblc))
  1912. (setq d2 (* 0.001 wwblc))
  1913. (setq width (* 0.0003 wwblc)) ;;;注意线宽
  1914. (setvar "PLINEWID" width);;;
  1915. (setq D D1)
  1916. (setq PC (nth i lt))
  1917. (setq i (+ 1 I))
  1918. (setq DC (nth i lt))
  1919. ;;;;;;;;;;;;;;;;;;;;;以下为替换部分
  1920. (setq kk 1)
  1921. (WHILE (/= dc nil)
  1922. (setq km (distance pc dc))
  1923. (setq ang (angle pc dc))
  1924. (while (>= km d)
  1925. (setq am (polar pc ang d))
  1926. (if (= kk 1)
  1927. (progn(command "pline" pc am ""))
  1928. );endif
  1929. (setq km (- km d))
  1930. (if (= kk 1)
  1931. (progn(setq kk 2)
  1932. (setq d d2))
  1933. (progn(setq kk 1)
  1934. (setq d d1));endprogn
  1935. );endif
  1936. (setq pc am)
  1937. );endwhile
  1938. (if (= kk 1)
  1939. (progn(command "pline" pc dc ""))
  1940. );endif
  1941. (setq d (- d km))
  1942. (setq pc dc)
  1943. ;;;;;;;;;;;;;;;;;;;;;以上为替换部分
  1944. (setq i (+ 1 i))
  1945. (setq DC (nth i lt))
  1946. );endwhile
  1947. ));IF LT IS NULL BLOCK
  1948. (setq t (+ 1 t))
  1949. (setq en (ssname SsSel t))
  1950. );endwhile
  1951. (setvar "PLINEWID" 0)
  1952. (command "layer" "f" la "");根据需要选择此行
  1953. (undo_end)
  1954. );endfunction
  1955. ;;;;;;
  1956. (defun c:1011c () ;间曲线1011c:虚线--实线6,空格1,线宽0.15
  1957. (undo_begin)
  1958. (setvar "cmdecho" 0)
  1959. (if (= jieshi "0")
  1960. (progn
  1961. (SETQ enn '((-4 . "<OR")
  1962. (0 . "POLYLINE")
  1963. (0 . "LWPOLYLINE")
  1964. (-4 . "OR>"))
  1965. )
  1966. (prompt "\n选择基线: ")
  1967. (setq SsSel (ssget enn))
  1968. )
  1969. (progn
  1970. (setq SsSel (ssget "x" '((-4 . "<or") (0 . "POLYLINE") (0 . "LWPOLYLINE")(-4 . "or>")(8 . "8130"))))
  1971. ))
  1972. (setq len (sslength SsSel))
  1973. (setq t 0)
  1974. (setq en (ssname SsSel t))
  1975. (setq ed (entget en))
  1976. (setq la (cdr (assoc 8 ed)))
  1977. (setq lla (strcat la "_sym"))
  1978. (command "layer" "m" lla "c" "4" "" "")
  1979. (while (< t len)
  1980. (setq lt (ZuoBiao1 en))
  1981. (IF (/= LT NIL)
  1982. (PROGN
  1983. (setq i 0)
  1984. (setq d1 (* 0.006 wwblc))
  1985. (setq d2 (* 0.001 wwblc))
  1986. (setq width 0) ;;;注意线宽
  1987. (setvar "PLINEWID" width);;;
  1988. (setq D D1)
  1989. (setq PC (nth i lt))
  1990. (setq i (+ 1 I))
  1991. (setq DC (nth i lt))
  1992. ;;;;;;;;;;;;;;;;;;;;;以下为替换部分
  1993. (setq kk 1)
  1994. (WHILE (/= dc nil)
  1995. (setq km (distance pc dc))
  1996. (setq ang (angle pc dc))
  1997. (while (>= km d)
  1998. (setq am (polar pc ang d))
  1999. (if (= kk 1)
  2000. (progn(command "pline" pc am ""))
  2001. );endif
  2002. (setq km (- km d))
  2003. (if (= kk 1)
  2004. (progn(setq kk 2)
  2005. (setq d d2));endpron
  2006. (progn(setq kk 1)
  2007. (setq d d1));endprogn
  2008. );endif
  2009. (setq pc am)
  2010. );endwhile
  2011. (if (= kk 1)
  2012. (progn(command "pline" pc dc ""))
  2013. );endif
  2014. (setq d (- d km))
  2015. (setq pc dc)
  2016. ;;;;;;;;;;;;;;;;;;;;;以上为替换部分
  2017. (setq i (+ 1 i))
  2018. (setq DC (nth i lt))
  2019. );endwhile
  2020. ));IF LT IS NULL BLOCK
  2021. (setq t (+ 1 t))
  2022. (setq en (ssname SsSel t))
  2023. );endwhile
  2024. (setvar "PLINEWID" 0)
  2025. (command "layer" "f" la "");根据需要选择此行
  2026. (undo_end)
  2027. );endfunction
  2028. ;;;;;;
  2029. (defun c:641 () ;大车路641:虚线边--实线8,虚线2,线宽0.2
  2030. (undo_begin)
  2031. (setq en (car(entsel "请选择虚线边:")));绘虚线边
  2032. (setq ed (entget en))
  2033. (setq la (cdr (assoc 8 ed)))
  2034. (setq lla (strcat la "_sym"))
  2035. (command "layer" "m" lla "c" "4" "" "")
  2036. (setq lt (get-line-list en))
  2037. (IF (/= LT NIL)
  2038. (PROGN
  2039. (setq i 0)
  2040. (setq d1 (* 0.008 wwblc))
  2041. (setq d2 (* 0.002 wwblc))
  2042. (setq width (* 0.0002 wwblc)) ;;;注意线宽
  2043. (setvar "PLINEWID" width);;;
  2044. (setq D D1)
  2045. (setq PC (nth i lt))
  2046. (setq i (+ 1 I))
  2047. (setq DC (nth i lt))
  2048. ;;;;;;;;;;;;;;;;;;;;;以下为替换部分
  2049. (setq kk 1)
  2050. (WHILE (/= dc nil)
  2051. (setq km (distance pc dc))
  2052. (setq ang (angle pc dc))
  2053. (while (>= km d)
  2054. (setq am (polar pc ang d))
  2055. (if (= kk 1)
  2056. (progn(command "pline" pc am ""))
  2057. );endif
  2058. (setq km (- km d))
  2059. (if (= kk 1)
  2060. (progn(setq kk 2)
  2061. (setq d d2))
  2062. (progn(setq kk 1)
  2063. (setq d d1));endprogn
  2064. );endif
  2065. (setq pc am)
  2066. );endwhile
  2067. (if (= kk 1)
  2068. (progn(command "pline" pc dc ""))
  2069. );endif
  2070. (setq d (- d km))
  2071. (setq pc dc)
  2072. ;;;;;;;;;;;;;;;;;;;;;以上为替换部分
  2073. (setq i (+ 1 i))
  2074. (setq DC (nth i lt))
  2075. );endwhile
  2076. (setq en (car (entsel "\n请选择实线边:")));绘实线边
  2077. (setq ed (entget en))
  2078. (setq la (cdr (assoc 8 ed)))
  2079. (setq lla (strcat la "_sym"))
  2080. (command "layer" "m" lla "c" "4" "" "")
  2081. (setq lt (get-line-list en))
  2082. (IF (/= LT NIL)
  2083. (PROGN
  2084. (setq i 0)
  2085. (setvar "PLINEWID" width) ;;;
  2086. (setq Pt (nth i lt))
  2087. ;;;;;;;;;;;;;;;;;;;;;以下为替换部分
  2088. (command "pline" pt)
  2089. (while (/= pt nil)
  2090. (setq i (+ 1 i))
  2091. (setq pt (nth i lt))
  2092. (command pt)
  2093. );endwhile
  2094. (command "")
  2095. );endprogn
  2096. );endif
  2097. ));IF LT IS NULL BLOCK
  2098. (setvar "PLINEWID" 0)
  2099. ;(command "layer" "f" la "");根据需要选择此行
  2100. (undo_end)
  2101. );endfunction
  2102. ;;;;;;;;;;;;陡崖子程序
  2103. (defun dy (insertp angle)
  2104. (setq ip insertp)
  2105. (setq angl (+ 1.570796 angle))
  2106. (setvar "PLINEWID" 0)
  2107. (setq l1 (* 0.0015 wwblc))
  2108. (setq l2 (* 0.001 wwblc))
  2109. (setq l3 (* 0.0005 wwblc))
  2110. (setq dis (* 0.001 wwblc))
  2111. (setq ip1 (polar ip angl dis)
  2112. ip2 (polar ip angl (* 2 dis))
  2113. ip3 (polar ip angl (* 3 dis))
  2114. ip4 (polar ip angl (* 4 dis))
  2115. );endsetq
  2116. (setq dis1 (polar ip1 (+ (/ (* PI 3.0) 2.0) angl) l1)
  2117. dis2 (polar ip2 (+ (/ (* PI 3.0) 2.0) angl) l2)
  2118. dis3 (polar ip3 (+ (/ (* PI 3.0) 2.0) angl) l3)
  2119. );endsetq
  2120. (command "pline" ip ip4 "")
  2121. (command "pline" ip1 dis1 "")
  2122. (command "pline" ip2 dis2 "")
  2123. (command "pline" ip3 dis3 "")
  2124. );endfunction
  2125. ;;;;;
  2126. (defun c:1033b () ; 石质的陡崖1033b
  2127. (undo_begin)
  2128. (setvar "cmdecho" 0)
  2129. (setvar "aunits" 3)
  2130. (if (= jieshi "0")
  2131. (progn
  2132. (SETQ enn '((-4 . "<OR")
  2133. (0 . "POLYLINE")
  2134. (0 . "LWPOLYLINE")
  2135. (-4 . "OR>"))
  2136. )
  2137. (prompt "\n选择基线: ")
  2138. (setq SsSel (ssget enn))
  2139. )
  2140. (progn
  2141. (setq SsSel (ssget "x" '((-4 . "<or") (0 . "POLYLINE") (0 . "LWPOLYLINE")(-4 . "or>")(8 . "8432"))))
  2142. ))
  2143. (setq len (sslength SsSel))
  2144. (setq t 0)
  2145. (setq en (ssname SsSel t))
  2146. (while (< t len)
  2147. (setq ed (entget en))
  2148. (setq la (cdr (assoc 8 ed)))
  2149. (setq lla (strcat la "_sym"))
  2150. (command "layer" "m" lla "c" "4" "" "")
  2151. (setq lt (get-line-list en))
  2152. (IF (/= LT NIL)
  2153. (PROGN
  2154. (setq i 0)
  2155. (setq d1 (* 0.002 2000))
  2156. (setq S (* 0.001 2000))
  2157. ;(setq width (* 0.00015 wwblc)) ;;;注意线宽
  2158. ;(setvar "PLINEWID" width);;;
  2159. (setvar "PLINEWID" 0)
  2160. (setq d d1)
  2161. (setq PC (nth i lt))
  2162. (setq i (+ 1 I))
  2163. (setq DC (nth i lt))
  2164. ;;;;;;;;;;;;;;;;;;;;;以下为替换部分
  2165. (WHILE (/= dc nil)
  2166. (command "pline" pc dc "")
  2167. (setq km (distance pc dc))
  2168. (setq ang (angle pc dc))
  2169. (while (>= km d)
  2170. (setq am (polar pc ang d))
  2171. (dy am ang)
  2172. (setq km (- km d))
  2173. (setq d d1)
  2174. (setq pc am)
  2175. );endwhile
  2176. (setq d (- d km))
  2177. (setq pc dc)
  2178. ;;;;;;;;;;;;;;;;;;;;;以上为替换部分
  2179. (setq i (+ 1 i))
  2180. (setq DC (nth i lt))
  2181. );endwhile
  2182. ));IF LT IS NULL BLOCK
  2183. (setq t (+ 1 t))
  2184. (setq en (ssname SsSel t))
  2185. );endwhile
  2186. (setvar "aunits" 0)
  2187. (setvar "PLINEWID" 0)
  2188. (command "layer" "f" la "");根据需要选择此行
  2189. (undo_end)
  2190. );endfunction
  2191. ;;;;;
  2192. (defun c:1033a () ; 土质的陡崖1033a
  2193. (undo_begin)
  2194. (setvar "cmdecho" 0)
  2195. (setvar "aunits" 3)
  2196. (if (= jieshi "0")
  2197. (progn
  2198. (SETQ enn '((-4 . "<OR")
  2199. (0 . "POLYLINE")
  2200. (0 . "LWPOLYLINE")
  2201. (-4 . "OR>"))
  2202. )
  2203. (prompt "\n选择基线: ")
  2204. (setq SsSel (ssget enn))
  2205. )
  2206. (progn
  2207. (setq SsSel (ssget "x" '((-4 . "<or") (0 . "POLYLINE") (0 . "LWPOLYLINE")(-4 . "or>")(8 . "8431"))))
  2208. ))
  2209. (setq len (sslength SsSel))
  2210. (setq t 0)
  2211. (if (/= sssel nil)
  2212. (progn
  2213. (while (< t len)
  2214. (setq en (ssname SsSel t))
  2215. (a1033a_a en)
  2216. (setq t (+ t 1))
  2217. )
  2218. ))
  2219. (setvar "aunits" 0)
  2220. (undo_end)
  2221. )
  2222. (defun a1033a_a (en) ;将选定的曲线解释成坎状符号kan
  2223. (setq ed (entget en))
  2224. (setq la (cdr (assoc 8 ed)))
  2225. (setq lla (strcat la "_sym"))
  2226. (command "layer" "m" lla "c" "4" "" "")
  2227. (setq lt (get-line-list en))
  2228. (IF (/= LT NIL)
  2229. (PROGN
  2230. (setq i 0)
  2231. (setq d1 (* 0.002 wwblc))
  2232. (setq S (* 0.001 wwblc))
  2233. ;(setq width (* 0.00015 wwblc)) ;;;注意线宽
  2234. ;(setvar "PLINEWID" width);;;
  2235. ( setvar "PLINEWID" 0)
  2236. (setq d d1)
  2237. (setq PC (nth i lt))
  2238. (setq i (+ 1 I))
  2239. (setq DC (nth i lt))
  2240. ;;;;;;;;;;;;;;;;;;;;;以下为替换部分
  2241. (WHILE (/= dc nil)
  2242. (command "pline" pc dc "")
  2243. (setq km (distance pc dc))
  2244. (setq ang (angle pc dc))
  2245. (while (>= km d)
  2246. (setq am (polar pc ang d))
  2247. (setq an (polar am (+ ang 1.570796) s))
  2248. (command "pline" am an "")
  2249. (setq km (- km d))
  2250. (setq d d1)
  2251. (setq pc am)
  2252. );endwhile
  2253. (setq d (- d km))
  2254. (setq pc dc)
  2255. ;;;;;;;;;;;;;;;;;;;;;以上为替换部分
  2256. (setq i (+ 1 i))
  2257. (setq DC (nth i lt))
  2258. );endwhile
  2259. ));IF LT IS NULL BLOCK
  2260. (setvar "PLINEWID" 0)
  2261. ;(command "layer" "f" la "");根据需要选择此行
  2262. );endfunction
  2263. ;;;;
  2264. (defun c:1161 () ;地类界1161
  2265. (undo_begin)
  2266. (setvar "cmdecho" 0)
  2267. (if (= jieshi "0")
  2268. (progn
  2269. (SETQ enn '((-4 . "<OR")
  2270. (0 . "POLYLINE")
  2271. (0 . "LWPOLYLINE")
  2272. (-4 . "OR>"))
  2273. )
  2274. (prompt "\n选择基线: ")
  2275. (setq SsSel (ssget enn))
  2276. )
  2277. (progn
  2278. (setq SsSel (ssget "x" '((-4 . "<or") (0 . "POLYLINE") (0 . "LWPOLYLINE")(-4 . "or>")(8 . "9610"))))
  2279. ))
  2280. (setq len (sslength SsSel))
  2281. (setq t 0)
  2282. (setq en (ssname SsSel t))
  2283. (setq ed (entget en))
  2284. (setq la (cdr (assoc 8 ed)))
  2285. (setq lla (strcat la "_sym"))
  2286. (command "layer" "m" lla "c" "4" "" "")
  2287. (while (< t len)
  2288. (setq lt (get-line-list en))
  2289. (IF (/= LT NIL)
  2290. (PROGN
  2291. (setq i 0)
  2292. (setq d1 (* 0.0016 wwblc))
  2293. (setq rad (* 0.0003 wwblc))
  2294. (setq D D1)
  2295. (setq PC (nth i lt))
  2296. (setq i (+ 1 I))
  2297. (setq DC (nth i lt))
  2298. ;;;;;;;;;;;;;;;;;;;;;以下为替换部分
  2299. (WHILE (/= dc nil)
  2300. (setq km (distance pc dc))
  2301. (setq ang (angle pc dc))
  2302. (while (>= km d)
  2303. (setq am (polar pc ang d))
  2304. (command "donut" "0" rad am "")
  2305. (setq km (- km d))
  2306. (setq d d1)
  2307. (setq pc am)
  2308. );endwhile
  2309. (setq d (- d km))
  2310. (setq pc dc)
  2311. ;;;;;;;;;;;;;;;;;;;;;以上为替换部分
  2312. (setq i (+ 1 i))
  2313. (setq DC (nth i lt))
  2314. );endwhile
  2315. ));IF LT IS NULL BLOCK
  2316. (setq t (+ 1 t))
  2317. (setq en (ssname SsSel t))
  2318. );endwhile
  2319. (command "layer" "f" la "");根据需要选择此行
  2320. (undo_end)
  2321. );endfunction
  2322. ;;;;;
  2323. (defun c:1042a () ;未加固的陡坎1042a
  2324. (undo_begin)
  2325. (setvar "cmdecho" 0)
  2326. (setvar "aunits" 3)
  2327. (if (= jieshi "0")
  2328. (progn
  2329. (SETQ enn '((-4 . "<OR")
  2330. (0 . "POLYLINE")
  2331. (0 . "LWPOLYLINE")
  2332. (-4 . "OR>"))
  2333. )
  2334. (prompt "\n选择基线: ")
  2335. (setq SsSel (ssget enn))
  2336. )
  2337. (progn
  2338. (setq SsSel (ssget "x" '((-4 . "<or") (0 . "POLYLINE") (0 . "LWPOLYLINE")(-4 . "or>")(8 . "8521"))))
  2339. ))
  2340. (setq len (sslength SsSel))
  2341. (setq t 0)
  2342. (setq en (ssname SsSel t))
  2343. (setq ed (entget en))
  2344. (setq la (cdr (assoc 8 ed)))
  2345. (setq lla (strcat la "_sym"))
  2346. (command "layer" "m" lla "c" "4" "" "")
  2347. (while (< t len)
  2348. (setq lt (get-line-list en))
  2349. (IF (/= LT NIL)
  2350. (PROGN
  2351. (setq i 0)
  2352. (setq d1 (* 0.002 wwblc))
  2353. (setq S (* 0.001 wwblc))
  2354. ( setvar "PLINEWID" 0)
  2355. (setq d d1)
  2356. (setq PC (nth i lt))
  2357. (setq i (+ 1 I))
  2358. (setq DC (nth i lt))
  2359. ;;;;;;;;;;;;;;;;;;;;;以下为替换部分
  2360. (WHILE (/= dc nil)
  2361. (command "pline" pc dc "")
  2362. (setq km (distance pc dc))
  2363. (setq ang (angle pc dc))
  2364. (while (>= km d)
  2365. (setq am (polar pc ang d))
  2366. (setq an (polar am (+ ang 1.570796) s))
  2367. (command "pline" am an "")
  2368. (setq km (- km d))
  2369. (setq d d1)
  2370. (setq pc am)
  2371. );endwhile
  2372. (setq d (- d km))
  2373. (setq pc dc)
  2374. ;;;;;;;;;;;;;;;;;;;;;以上为替换部分
  2375. (setq i (+ 1 i))
  2376. (setq DC (nth i lt))
  2377. );endwhile
  2378. ));IF LT IS NULL BLOCK
  2379. (setq t (+ 1 t))
  2380. (setq en (ssname SsSel t))
  2381. );endwhile
  2382. (setvar "PLINEWID" 0)
  2383. (command "layer" "f" la "");根据需要选择此行
  2384. (setvar "aunits" 0)
  2385. (undo_end)
  2386. );endfunction
  2387. ;;;;;
  2388. (defun c:1042b() ;已加固的陡坎1042b
  2389. (undo_begin)
  2390. (setvar "cmdecho" 0)
  2391. (setvar "aunits" 3)
  2392. (if (= jieshi "0")
  2393. (progn
  2394. (SETQ enn '((-4 . "<OR")
  2395. (0 . "POLYLINE")
  2396. (0 . "LWPOLYLINE")
  2397. (-4 . "OR>"))
  2398. )
  2399. (prompt "\n选择基线: ")
  2400. (setq SsSel (ssget enn))
  2401. )
  2402. (progn
  2403. (setq SsSel (ssget "x" '((-4 . "<or") (0 . "POLYLINE") (0 . "LWPOLYLINE")(-4 . "or>")(8 . "8522"))))
  2404. ))
  2405. (setq len (sslength SsSel))
  2406. (setq t 0)
  2407. (setq en (ssname SsSel t))
  2408. (setq ed (entget en))
  2409. (setq la (cdr (assoc 8 ed)))
  2410. (setq lla (strcat la "_sym"))
  2411. (command "layer" "m" lla "c" "4" "" "")
  2412. (while (< t len)
  2413. (setq lt (get-line-list en))
  2414. (IF (/= LT NIL)
  2415. (PROGN
  2416. (setq i 0)
  2417. (setq d1 (* 0.004 wwblc))
  2418. (setq S (* 0.001 wwblc))
  2419. (setq s1 (* 0.002 wwblc))
  2420. (setq s2 (* 0.001 wwblc))
  2421. (setq rad (* 0.0003 wwblc))
  2422. ;(setq width (* 0.00015 wwblc)) ;;;注意线宽
  2423. ;(setvar "PLINEWID" width);;;
  2424. (setvar "PLINEWID" 0)
  2425. (setq d d1)
  2426. (setq PC (nth i lt))
  2427. (setq i (+ 1 I))
  2428. (setq DC (nth i lt))
  2429. ;;;;;;;;;;;;;;;;;;;;;以下为替换部分
  2430. (WHILE (/= dc nil)
  2431. (command "pline" pc dc "")
  2432. (setq km (distance pc dc))
  2433. (setq ang (angle pc dc))
  2434. (while (>= km d)
  2435. (setq am (polar pc ang d))
  2436. (setq an (polar am (+ ang 1.570796) s))
  2437. (setq am1 (polar am ang s1))
  2438. (setq an1 (polar am1 (+ ang 1.570796) s2))
  2439. (command "pline" am an "")
  2440. (command "donut" "0" rad an1 "")
  2441. (setq km (- km d))
  2442. (setq d d1)
  2443. (setq pc am)
  2444. );endwhile
  2445. (setq d (- d km))
  2446. (setq pc dc)
  2447. ;;;;;;;;;;;;;;;;;;;;;以上为替换部分
  2448. (setq i (+ 1 i))
  2449. (setq DC (nth i lt))
  2450. );endwhile
  2451. ));IF LT IS NULL BLOCK
  2452. (setq t (+ 1 t))
  2453. (setq en (ssname SsSel t))
  2454. );endwhile
  2455. (setvar "PLINEWID" 0)
  2456. (command "layer" "f" la "");根据需要选择此行
  2457. (setvar "aunits" 0)
  2458. (undo_end)
  2459. );endfunction
  2460. ;;;;;
  2461. (defun c:1043() ;梯田坎1043
  2462. (undo_begin)
  2463. (setvar "cmdecho" 0)
  2464. (setvar "aunits" 3)
  2465. (if (= jieshi "0")
  2466. (progn
  2467. (SETQ enn '((-4 . "<OR")
  2468. (0 . "POLYLINE")
  2469. (0 . "LWPOLYLINE")
  2470. (-4 . "OR>"))
  2471. )
  2472. (prompt "\n选择基线: ")
  2473. (setq SsSel (ssget enn))
  2474. )
  2475. (progn
  2476. (setq SsSel (ssget "x" '((-4 . "<or") (0 . "POLYLINE") (0 . "LWPOLYLINE")(-4 . "or>")(8 . "8530"))))
  2477. ))
  2478. (setq len (sslength SsSel))
  2479. (setq t 0)
  2480. (setq en (ssname SsSel t))
  2481. (setq ed (entget en))
  2482. (setq la (cdr (assoc 8 ed)))
  2483. (setq lla (strcat la "_sym"))
  2484. (command "layer" "m" lla "c" "4" "" "")
  2485. (while (< t len)
  2486. (setq lt (get-line-list en))
  2487. (IF (/= LT NIL)
  2488. (PROGN
  2489. (setq i 0)
  2490. (setq d1 (* 0.002 wwblc))
  2491. (setq S (* 0.001 wwblc))
  2492. (setvar "PLINEWID" 0)
  2493. (setq d d1)
  2494. (setq PC (nth i lt))
  2495. (setq i (+ 1 I))
  2496. (setq DC (nth i lt))
  2497. ;;;;;;;;;;;;;;;;;;;;;以下为替换部分
  2498. (WHILE (/= dc nil)
  2499. (command "pline" pc dc "")
  2500. (setq km (distance pc dc))
  2501. (setq ang (angle pc dc))
  2502. (while (>= km d)
  2503. (setq am (polar pc ang d))
  2504. (setq an (polar am (+ ang 1.570796) s))
  2505. (command "pline" am an "")
  2506. (setq km (- km d))
  2507. (setq d d1)
  2508. (setq pc am)
  2509. );endwhile
  2510. (setq d (- d km))
  2511. (setq pc dc)
  2512. ;;;;;;;;;;;;;;;;;;;;;以上为替换部分
  2513. (setq i (+ 1 i))
  2514. (setq DC (nth i lt))
  2515. );endwhile
  2516. ));IF LT IS NULL BLOCK
  2517. (setq t (+ 1 t))
  2518. (setq en (ssname SsSel t))
  2519. );endwhile
  2520. (setvar "PLINEWID" 0)
  2521. (command "layer" "f" la "");根据需要选择此行
  2522. (setvar "aunits" 0)
  2523. (undo_end)
  2524. );endfunction
  2525. (defun c:1035() ;冲沟1035
  2526. (undo_begin)
  2527. (setvar "cmdecho" 0)
  2528. (setvar "aunits" 3)
  2529. (if (= jieshi "0")
  2530. (progn
  2531. (SETQ enn '((-4 . "<OR")
  2532. (0 . "POLYLINE")
  2533. (0 . "LWPOLYLINE")
  2534. (-4 . "OR>"))
  2535. )
  2536. (prompt "\n选择基线: ")
  2537. (setq SsSel (ssget enn))
  2538. )
  2539. (progn
  2540. (setq SsSel (ssget "x" '((-4 . "<or") (0 . "POLYLINE") (0 . "LWPOLYLINE")(-4 . "or>")(8 . "8450"))))
  2541. ))
  2542. (setq len (sslength SsSel))
  2543. (setq t 0)
  2544. (setq en (ssname SsSel t))
  2545. (setq ed (entget en))
  2546. (setq la (cdr (assoc 8 ed)))
  2547. (setq lla (strcat la "_sym"))
  2548. (command "layer" "m" lla "c" "4" "" "")
  2549. (while (< t len)
  2550. (setq lt (get-line-list en))
  2551. (IF (/= LT NIL)
  2552. (PROGN
  2553. (setq i 0)
  2554. (setq d1 (* 0.002 wwblc))
  2555. (setq S (* 0.001 wwblc))
  2556. (setvar "PLINEWID" 0)
  2557. (setq d d1)
  2558. (setq PC (nth i lt))
  2559. (setq i (+ 1 I))
  2560. (setq DC (nth i lt))
  2561. ;;;;;;;;;;;;;;;;;;;;;以下为替换部分
  2562. (WHILE (/= dc nil)
  2563. (command "pline" pc dc "")
  2564. (setq km (distance pc dc))
  2565. (setq ang (angle pc dc))
  2566. (while (>= km d)
  2567. (setq am (polar pc ang d))
  2568. (setq an (polar am (+ ang 1.570796) s))
  2569. (command "pline" am an "")
  2570. (setq km (- km d))
  2571. (setq d d1)
  2572. (setq pc am)
  2573. );endwhile
  2574. (setq d (- d km))
  2575. (setq pc dc)
  2576. ;;;;;;;;;;;;;;;;;;;;;以上为替换部分
  2577. (setq i (+ 1 i))
  2578. (setq DC (nth i lt))
  2579. );endwhile
  2580. ));IF LT IS NULL BLOCK
  2581. (setq t (+ 1 t))
  2582. (setq en (ssname SsSel t))
  2583. );endwhile
  2584. (setvar "PLINEWID" 0)
  2585. (command "layer" "f" la "");根据需要选择此行
  2586. (setvar "aunits" 0)
  2587. (undo_end)
  2588. );endfunction
  2589. ;;;;;
  2590. (defun c:912a() ;省,自治区,直辖市已定界912a
  2591. (setq ss (ssget "x" '((0 . "POLYLINE") (8 . "7130"))))
  2592. (setq len (sslength ss))
  2593. (setq tn 0)
  2594. (setq en (ssname ss tn))
  2595. (setq ed (entget en))
  2596. (setq la (cdr (assoc 8 ed)))
  2597. (setq lla (strcat la "_sym"))
  2598. (command "layer" "m" lla "c" "4" "" "")
  2599. (while (< tn len)
  2600. (setq lt (get-line-list en))
  2601. (IF (/= LT NIL)
  2602. (PROGN
  2603. (setq i 0)
  2604. (setq width (* 0.0006 wwblc)) ;;;注意线宽
  2605. (setvar "PLINEWID" width);;;
  2606. ;(setq d d1)
  2607. (setq PC (nth i lt))
  2608. (setq i (+ 1 I))
  2609. (setq DC (nth i lt))
  2610. ;;;;;;;;;;;;;;;;;;;;;以下为替换部分
  2611. (setq d1 (* 0.006 wwblc))
  2612. (setq d2 (* 0.004 wwblc))
  2613. (setq d d1)
  2614. (setq kk 1)
  2615. (setq t2 (* 0.01 wwblc))
  2616. (setq t1 (* 0.000 wwblc))
  2617. (setq t (* 0.0073 wwblc))
  2618. (setq yy 0)
  2619. (setq g1 t1)
  2620. (setq g2 t2)
  2621. (setq g (* 0.0087 wwblc))
  2622. (setq vv 0)
  2623. (setq SP (nth i lt))
  2624. (setq i (+ 1 I))
  2625. (setq EP (nth i lt))
  2626. (WHILE (/= EP nil)
  2627. (setq ll (distance sp ep))
  2628. (setq aa (angle sp ep))
  2629. (setq pcy sp)
  2630. (while (>= ll d)
  2631. (setq pm (polar pcy aa d))
  2632. (if (= kk 1) (progn (command "pline" pcy pm "")))
  2633. (setq ll (- ll d))
  2634. (if (= kk 1) (progn (setq kk 2) (setq d d2))
  2635. (progn (setq kk 1) (setq d d1))
  2636. )
  2637. (setq pcy pm)
  2638. )
  2639. (if (= kk 1) (progn (command "pline" pcy ep "")))
  2640. (setq d (- d ll))
  2641. (setq ll (distance sp ep))
  2642. (setq pcz sp)
  2643. (while (>= ll t)
  2644. (setq bm (polar pcz aa t))
  2645. (if (= yy 1) (command "DONUT" "0" width bm ""))
  2646. (setq ll (- ll t))
  2647. (if (= yy 1) (progn (setq yy 0) (setq t t2))
  2648. (progn (setq yy 1) (setq t t1))
  2649. )
  2650. (setq pcz bm)
  2651. )
  2652. (if (= yy 1) (progn (command "DONUT" "0" width pcz "")))
  2653. (setq t (- t ll))
  2654. (setq pcx sp)
  2655. (setq ll (distance sp ep))
  2656. (while (>= ll g)
  2657. (setq cm (polar pcx aa g))
  2658. (if (= vv 1) (command "DONUT" "0" width cm ""))
  2659. (setq ll (- ll g))
  2660. (if (= vv 1) (progn (setq vv 0) (setq g g2))
  2661. (progn (setq vv 1) (setq g g1))
  2662. )
  2663. (setq pcx cm)
  2664. )
  2665. (if (= vv 1) (progn (command "DONUT" "0" width pcx "")))
  2666. (setq g (- g ll))
  2667. (setq sp ep)
  2668. ;;;;;;;;;;;;;;;;;;;;;以上为替换部分
  2669. (setq i (+ 1 i))
  2670. (setq EP (nth i lt))
  2671. )
  2672. ));IF LT IS NULL BLOCK
  2673. (setq tn (+ 1 tn))
  2674. (setq en (ssname ss tn))
  2675. )
  2676. (setvar "PLINEWID" 0)
  2677. (command "layer" "f" la "");根据需要选择此行
  2678. )
  2679. ;;;;;
  2680. (defun c:913a() ;自治州、地区、盟、地级市已定界913a
  2681. (setq ss (ssget "x" '((0 . "POLYLINE") (8 . "7140"))))
  2682. (setq len (sslength ss))
  2683. (setq tn 0)
  2684. (setq en (ssname ss tn))
  2685. (setq ed (entget en))
  2686. (setq la (cdr (assoc 8 ed)))
  2687. (setq lla (strcat la "_sym"))
  2688. (command "layer" "m" lla "c" "4" "" "")
  2689. (while (< tn len)
  2690. (setq lt (get-line-list en))
  2691. (IF (/= LT NIL)
  2692. (PROGN
  2693. (setq i 0)
  2694. (setq width (* 0.0004 wwblc)) ;;;注意线宽
  2695. (setvar "PLINEWID" width);;;
  2696. ;(setq d d1)
  2697. (setq PC (nth i lt))
  2698. (setq i (+ 1 I))
  2699. (setq DC (nth i lt))
  2700. ;;;;;;;;;;;;;;;;;;;;;以下为替换部分
  2701. (setq d1 (* 0.006 wwblc))
  2702. (setq d2 (* 0.012 wwblc))
  2703. (setq d d1)
  2704. (setq kk 1)
  2705. (setq t2 (* 0.012 wwblc))
  2706. (setq t1 (* 0.006 wwblc))
  2707. (setq t (* 0.008 wwblc))
  2708. (setq yy 0)
  2709. (setq g1 0.0)
  2710. (setq g2 (* 0.018 wwblc))
  2711. (setq g (* 0.016 wwblc))
  2712. (setq ww (* 0.0004 wwblc))
  2713. (setq vv 0)
  2714. (setq SP (nth i lt))
  2715. (setq i (+ 1 I))
  2716. (setq EP (nth i lt))
  2717. (WHILE (/= EP nil)
  2718. (SETQ ll (distance sp ep))
  2719. (setq aa (angle sp ep))
  2720. (setq pcy sp)
  2721. (while (>= ll d)
  2722. (setq pm (polar pcy aa d))
  2723. (if (= kk 1) (progn (command "pline" pcy "w" ww ww pm "w" 0 0 "")))
  2724. (setq ll (- ll d))
  2725. (if (= kk 1) (progn (setq kk 2) (setq d d2))
  2726. (progn (setq kk 1) (setq d d1))
  2727. )
  2728. (setq pcy pm)
  2729. )
  2730. (if (= kk 1) (progn (command "pline" pcy "w" ww ww ep "w" 0 0 "")))
  2731. (setq d (- d ll))
  2732. (setq ll (distance sp ep))
  2733. (setq pcz sp)
  2734. (while (>= ll t)
  2735. (setq bm (polar pcz aa t))
  2736. (if (= yy 1) (command "pline" pcz "w" ww ww bm "w" 0 0 ""))
  2737. (setq ll (- ll t))
  2738. (if (= yy 1) (progn (setq yy 0) (setq t t2))
  2739. (progn (setq yy 1) (setq t t1))
  2740. )
  2741. (setq pcz bm)
  2742. )
  2743. (if (= yy 1) (progn (command "pline" pcz "w" ww ww ep "w" 0 0 "")))
  2744. (setq t (- t ll))
  2745. (setq pcx sp)
  2746. (setq ll (distance sp ep))
  2747. (while (>= ll g)
  2748. (setq cm (polar pcx aa g))
  2749. (if (= vv 1) (command "donut" 0 width cm ""))
  2750. (setq ll (- ll g))
  2751. (if (= vv 1) (progn (setq vv 0) (setq g g2))
  2752. (progn (setq vv 1) (setq g g1))
  2753. )
  2754. (setq pcx cm)
  2755. )
  2756. (if (= vv 1) (progn (command "donut" 0 width pcx "")))
  2757. (setq g (- g ll))
  2758. (setq sp ep)
  2759. ;;;;;;;;;;;;;;;;;;;;;以上为替换部分
  2760. (setq i (+ 1 i))
  2761. (setq EP (nth i lt))
  2762. )
  2763. ));IF LT IS NULL BLOCK
  2764. (setq tn (+ 1 tn))
  2765. (setq en (ssname ss tn))
  2766. )
  2767. (setvar "PLINEWID" 0)
  2768. (command "layer" "f" la "");根据需要选择此行
  2769. )
  2770. ;;;;;
  2771. (defun c:914a() ;县、自治县、旗、县级市已定界914a
  2772. (setq ss (ssget "x" '((0 . "POLYLINE") (8 . "7150"))))
  2773. (setq len (sslength ss))
  2774. (setq tn 0)
  2775. (setq en (ssname ss tn))
  2776. (setq ed (entget en))
  2777. (setq la (cdr (assoc 8 ed)))
  2778. (setq lla (strcat la "_sym"))
  2779. (command "layer" "m" lla "c" "4" "" "")
  2780. (while (< tn len)
  2781. (setq lt (get-line-list en))
  2782. (IF (/= LT NIL)
  2783. (PROGN
  2784. (setq i 0)
  2785. (setq width (* 0.0003 wwblc)) ;;;注意线宽
  2786. (setvar "PLINEWID" width);;;
  2787. ;(setq d d1)
  2788. (setq PC (nth i lt))
  2789. (setq i (+ 1 I))
  2790. (setq DC (nth i lt))
  2791. ;;;;;;;;;;;;;;;;;;;;;以下为替换部分
  2792. (setq d1 (* 0.006 wwblc))
  2793. (setq d2 (* 0.004 wwblc))
  2794. (setq d d1)
  2795. (setq kk 1)
  2796. (setq t1 (* 0.01 wwblc))
  2797. (setq t2 0.0)
  2798. (setq t (* 0.008 wwblc))
  2799. (setq yy 0)
  2800. (setq SP (nth i lt))
  2801. (setq i (+ 1 I))
  2802. (setq EP (nth i lt))
  2803. (WHILE (/= EP nil)
  2804. (SETQ ll (distance sp ep))
  2805. (setq aa (angle sp ep))
  2806. (setq pcy sp)
  2807. (while (>= ll d)
  2808. (setq am (polar pcy aa d))
  2809. (if (= kk 1) (progn (command "pline" pcy am "")))
  2810. (setq ll (- ll d))
  2811. (if (= kk 1) (progn (setq kk 2) (setq d d2))
  2812. (progn (setq kk 1) (setq d d1))
  2813. )
  2814. (setq pcy am)
  2815. )
  2816. (if (= kk 1) (progn (command "pline" pcy ep "")))
  2817. (setq d (- d ll))
  2818. (setq ll (distance sp ep))
  2819. (while (>= ll t)
  2820. (setq am (polar sp aa t))
  2821. (if (= yy 1) (command "DONUT" "0" WIdth am ""))
  2822. (setq ll (- ll t))
  2823. (if (= yy 1) (progn (setq yy 0) (setq t t1))
  2824. (progn (setq yy 1) (setq t t2))
  2825. )
  2826. (setq sp am)
  2827. )
  2828. (if (= yy 1) (progn (command "DONUT" "0" WIDth sp "")))
  2829. (setq t (- t ll))
  2830. (setq sp ep)
  2831. ;;;;;;;;;;;;;;;;;;;;;以上为替换部分
  2832. (setq i (+ 1 i))
  2833. (setq EP (nth i lt))
  2834. )
  2835. ));IF LT IS NULL BLOCK
  2836. (setq tn (+ 1 tn))
  2837. (setq en (ssname ss tn))
  2838. )
  2839. (setvar "PLINEWID" 0)
  2840. (command "layer" "f" la "");根据需要选择此行
  2841. )
  2842. ;;;;;
  2843. (defun c:915a() ;乡、镇已定界915a
  2844. (setq ss (ssget "x" '((0 . "POLYLINE") (8 . "7160"))))
  2845. (setq len (sslength ss))
  2846. (setq tn 0)
  2847. (setq en (ssname ss tn))
  2848. (setq ed (entget en))
  2849. (setq la (cdr (assoc 8 ed)))
  2850. (setq lla (strcat la "_sym"))
  2851. (command "layer" "m" lla "c" "4" "" "")
  2852. (while (< tn len)
  2853. (setq lt (get-line-list en))
  2854. (IF (/= LT NIL)
  2855. (PROGN
  2856. (setq i 0)
  2857. (setq width (* 0.0002 wwblc)) ;;;注意线宽
  2858. (setvar "PLINEWID" width);;;
  2859. (setq dd 1)
  2860. (setq d (* wwblc 0.006))
  2861. (setq d1 (* wwblc 0.006))
  2862. (setq d2 (* wwblc 0.012))
  2863. (setq tt 0)
  2864. (setq t (* wwblc 0.008))
  2865. (setq t1 (* wwblc 0.006))
  2866. (setq t2 (* wwblc 0.012))
  2867. (setq gg 0)
  2868. (setq g (* wwblc 0.015333))
  2869. (setq g1 0.0)
  2870. (setq g2 (* wwblc 0.018))
  2871. (setq xx 0)
  2872. (setq x (* wwblc 0.016666))
  2873. (setq x1 0.0)
  2874. (setq x2 (* wwblc 0.018))
  2875. (setq sp(nth i lt))
  2876. (setq i (+ 1 I))
  2877. (setq ep (nth i lt))
  2878. (WHILE (/= EP nil)
  2879. (setq ll (distance sp ep))
  2880. (setq aa (angle sp ep))
  2881. (setq pcy sp)
  2882. (while (>= ll d)
  2883. (setq pm (polar pcy aa d))
  2884. (if (= dd 1) (progn (command "pline" pcy pm "")))
  2885. (setq ll (- ll d))
  2886. (if (= dd 1) (progn (setq dd 0) (setq d d2))
  2887. (progn (setq dd 1) (setq d d1))
  2888. );endif
  2889. (setq pcy pm)
  2890. );endwhile
  2891. (if (= dd 1) (progn (command "pline" pcy ep "")))
  2892. (setq d (- d ll))
  2893. (setq ll (distance sp ep))
  2894. (setq pcz sp)
  2895. (while (>= ll t)
  2896. (setq bm (polar pcz aa t))
  2897. (if (= tt 1) (command "pline" pcz bm ""))
  2898. (setq ll (- ll t))
  2899. (if (= tt 1) (progn (setq tt 0) (setq t t2))
  2900. (progn (setq tt 1) (setq t t1))
  2901. );endwhile
  2902. (setq pcz bm)
  2903. )
  2904. (if (= tt 1) (progn (command "pline" pcz ep "")))
  2905. (setq t (- t ll))
  2906. (setq pcx sp)
  2907. (setq ll (distance sp ep))
  2908. (while (>= ll g)
  2909. (setq cm (polar pcx aa g))
  2910. (if (= gg 1) (command "DONUT" "0" WIDth cm ""))
  2911. (setq ll (- ll g))
  2912. (if (= gg 1) (progn (setq gg 0) (setq g g2))
  2913. (progn (setq gg 1) (setq g g1))
  2914. )
  2915. (setq pcx cm)
  2916. )
  2917. (if (= gg 1) (progn (command "DONUT" "0" width pcx "")))
  2918. (setq g (- g ll))
  2919. (setq pcn sp)
  2920. (setq ll (distance sp ep))
  2921. (while (>= ll x)
  2922. (setq dm (polar pcn aa x))
  2923. (if (= xx 1) (command "DONUT" "0" width dm ""))
  2924. (setq ll (- ll x))
  2925. (if (= xx 1) (progn (setq xx 0) (setq x x2))
  2926. (progn (setq xx 1) (setq x x1))
  2927. );endif
  2928. (setq pcn dm)
  2929. );endwhile
  2930. (if (= xx 1) (progn (command "DONUT" "0" width pcn "")))
  2931. (setq x (- x ll))
  2932. (setq sp ep)
  2933. ;;;;;;;;;;;;;;;;;;;;;以上为替换部分
  2934. (setq i (+ 1 i))
  2935. (setq EP (nth i lt))
  2936. )
  2937. ));IF LT IS NULL BLOCK
  2938. (setq tn (+ 1 tn))
  2939. (setq en (ssname ss tn))
  2940. )
  2941. (setvar "PLINEWID" 0)
  2942. (command "layer" "f" la "");根据需要选择此行
  2943. );endfunction
  2944. ;;;;;;;
  2945. (defun c:846a() ;土堤846a
  2946. (undo_begin)
  2947. (setvar "cmdecho" 0)
  2948. (setvar "aunits" 3)
  2949. (if (= jieshi "0")
  2950. (progn
  2951. (SETQ enn '((-4 . "<OR")
  2952. (0 . "POLYLINE")
  2953. (0 . "LWPOLYLINE")
  2954. (-4 . "OR>"))
  2955. )
  2956. (prompt "\n选择基线: ")
  2957. (setq SsSel (ssget enn))
  2958. )
  2959. (progn
  2960. (setq SsSel (ssget "x" '((-4 . "<or") (0 . "POLYLINE") (0 . "LWPOLYLINE")(-4 . "or>")(8 . "6460"))))
  2961. ))
  2962. (setq len (sslength SsSel))
  2963. (setq t 0)
  2964. (setq en (ssname SsSel t))
  2965. (setq ed (entget en))
  2966. (setq la (cdr (assoc 8 ed)))
  2967. (setq lla (strcat la "_sym"))
  2968. (command "layer" "m" lla "c" "4" "" "")
  2969. (while (< t len)
  2970. (setq lt (get-line-list en))
  2971. (IF (/= LT NIL)
  2972. (PROGN
  2973. (setq i 0)
  2974. (setq d1 (* 0.002 2000))
  2975. (setq S (* 0.001 2000))
  2976. ;(setq width (* 0.00015 wwblc)) ;;;注意线宽
  2977. ;(setvar "PLINEWID" width);;;
  2978. (setvar "PLINEWID" 0)
  2979. (setq d d1)
  2980. (setq PC (nth i lt))
  2981. (setq i (+ 1 I))
  2982. (setq DC (nth i lt))
  2983. ;;;;;;;;;;;;;;;;;;;;;以下为替换部分
  2984. (WHILE (/= dc nil)
  2985. (command "pline" pc dc "")
  2986. (setq km (distance pc dc))
  2987. (setq ang (angle pc dc))
  2988. (while (>= km d)
  2989. (setq am (polar pc ang d))
  2990. (setq an (polar am (+ ang 1.570796) s))
  2991. (command "pline" am an "")
  2992. (setq km (- km d))
  2993. (setq d d1)
  2994. (setq pc am)
  2995. );endwhile
  2996. (setq d (- d km))
  2997. (setq pc dc)
  2998. ;;;;;;;;;;;;;;;;;;;;;以上为替换部分
  2999. (setq i (+ 1 i))
  3000. (setq DC (nth i lt))
  3001. );endwhile
  3002. ));IF LT IS NULL BLOCK
  3003. (setq t (+ 1 t))
  3004. (setq en (ssname SsSel t))
  3005. );endwhile
  3006. (setvar "aunits" 0)
  3007. (setvar "PLINEWID" 0)
  3008. (command "layer" "f" la "");根据需要选择此行
  3009. (undo_end)
  3010. );endfunction
  3011. ;;;;;
  3012. (defun c:846b() ;;垅846b
  3013. (undo_begin)
  3014. (setvar "cmdecho" 0)
  3015. (setvar "aunits" 3)
  3016. (if (= jieshi "0")
  3017. (progn
  3018. (SETQ enn '((-4 . "<OR")
  3019. (0 . "POLYLINE")
  3020. (0 . "LWPOLYLINE")
  3021. (-4 . "OR>"))
  3022. )
  3023. (prompt "\n选择基线: ")
  3024. (setq SsSel (ssget enn))
  3025. )
  3026. (progn
  3027. (setq SsSel (ssget "x" '((-4 . "<or") (0 . "POLYLINE") (0 . "LWPOLYLINE")(-4 . "or>")(8 . "6461"))))
  3028. ))
  3029. (setq len (sslength SsSel))
  3030. (setq t 0)
  3031. (setq en (ssname SsSel t))
  3032. (setq ed (entget en))
  3033. (setq la (cdr (assoc 8 ed)))
  3034. (setq lla (strcat la "_sym"))
  3035. (command "layer" "m" lla "c" "4" "" "")
  3036. (while (< t len)
  3037. (setq lt (get-line-list en))
  3038. (IF (/= LT NIL)
  3039. (PROGN
  3040. (setq i 0)
  3041. (setq d1 (* 0.002 2000));;注意这两行
  3042. (setq d2 (* 0.0006 2000));;
  3043. (setq width (* 0.0002 wwblc)) ;;;注意线宽
  3044. (setvar "PLINEWID" width) ;;;
  3045. (setq D D1)
  3046. (setq PC (nth i lt))
  3047. (setq i (+ 1 I))
  3048. (setq DC (nth i lt))
  3049. ;;;;;;;;;;;;;;;;;;;;;以下为替换部分
  3050. (WHILE (/= dc nil)
  3051. (command "pline" pc dc "")
  3052. (setq km (distance pc dc))
  3053. (setq ang (angle pc dc))
  3054. (while (>= km d)
  3055. (setq am (polar pc ang d))
  3056. (setq an (polar am (+ ang 1.570796) d2))
  3057. (setq al (polar am (- ang 1.570796) d2))
  3058. (command "pline" an al "")
  3059. (setq km (- km d))
  3060. (setq d d1)
  3061. (setq pc am)
  3062. );endwhile
  3063. (setq d (- d km))
  3064. (setq pc dc)
  3065. ;;;;;;;;;;;;;;;;;;;;;以上为替换部分
  3066. (setq i (+ 1 i))
  3067. (setq DC (nth i lt))
  3068. );endwhile
  3069. ));IF LT IS NULL BLOCK
  3070. (setq t (+ 1 t))
  3071. (setq en (ssname SsSel t))
  3072. );endwhile
  3073. (setvar "PLINEWID" 0)
  3074. (command "layer" "f" la "");;根据需要选择此行
  3075. (setvar "aunits" 0)
  3076. (undo_end)
  3077. );endfunction
  3078. ;;;;;;
  3079. (defun c:733() ;地下管道733:虚线--实线4,空格1,线宽0.15
  3080. (undo_begin)
  3081. (setvar "cmdecho" 0)
  3082. (if (= jieshi "0")
  3083. (progn
  3084. (SETQ enn '((-4 . "<OR")
  3085. (0 . "POLYLINE")
  3086. (0 . "LWPOLYLINE")
  3087. (-4 . "OR>"))
  3088. )
  3089. (prompt "\n选择基线: ")
  3090. (setq SsSel (ssget enn))
  3091. )
  3092. (progn
  3093. (setq SsSel (ssget "x" '((-4 . "<or") (0 . "POLYLINE") (0 . "LWPOLYLINE")(-4 . "or>")(8 . "5312"))))
  3094. ))
  3095. (if (/= SsSel nil)(a733_a sssel))
  3096. (undo_end)
  3097. )
  3098. (defun a733_a(SsSel)
  3099. (setq len (sslength SsSel))
  3100. (setq t 0)
  3101. (setq en (ssname SsSel t))
  3102. (setq ed (entget en))
  3103. (setq la (cdr (assoc 8 ed)))
  3104. (setq lla (strcat la "_sym"))
  3105. (command "layer" "m" lla "c" "4" "" "")
  3106. (while (< t len)
  3107. (setq lt (get-line-list en))
  3108. (IF (/= LT NIL)
  3109. (PROGN
  3110. (setq i 0)
  3111. (setq d1 (* 0.004 wwblc))
  3112. (setq d2 (* 0.001 wwblc))
  3113. (setvar "PLINEWID" 0)
  3114. (setq D D1)
  3115. (setq PC (nth i lt))
  3116. (setq i (+ 1 I))
  3117. (setq DC (nth i lt))
  3118. ;;;;;;;;;;;;;;;;;;;;;以下为替换部分
  3119. (setq kk 1)
  3120. (WHILE (/= dc nil)
  3121. (setq km (distance pc dc))
  3122. (setq ang (angle pc dc))
  3123. (while (>= km d)
  3124. (setq am (polar pc ang d))
  3125. (if (= kk 1)
  3126. (progn(command "pline" pc am ""))
  3127. );endif
  3128. (setq km (- km d))
  3129. (if (= kk 1)
  3130. (progn(setq kk 2)
  3131. (setq d d2))
  3132. (progn(setq kk 1)
  3133. (setq d d1))
  3134. );endif
  3135. (setq pc am)
  3136. );endwhile
  3137. (if (= kk 1)
  3138. (progn(command "pline" pc dc ""))
  3139. );endif
  3140. (setq d (- d km))
  3141. (setq pc dc)
  3142. ;;;;;;;;;;;;;;;;;;;;;以上为替换部分
  3143. (setq i (+ 1 i))
  3144. (setq DC (nth i lt))
  3145. );endwhile
  3146. ));IF LT IS NULL BLOCK
  3147. (setq t (+ 1 t))
  3148. (setq en (ssname SsSel t))
  3149. );endwhile
  3150. (setvar "PLINEWID" 0)
  3151. (command "layer" "f" la "");根据需要选择此行
  3152. );endfunction
  3153. ;;;;;;;;;;
  3154. (defun c:444() ;栅栏、栏杆444
  3155. (undo_begin)
  3156. (if (= jieshi "1")
  3157. (PROGN
  3158. (setq ss (ssget "x" '((-4 . "<OR")(0 . "POLYLINE")(0 . "LWPOLYLINE")(-4 . "OR>") (8 . "2450"))))
  3159. (if (= ss nil)(PROGN(print "找不到 2450 !")(exit)))
  3160. (setq len (sslength ss))
  3161. (setq t 0)
  3162. (setq en (ssname ss t))
  3163. )
  3164. (PROGN
  3165. (setq en(car (entsel "\n选择基线:")))
  3166. (setq len 1)
  3167. (setq t 0)
  3168. ));endif
  3169. (setq ed (entget en))
  3170. (setq la (cdr (assoc 8 ed)))
  3171. (setq lla (strcat la "_sym"))
  3172. (command "layer" "m" lla "c" "4" "" "")
  3173. (while (< t len)
  3174. (setq lt (get-line-list en))
  3175. (setq flag nil)
  3176. (IF (/= LT NIL)
  3177. (PROGN
  3178. (setq i 0)
  3179. (setq d1 (* 0.009 2000));;注意这两行
  3180. (setq d2 (* 0.001 2000));;
  3181. (setvar "PLINEWID" 0)
  3182. (setq D D1)
  3183. (setq PC (nth i lt))
  3184. (setq i (+ 1 I))
  3185. (setq DC (nth i lt))
  3186. ;;;;;;;;;;;;;;;;;;;;;以下为替换部分
  3187. (setq kk 1)
  3188. (WHILE (/= dc nil)
  3189. (setq km (distance pc dc))
  3190. (setq ang (angle pc dc))
  3191. (while (>= km d)
  3192. (setq am (polar pc ang d))
  3193. (if (= kk 1)
  3194. (progn(command "pline" pc am ""))
  3195. );endif
  3196. (setq km (- km d))
  3197. (if (= kk 1)
  3198. (progn(setq kk 2)
  3199. (setq d d2))
  3200. (progn(setq kk 1)
  3201. (setq d d1));endprogn
  3202. );endif
  3203. (setq pc am)
  3204. );endwhile
  3205. (if (= kk 1)
  3206. (progn(command "pline" pc dc ""))
  3207. );endif
  3208. (setq d (- d km))
  3209. (setq pc dc)
  3210. ;;;;;;;;;;;;;;;;;;;;;以上为替换部分
  3211. (setq i (+ 1 i))
  3212. (setq DC (nth i lt))
  3213. );endwhile
  3214. (setq i 0)
  3215. (setq d1 (* 0.005 wwblc))
  3216. (setq S (* 0.001 wwblc))
  3217. (setq rad (* 0.0005 wwblc))
  3218. ( setvar "PLINEWID" 0)
  3219. (setq d d1)
  3220. (setq PC (nth i lt))
  3221. (setq i (+ 1 I))
  3222. (setq DC (nth i lt))
  3223. ;;;;;;;;;;;;;;;;;;;;;以下为替换部分
  3224. (WHILE (/= dc nil)
  3225. (setq km (distance pc dc))
  3226. (setq ang (angle pc dc))
  3227. (while (>= km d)
  3228. (setq am (polar pc ang (- d (/ d2 2))))
  3229. (setq an (polar am (+ ang 1.570796) s))
  3230. (cond
  3231. ((= flag nil) (progn (command "pline" am an "") (setq flag 1)))
  3232. ((= flag 1) (progn (command "circle" am rad) (setq flag nil)))
  3233. )
  3234. (setq km (- km d))
  3235. (setq d d1)
  3236. (setq pc am)
  3237. );endwhile
  3238. (setq d (- d km))
  3239. (setq pc dc)
  3240. ;;;;;;;;;;;;;;;;;;;;;以上为替换部分
  3241. (setq i (+ 1 i))
  3242. (setq DC (nth i lt))
  3243. );endwhile
  3244. )
  3245. );IF LT IS NULL BLOCK
  3246. (setq t (+ 1 t))
  3247. (if (= jieshi "1")(setq en (ssname ss t)))
  3248. );endwhile
  3249. (setvar "PLINEWID" 0)
  3250. (command "layer" "f" la "");根据需要选择此行
  3251. (undo_end)
  3252. );endfunction
  3253. ;;;;地面上的输电线
  3254. (defun c:711a()
  3255. (undo_begin)
  3256. (setvar "cmdecho" 0)
  3257. (setvar "aunits" 3)
  3258. (if (= jieshi "0")
  3259. (progn
  3260. (SETQ enn '((-4 . "<OR")
  3261. (0 . "POLYLINE")
  3262. (0 . "LWPOLYLINE")
  3263. (-4 . "OR>"))
  3264. )
  3265. (prompt "\n选择基线�? ")
  3266. (setq sssel (ssget enn))
  3267. )
  3268. (progn
  3269. (setq SsSel (ssget "x" '((-4 . "<or") (0 . "POLYLINE") (0 . "LWPOLYLINE")(-4 . "or>") (8 . "5111"))))
  3270. )
  3271. )
  3272. (if (/= SsSel nil)
  3273. (progn
  3274. (setq SsLen (sslength SsSel))
  3275. (setq T 0)
  3276. (setq EnName (ssname SsSel T))
  3277. (setq EnList (entget EnName))
  3278. (setq EnLa (cdr (assoc 8 EnList)))
  3279. (setq EnNewLa (strcat EnLa "_sym"))
  3280. (command "layer" "m" EnNewLa "c" "4" "" "")
  3281. (while (< T SsLen)
  3282. (setq EnList (get-line-list EnName))
  3283. (setq Rad (* 0.0005 wwblc))
  3284. (setvar "plinewid" 0)
  3285. (if (/= EnList nil)
  3286. (progn
  3287. (setq I 0)
  3288. (setq FirPoint (nth I EnList))
  3289. (setq I (+ I 1))
  3290. (setq SecPoint (nth I EnList))
  3291. (while (/= SecPoint nil)
  3292. (setq Dist (distance FirPoint SecPoint))
  3293. (setq Ang (angle FirPoint SecPoint))
  3294. (setq AidFisP (polar FirPoint Ang Rad))
  3295. (setq AidSecP (polar SecPoint (+ Ang PI) Rad))
  3296. (command "pline" AidFisP AidSecP "")
  3297. (command "insert" "711a" FirPoint (/ wwblc 1000) "" (- Ang (/ PI 2.0)))
  3298. (command "insert" "711a" SecPoint (/ wwblc 1000) "" (- (+ Ang PI) (/ PI 2.0)))
  3299. (setq I (+ I 1))
  3300. (setq FirPoint SecPoint)
  3301. (setq SecPoint (nth I Enlist))
  3302. );end while SecPoint
  3303. );end progn
  3304. );end if
  3305. (setq T (+ T 1))
  3306. (setq EnName (ssname SsSel T))
  3307. );end while T
  3308. (setvar "plinewid" 0)
  3309. (setvar "aunits" 0)
  3310. (setvar "clayer" "0")
  3311. (command "layer" "f" Enla "")
  3312. )
  3313. (prompt "\n未找到曲线!请检查层以及是否为三维线!")
  3314. );end if SsSel
  3315. (undo_end)
  3316. );end 711a
  3317. ;;;;地面上的配电线
  3318. (defun c:712a()
  3319. (undo_begin)
  3320. (setvar "cmdecho" 0)
  3321. (setvar "aunits" 3)
  3322. (if (= jieshi "0")
  3323. (progn
  3324. (SETQ enn '((-4 . "<OR")
  3325. (0 . "POLYLINE")
  3326. (0 . "LWPOLYLINE")
  3327. (-4 . "OR>"))
  3328. )
  3329. (prompt "\n选择基线: ")
  3330. (setq sssel (ssget enn))
  3331. )
  3332. (progn
  3333. (setq SsSel (ssget "x" '((-4 . "<or") (0 . "POLYLINE") (0 . "LWPOLYLINE")(-4 . "or>") (8 . "5121"))))
  3334. )
  3335. )
  3336. (if (/= SsSel nil)
  3337. (progn
  3338. (setq SsLen (sslength SsSel))
  3339. (setq T 0)
  3340. (setq EnName (ssname SsSel T))
  3341. (setq EnList (entget EnName))
  3342. (setq EnLa (cdr (assoc 8 EnList)))
  3343. (setq EnNewLa (strcat EnLa "_sym"))
  3344. (command "layer" "m" EnNewLa "c" "4" "" "")
  3345. (while (< T SsLen)
  3346. (setq EnList (get-line-list EnName))
  3347. (setq Rad (* 0.0005 wwblc))
  3348. (setvar "plinewid" 0)
  3349. (if (/= EnList nil)
  3350. (progn
  3351. (setq I 0)
  3352. (setq FirPoint (nth I EnList))
  3353. (setq I (+ I 1))
  3354. (setq SecPoint (nth I EnList))
  3355. (while (/= SecPoint nil)
  3356. (setq Dist (distance FirPoint SecPoint))
  3357. (setq Ang (angle FirPoint SecPoint))
  3358. (setq AidFisP (polar FirPoint Ang Rad))
  3359. (setq AidSecP (polar SecPoint (+ Ang PI) Rad))
  3360. (command "pline" AidFisP AidSecP "")
  3361. (command "insert" "712a" FirPoint (/ wwblc 1000) "" (- Ang (/ PI 2.0)))
  3362. (command "insert" "712a" SecPoint (/ wwblc 1000) "" (- (+ Ang PI) (/ PI 2.0)))
  3363. (setq I (+ I 1))
  3364. (setq FirPoint SecPoint)
  3365. (setq SecPoint (nth I Enlist))
  3366. );end while SecPoint
  3367. );end progn
  3368. );end if
  3369. (setq T (+ T 1))
  3370. (setq EnName (ssname SsSel T))
  3371. );end while T
  3372. (setvar "plinewid" 0)
  3373. (setvar "aunits" 0)
  3374. (setvar "clayer" "0")
  3375. (command "layer" "f" Enla "")
  3376. )
  3377. (prompt "\n未找到曲线!请检查层以及是否为三维线!")
  3378. );end if SsSel
  3379. (undo_end)
  3380. );end 712a
  3381. ;;;;地面上的通讯线
  3382. (defun c:72a()
  3383. (undo_begin)
  3384. (setvar "cmdecho" 0)
  3385. (setvar "aunits" 3)
  3386. (if (= jieshi "0")
  3387. (progn
  3388. (SETQ enn '((-4 . "<OR")
  3389. (0 . "POLYLINE")
  3390. (0 . "LWPOLYLINE")
  3391. (-4 . "OR>"))
  3392. )
  3393. (prompt "\n选择基线: ")
  3394. (setq sssel (ssget enn))
  3395. )
  3396. (progn
  3397. (setq SsSel (ssget "x" '((-4 . "<or") (0 . "POLYLINE") (0 . "LWPOLYLINE")(-4 . "or>") (8 . "5210"))))
  3398. )
  3399. )
  3400. (if (/= SsSel nil)
  3401. (progn
  3402. (setq SsLen (sslength SsSel))
  3403. (setq T 0)
  3404. (setq EnName (ssname SsSel T))
  3405. (setq EnList (entget EnName))
  3406. (setq EnLa (cdr (assoc 8 EnList)))
  3407. (setq EnNewLa (strcat EnLa "_sym"))
  3408. (command "layer" "m" EnNewLa "c" "4" "" "")
  3409. (while (< T SsLen)
  3410. (setq EnList (get-line-list EnName))
  3411. (setq Rad (* 0.0005 wwblc))
  3412. (setvar "plinewid" 0)
  3413. (if (/= EnList nil)
  3414. (progn
  3415. (setq I 0)
  3416. (setq FirPoint (nth I EnList))
  3417. (setq I (+ I 1))
  3418. (setq SecPoint (nth I EnList))
  3419. (while (/= SecPoint nil)
  3420. (setq Dist (distance FirPoint SecPoint))
  3421. (setq Ang (angle FirPoint SecPoint))
  3422. (setq AidFisP (polar FirPoint Ang Rad))
  3423. (setq AidSecP (polar SecPoint (+ Ang PI) Rad))
  3424. (command "pline" AidFisP AidSecP "")
  3425. (command "insert" "72a" FirPoint (/ wwblc 1000) "" (- Ang (/ PI 2.0)))
  3426. (command "insert" "72a" SecPoint (/ wwblc 1000) "" (- (+ Ang PI) (/ PI 2.0)))
  3427. (setq I (+ I 1))
  3428. (setq FirPoint SecPoint)
  3429. (setq SecPoint (nth I Enlist))
  3430. );end while SecPoint
  3431. );end progn
  3432. );end if
  3433. (setq T (+ T 1))
  3434. (setq EnName (ssname SsSel T))
  3435. );end while T
  3436. (setvar "plinewid" 0)
  3437. (setvar "aunits" 0)
  3438. (setvar "clayer" "0")
  3439. (command "layer" "f" Enla "")
  3440. )
  3441. (prompt "\n未找到曲线!请检查层以及是否为三维线!")
  3442. );end if SsSel
  3443. (undo_end)
  3444. );end 72a
  3445. ;;;;;;
  3446. (defun c:Xx() ;按给定的参数绘虚线Xx
  3447. (setq en (car(entsel "\n请选择虚线:")));绘虚线边
  3448. (setq d1 (getdist "\n实线长:"))
  3449. (setq d2 (getdist "\n空格长:"))
  3450. (setq width (getdist "\n线宽:"))
  3451. (setq ed (entget en))
  3452. (setq la (cdr (assoc 8 ed)))
  3453. (setq lla (strcat la "_sym"))
  3454. (command "layer" "m" lla "c" "4" "" "")
  3455. (setq lt (get-line-list en))
  3456. (IF (/= LT NIL)
  3457. (PROGN
  3458. (setq i 0)
  3459. (setq d1 (* d1 2.0))
  3460. (setq d2 (* d2 2.0))
  3461. (setq width (* width 2.0)) ;;;注意线宽
  3462. (setvar "PLINEWID" width);;;
  3463. (setq D D1)
  3464. (setq PC (nth i lt))
  3465. (setq i (+ 1 I))
  3466. (setq DC (nth i lt))
  3467. ;;;;;;;;;;;;;;;;;;;;;以下为替换部分
  3468. (setq kk 1)
  3469. (WHILE (/= dc nil)
  3470. (setq km (distance pc dc))
  3471. (setq ang (angle pc dc))
  3472. (while (>= km d)
  3473. (setq am (polar pc ang d))
  3474. (if (= kk 1)
  3475. (progn(command "pline" pc am ""))
  3476. );endif
  3477. (setq km (- km d))
  3478. (if (= kk 1)
  3479. (progn(setq kk 2)
  3480. (setq d d2))
  3481. (progn(setq kk 1)
  3482. (setq d d1));endprogn
  3483. );endif
  3484. (setq pc am)
  3485. );endwhile
  3486. (if (= kk 1)
  3487. (progn(command "pline" pc dc ""))
  3488. );endif
  3489. (setq d (- d km))
  3490. (setq pc dc)
  3491. ;;;;;;;;;;;;;;;;;;;;;以上为替换部分
  3492. (setq i (+ 1 i))
  3493. (setq DC (nth i lt))
  3494. );endwhile
  3495. ));IF LT IS NULL BLOCK
  3496. (setvar "plinewid" 0)
  3497. );end xx
  3498. (defun c:kan () ;将选定的曲线解释成坎状符号kan
  3499. (undo_begin)
  3500. (setvar "cmdecho" 0)
  3501. (prompt "\n注意!!坎加在画线起点的左边!!")
  3502. (setq en (car (entsel "\n选择曲线:")))
  3503. (setq ed (entget en))
  3504. (setq la (cdr (assoc 8 ed)))
  3505. (setq lla (strcat la "_sym"))
  3506. (command "layer" "m" lla "c" "4" "" "")
  3507. (setq lt (get-line-list en))
  3508. (IF (/= LT NIL)
  3509. (PROGN
  3510. (setq i 0)
  3511. (setq d1 (* 0.002 wwblc))
  3512. (setq S (* 0.001 wwblc))
  3513. ;(setq width (* 0.00015 wwblc)) ;;;注意线宽
  3514. ;(setvar "PLINEWID" width);;;
  3515. ( setvar "PLINEWID" 0)
  3516. (setq d d1)
  3517. (setq PC (nth i lt))
  3518. (setq i (+ 1 I))
  3519. (setq DC (nth i lt))
  3520. ;;;;;;;;;;;;;;;;;;;;;以下为替换部分
  3521. (WHILE (/= dc nil)
  3522. (command "pline" pc dc "")
  3523. (setq km (distance pc dc))
  3524. (setq ang (angle pc dc))
  3525. (while (>= km d)
  3526. (setq am (polar pc ang d))
  3527. (setq an (polar am (+ ang 1.570796) s))
  3528. (command "pline" am an "")
  3529. (setq km (- km d))
  3530. (setq d d1)
  3531. (setq pc am)
  3532. );endwhile
  3533. (setq d (- d km))
  3534. (setq pc dc)
  3535. ;;;;;;;;;;;;;;;;;;;;;以上为替换部分
  3536. (setq i (+ 1 i))
  3537. (setq DC (nth i lt))
  3538. );endwhile
  3539. ));IF LT IS NULL BLOCK
  3540. (setvar "PLINEWID" 0)
  3541. ;(command "layer" "f" la "");根据需要选择此行
  3542. (undo_end)
  3543. );endfunction
  3544. ;;;;;;;;;;
  3545. (defun c:835a () ;单线干沟835a
  3546. (undo_begin)
  3547. (setvar "cmdecho" 0)
  3548. (setvar "aunits" 3)
  3549. (if (= jieshi "0")
  3550. (progn
  3551. (SETQ enn '((-4 . "<OR")
  3552. (0 . "POLYLINE")
  3553. (0 . "LWPOLYLINE")
  3554. (-4 . "OR>"))
  3555. )
  3556. (prompt "\n选择基线: ")
  3557. (setq SsSel (ssget enn))
  3558. )
  3559. (progn
  3560. (setq SsSel (ssget "x" '((-4 . "<or") (0 . "POLYLINE") (0 . "LWPOLYLINE")(-4 . "or>")(8 . "6341"))))
  3561. ))
  3562. (setq len (sslength SsSel))
  3563. (setq t 0)
  3564. (setq en (ssname SsSel t))
  3565. (setq ed (entget en))
  3566. (setq la (cdr (assoc 8 ed)))
  3567. (setq lla (strcat la "_sym"))
  3568. (command "layer" "m" lla "c" "4" "" "")
  3569. (while (< t len)
  3570. (setq lt (get-line-list en))
  3571. (IF (/= LT NIL)
  3572. (PROGN
  3573. (setq i 0)
  3574. (setq PC (nth i lt))
  3575. ;;;;;;;;;;;;;;;;;;;;;以下为替换部分
  3576. (SETQ WID (* 0.0003 wwblc))
  3577. (SETVAR "PLINEWID" WID)
  3578. (SETQ D1 (* 0.003 wwblc))
  3579. (SETQ D2 (* 0.001 wwblc))
  3580. (SETQ S1 (* 0.001 wwblc))
  3581. (SETQ D (/ D1 2))
  3582. (SETQ S S1)
  3583. (SETQ X0 (CAR PC))
  3584. (SETQ Y0 (CADR PC))
  3585. (SETQ KP 1)
  3586. (SETQ KK 0)
  3587. (SETQ KW 1)
  3588. (SETQ KT 1)
  3589. (WHILE (/= KK 1)
  3590. (IF (= KP 1)
  3591. (PROGN (setq i (+ 1 I))(setq DC (nth i lt))
  3592. (IF (= DC NIL)
  3593. (PROGN(SETQ KK 1))
  3594. (PROGN(SETQ X1 (CAR DC))
  3595. (SETQ Y1 (CADR DC))
  3596. ))
  3597. ))
  3598. (SETQ KM (DISTANCE (LIST X0 Y0) (LIST X1 Y1)))
  3599. (IF (< KM D)
  3600. (PROGN(SETQ D (- D KM))
  3601. (SETQ KP 1)
  3602. (IF (/= KW 3)
  3603. (PROGN(COMMAND "PLINE" (LIST X0 Y0) (LIST X1 Y1) "")
  3604. ))
  3605. (SETQ X0 X1)
  3606. (SETQ Y0 Y1)
  3607. )
  3608. (PROGN(SETQ HS D)
  3609. (SETQ X (+ X0 (* HS (/ (- X1 X0) KM))))
  3610. (SETQ Y (+ Y0 (* HS (/ (- Y1 Y0) KM))))
  3611. (IF (/= KW 3)
  3612. (PROGN(COMMAND "PLINE" (LIST X0 Y0) (LIST X Y) "")
  3613. ))
  3614. (IF (= KW 1)
  3615. (PROGN(IF (= KT 1)
  3616. (PROGN(SETQ XD (- X (* S (/ (- Y1 Y0) KM))))
  3617. (SETQ YD (+ Y (* S (/ (- X1 X0) KM))))
  3618. )
  3619. (PROGN(SETQ XD (+ X (* S (/ (- Y1 Y0) KM))))
  3620. (SETQ YD (- Y (* S (/ (- X1 X0) KM))))
  3621. ))
  3622. (setvar "plinewid" 0)
  3623. (COMMAND "PLINE" (LIST XD YD) (LIST X Y) "")
  3624. (setvar "plinewid" wid)
  3625. ))
  3626. (SETQ KW (+ KW 1))
  3627. (IF (> KW 3)
  3628. (PROGN(SETQ KW 1)
  3629. (SETQ D (/ D1 2))
  3630. (SETQ KT (+ KT 1))
  3631. (IF (> KT 2)
  3632. (PROGN(SETQ KT 1)
  3633. ))
  3634. ))
  3635. (IF (= KW 2)
  3636. (PROGN(SETQ D (/ D1 2))
  3637. ))
  3638. (IF (= KW 3)
  3639. (PROGN(SETQ D D2)
  3640. ))
  3641. (SETQ X0 X)
  3642. (SETQ Y0 Y)
  3643. (SETQ KP 0)
  3644. )
  3645. )
  3646. )
  3647. ;;;;;;;;;;;;;;;;;;;;;以上为替换部分
  3648. );end progn
  3649. );IF LT IS NULL BLOCK
  3650. (setq t (+ 1 t))
  3651. (setq en (ssname SsSel t))
  3652. );endwhile
  3653. (setvar "PLINEWID" 0)
  3654. (setvar "aunits" 0)
  3655. (command "layer" "f" la "");根据需要选择此行
  3656. (undo_end)
  3657. );endfunction
  3658. ;;;;改变给定层中注记和块的方向Gjd
  3659. (defun c:Gjd ()
  3660. (setvar "cmdecho" 0)
  3661. (setvar "aunits" 3)
  3662. ;(setq SsLay (getstring "\n输入层名:"))
  3663. (setq NewAng (getangle "\n输入新角度:"))
  3664. ;;;;;TEXT
  3665. ;(setq SsSel (cons 8 SsLay))
  3666. ;(setq SsSel (list '(0 . "TEXT") SsSel))
  3667. ;(setq SsText (ssget "x" SsSel))
  3668. (setq SsText (ssget "x" '((0 . "TEXT"))))
  3669. (setq SsLen (sslength SsText))
  3670. (setq I 0)
  3671. (while (< I SsLen)
  3672. (setq EnName (ssname SsText I))
  3673. (setq EnList (entget EnName))
  3674. (setq EnList (subst (cons 50 (- NewAng (/ PI 2.0))) (assoc 50 EnList) EnList))
  3675. (entmod EnList)
  3676. (setq I (+ I 1))
  3677. )
  3678. ;;;;;BLOCK
  3679. ;(setq SsSel (cons 8 SsLay))
  3680. ;(setq SsSel (list '(0 . "INSERT") SsSel))
  3681. ;(setq SsBlock (ssget "x" SsSel))
  3682. (setq SsBlock (ssget "x" '((0 . "INSERT"))))
  3683. (setq SsLen (sslength SsBlock))
  3684. (setq I 0)
  3685. (while (< I SsLen)
  3686. (setq EnName (ssname SsBlock I))
  3687. (setq EnList (entget EnName))
  3688. (setq EnList (subst (cons 50 (- NewAng (/ PI 2.0))) (assoc 50 EnList) EnList))
  3689. (entmod EnList)
  3690. (setq I (+ I 1))
  3691. )
  3692. ;;;;;
  3693. (setvar "aunits" 0)
  3694. )
  3695. ;;;;地面上的管道732
  3696. (defun c:732 ()
  3697. (undo_begin)
  3698. (setvar "cmdecho" 0)
  3699. (setvar "aunits" 3)
  3700. (if (= jieshi "0")
  3701. (progn
  3702. (SETQ enn '((-4 . "<OR")
  3703. (0 . "POLYLINE")
  3704. (0 . "LWPOLYLINE")
  3705. (-4 . "OR>"))
  3706. )
  3707. (prompt "\n选择基线: ")
  3708. (setq SsSel (ssget enn))
  3709. )
  3710. (progn
  3711. (setq SsSel (ssget "x" '((-4 . "<or") (0 . "POLYLINE") (0 . "LWPOLYLINE")(-4 . "or>")(8 . "5311"))))
  3712. ))
  3713. (if (/= SsSel nil)
  3714. (progn
  3715. (setq SsLen (sslength SsSel))
  3716. (setq T 0)
  3717. (setq EnName (ssname SsSel T))
  3718. (setq EnList (entget EnName))
  3719. (setq EnLa (cdr (assoc 8 EnList)))
  3720. (setq EnNewLa (strcat EnLa "_sym"))
  3721. (command "layer" "m" EnNewLa "c" "4" "" "")
  3722. (while (< T SsLen)
  3723. (setq EnList (get-line-list EnName))
  3724. (setq LenList (length EnList))
  3725. (setq Rad (* 0.0005 wwblc))
  3726. (setvar "plinewid" 0)
  3727. (if (/= EnList nil)
  3728. (progn
  3729. (setq I 0)
  3730. (setq FirPoint (nth I EnList))
  3731. (setq I (+ I 1))
  3732. (setq SecPoint (nth I EnList))
  3733. (while (/= SecPoint nil)
  3734. (setq Dist (distance FirPoint SecPoint))
  3735. (setq Ang (angle FirPoint SecPoint))
  3736. (setq AidFisP (polar FirPoint Ang Rad))
  3737. (setq AidSecP (polar SecPoint (+ Ang PI) Rad))
  3738. (if (= I 1) (setq AidFisP FirPoint)
  3739. (command "circle" FirPoint Rad)
  3740. )
  3741. (if (= I (- LenList 1)) (setq AidSecP SecPoint))
  3742. (command "pline" AidFisP AidSecP "")
  3743. (setq I (+ I 1))
  3744. (setq FirPoint SecPoint)
  3745. (setq SecPoint (nth I Enlist))
  3746. );end while SecPoint
  3747. ;(command "circle" FirPoint Rad)
  3748. );end progn
  3749. );end if
  3750. (setq T (+ T 1))
  3751. (setq EnName (ssname SsSel T))
  3752. );end while T
  3753. (setvar "plinewid" 0)
  3754. (setvar "aunits" 0)
  3755. (setvar "clayer" "0")
  3756. (command "layer" "f" Enla "")
  3757. )
  3758. (prompt "\n未找到曲线!请检查层以及是否为三维线!")
  3759. );end if SsSel
  3760. (undo_end)
  3761. );end 732
  3762. ;;;房屋晕线填充
  3763. (defun c:Tc ()
  3764. (setvar "cmdecho" 0)
  3765. (setvar "aunits" 0)
  3766. (setvar "measurement" 1)
  3767. (setq Ang (getangle "\n测量角度:"))
  3768. (prompt "\n选择房屋边线:")
  3769. (setq TcScl 1)
  3770. (setq Ang (- Ang (/ PI 4.0)))
  3771. (command "hatch" "ansi31" TcScl Ang pause)
  3772. (setvar "aunits" 0)
  3773. )
  3774. ;;;;;
  3775. (defun c:1041a () ;未加固斜坡1041a
  3776. (undo_begin)
  3777. (setvar "cmdecho" 0)
  3778. (setvar "aunits" 3)
  3779. (if (= jieshi "0")
  3780. (progn
  3781. (SETQ enn '((-4 . "<OR")
  3782. (0 . "POLYLINE")
  3783. (0 . "LWPOLYLINE")
  3784. (-4 . "OR>"))
  3785. )
  3786. (prompt "\n选择基线: ")
  3787. (setq SsSel (ssget enn))
  3788. )
  3789. (progn
  3790. (setq SsSel (ssget "x" '((-4 . "<or") (0 . "POLYLINE") (0 . "LWPOLYLINE")(-4 . "or>")(8 . "8511"))))
  3791. ))
  3792. (setq len (sslength SsSel))
  3793. (setq t 0)
  3794. (setq en (ssname SsSel t))
  3795. (setq ed (entget en))
  3796. (setq la (cdr (assoc 8 ed)))
  3797. (setq lla (strcat la "_sym"))
  3798. (command "layer" "m" lla "c" "4" "" "")
  3799. (while (< t len)
  3800. (setq lt (get-line-list en))
  3801. (IF (/= LT NIL)
  3802. (PROGN
  3803. (setq i 0)
  3804. (setq d1 (* 0.002 wwblc))
  3805. (setq S1 (* 0.001 wwblc))
  3806. (setq S2 (* 0.003 wwblc))
  3807. (setvar "PLINEWID" 0)
  3808. (setq d d1)
  3809. (setq PC (nth i lt))
  3810. (setq i (+ 1 I))
  3811. (setq DC (nth i lt))
  3812. (setq Flag 0)
  3813. ;;;;;;;;;;;;;;;;;;;;;以下为替换部分
  3814. (WHILE (/= dc nil)
  3815. (command "pline" pc dc "")
  3816. (setq km (distance pc dc))
  3817. (setq ang (angle pc dc))
  3818. (while (>= km d)
  3819. (setq am (polar pc ang d))
  3820. (if (= Flag 0)
  3821. (progn (setq an (polar am (+ ang 1.570796) s1))
  3822. (setq Flag 1)
  3823. )
  3824. (progn (setq an (polar am (+ ang 1.570796) s2))
  3825. (setq Flag 0)
  3826. )
  3827. )
  3828. (command "pline" am an "")
  3829. (setq km (- km d))
  3830. (setq d d1)
  3831. (setq pc am)
  3832. );endwhile
  3833. (setq d (- d km))
  3834. (setq pc dc)
  3835. ;;;;;;;;;;;;;;;;;;;;;以上为替换部分
  3836. (setq i (+ 1 i))
  3837. (setq DC (nth i lt))
  3838. );endwhile
  3839. ));IF LT IS NULL BLOCK
  3840. (setq t (+ 1 t))
  3841. (setq en (ssname SsSel t))
  3842. );endwhile
  3843. (setvar "PLINEWID" 0)
  3844. (command "layer" "f" la "");根据需要选择此行
  3845. (setvar "aunits" 0)
  3846. (undo_end)
  3847. );endfunction
  3848. (defun c:1041b () ;已加固斜坡1041b
  3849. (undo_begin)
  3850. (setvar "cmdecho" 0)
  3851. (setvar "aunits" 3)
  3852. (if (= jieshi "0")
  3853. (progn
  3854. (SETQ enn '((-4 . "<OR")
  3855. (0 . "POLYLINE")
  3856. (0 . "LWPOLYLINE")
  3857. (-4 . "OR>"))
  3858. )
  3859. (prompt "\n选择基线: ")
  3860. (setq SsSel (ssget enn))
  3861. )
  3862. (progn
  3863. (setq SsSel (ssget "x" '((-4 . "<or") (0 . "POLYLINE") (0 . "LWPOLYLINE")(-4 . "or>")(8 . "8512"))))
  3864. ))
  3865. (setq len (sslength SsSel))
  3866. (setq t 0)
  3867. (setq en (ssname SsSel t))
  3868. (setq ed (entget en))
  3869. (setq la (cdr (assoc 8 ed)))
  3870. (setq lla (strcat la "_sym"))
  3871. (command "layer" "m" lla "c" "4" "" "")
  3872. (while (< t len)
  3873. (setq lt (get-line-list en))
  3874. (IF (/= LT NIL)
  3875. (PROGN
  3876. (setq i 0)
  3877. (setq d1 (* 0.002 wwblc))
  3878. (setq S1 (* 0.001 wwblc))
  3879. (setq S2 (* 0.003 wwblc))
  3880. (setq S3 (* 0.002 wwblc))
  3881. (setq rad (* 0.0003 wwblc))
  3882. (setvar "PLINEWID" 0)
  3883. (setq d d1)
  3884. (setq PC (nth i lt))
  3885. (setq i (+ 1 I))
  3886. (setq DC (nth i lt))
  3887. (setq Flag 0)
  3888. ;;;;;;;;;;;;;;;;;;;;;以下为替换部分
  3889. (WHILE (/= dc nil)
  3890. (command "pline" pc dc "")
  3891. (setq km (distance pc dc))
  3892. (setq ang (angle pc dc))
  3893. (while (>= km d)
  3894. (setq am (polar pc ang d))
  3895. (if (= Flag 0)
  3896. (progn (setq an (polar am (+ ang 1.570796) s1))
  3897. (setq Flag 1)
  3898. (setq an1 (polar am (+ ang 1.570796) s3))
  3899. (command "donut" "0" rad an1 "")
  3900. )
  3901. (progn (setq an (polar am (+ ang 1.570796) s2))
  3902. (setq Flag 0)
  3903. )
  3904. )
  3905. (command "pline" am an "")
  3906. (setq km (- km d))
  3907. (setq d d1)
  3908. (setq pc am)
  3909. );endwhile
  3910. (setq d (- d km))
  3911. (setq pc dc)
  3912. ;;;;;;;;;;;;;;;;;;;;;以上为替换部分
  3913. (setq i (+ 1 i))
  3914. (setq DC (nth i lt))
  3915. );endwhile
  3916. ));IF LT IS NULL BLOCK
  3917. (setq t (+ 1 t))
  3918. (setq en (ssname SsSel t))
  3919. );endwhile
  3920. (setvar "PLINEWID" 0)
  3921. (command "layer" "f" la "");根据需要选择此行
  3922. (setvar "aunits" 0)
  3923. (undo_end)
  3924. );endfunction
  3925. ;;;;架空的管道731b(不依比例尺的墩架)
  3926. (defun c:731b ()
  3927. (undo_begin)
  3928. (setvar "cmdecho" 0)
  3929. (setvar "aunits" 3)
  3930. (if (= jieshi "0")
  3931. (progn
  3932. (SETQ enn '((-4 . "<OR")
  3933. (0 . "POLYLINE")
  3934. (0 . "LWPOLYLINE")
  3935. (-4 . "OR>"))
  3936. )
  3937. (prompt "\n选择基线: ")
  3938. (setq SsSel (ssget enn))
  3939. )
  3940. (progn
  3941. (setq SsSel (ssget "x" '((-4 . "<or") (0 . "POLYLINE") (0 . "LWPOLYLINE")(-4 . "or>")(8 . "5313"))))
  3942. ))
  3943. (if (/= SsSel nil)
  3944. (progn
  3945. (setq SsLen (sslength SsSel))
  3946. (setq T 0)
  3947. (setq EnName (ssname SsSel T))
  3948. (setq EnList (entget EnName))
  3949. (setq EnLa (cdr (assoc 8 EnList)))
  3950. (setq EnNewLa (strcat EnLa "_sym"))
  3951. (command "layer" "m" EnNewLa "c" "4" "" "")
  3952. (while (< T SsLen)
  3953. (setq EnList (get-line-list EnName))
  3954. (setq LenList (length EnList))
  3955. (setvar "plinewid" 0)
  3956. (if (/= EnList nil)
  3957. (progn
  3958. (setq I 0)
  3959. (setq FirPoint (nth I EnList))
  3960. (setq I (+ I 1))
  3961. (setq SecPoint (nth I EnList))
  3962. (while (/= SecPoint nil)
  3963. (setq Dist (distance FirPoint SecPoint))
  3964. (setq Ang (angle FirPoint SecPoint))
  3965. (setq AidFisP (polar FirPoint Ang 0))
  3966. (setq AidSecP (polar SecPoint (+ Ang PI) 0))
  3967. (if (= I 1) (setq AidFisP FirPoint)
  3968. (command "insert" "731b" FirPoint (/ wwblc 1000) "" Ang)
  3969. )
  3970. (if (= I (- LenList 1)) (setq AidSecP SecPoint))
  3971. (command "pline" AidFisP AidSecP "")
  3972. (setq I (+ I 1))
  3973. (setq FirPoint SecPoint)
  3974. (setq SecPoint (nth I Enlist))
  3975. );end while SecPoint
  3976. ;(command "circle" FirPoint Rad)
  3977. );end progn
  3978. );end if
  3979. (setq T (+ T 1))
  3980. (setq EnName (ssname SsSel T))
  3981. );end while T
  3982. (setvar "plinewid" 0)
  3983. (setvar "aunits" 0)
  3984. (setvar "clayer" "0")
  3985. (command "layer" "f" Enla "")
  3986. )
  3987. (prompt "\n未找到曲线!请检查层以及是否为三维线!")
  3988. );end if SsSel
  3989. (undo_end)
  3990. );end 731b
  3991. ;;;;;;;;;;
  3992. (defun c:835b () ;单线干沟835b
  3993. (setq ss (ssget "x" '((0 . "POLYLINE") (8 . "6342"))))
  3994. (setq len (sslength ss))
  3995. (setq t 0)
  3996. (setq en (ssname ss t))
  3997. (setq ed (entget en))
  3998. (setq la (cdr (assoc 8 ed)))
  3999. (setq lla (strcat la "_sym"))
  4000. (command "layer" "m" lla "c" "4" "" "")
  4001. (while (< t len)
  4002. (setq lt (get-line-list en))
  4003. (IF (/= LT NIL)
  4004. (PROGN
  4005. (setq i 0)
  4006. (setq PC (nth i lt))
  4007. ;;;;;;;;;;;;;;;;;;;;;以下为替换部分
  4008. (SETQ WID (* 0.0 wwblc))
  4009. (SETVAR "PLINEWID" WID)
  4010. (SETQ D1 (* 0.003 wwblc))
  4011. (SETQ D2 (* 0.001 wwblc))
  4012. (SETQ S1 (* 0.001 wwblc))
  4013. (SETQ D (/ D1 2))
  4014. (SETQ S S1)
  4015. (SETQ X0 (CAR PC))
  4016. (SETQ Y0 (CADR PC))
  4017. (SETQ KP 1)
  4018. (SETQ KK 0)
  4019. (SETQ KW 1)
  4020. (SETQ KT 1)
  4021. (WHILE (/= KK 1)
  4022. (IF (= KP 1)
  4023. (PROGN (setq i (+ 1 I))(setq DC (nth i lt))
  4024. (IF (= DC NIL)
  4025. (PROGN(SETQ KK 1))
  4026. (PROGN(SETQ X1 (CAR DC))
  4027. (SETQ Y1 (CADR DC))
  4028. ))
  4029. ))
  4030. (SETQ KM (DISTANCE (LIST X0 Y0) (LIST X1 Y1)))
  4031. (IF (< KM D)
  4032. (PROGN(SETQ D (- D KM))
  4033. (SETQ KP 1)
  4034. (IF (/= KW 3)
  4035. (PROGN(COMMAND "PLINE" (LIST X0 Y0) (LIST X1 Y1) "")
  4036. ))
  4037. (SETQ X0 X1)
  4038. (SETQ Y0 Y1)
  4039. )
  4040. (PROGN(SETQ HS D)
  4041. (SETQ X (+ X0 (* HS (/ (- X1 X0) KM))))
  4042. (SETQ Y (+ Y0 (* HS (/ (- Y1 Y0) KM))))
  4043. (IF (/= KW 3)
  4044. (PROGN(COMMAND "PLINE" (LIST X0 Y0) (LIST X Y) "")
  4045. ))
  4046. (IF (= KW 1)
  4047. (PROGN(IF (= KT 2)
  4048. (PROGN(SETQ XD (+ X (* S (/ (- Y1 Y0) KM))))
  4049. (SETQ YD (- Y (* S (/ (- X1 X0) KM))))
  4050. (COMMAND "LINE" (LIST XD YD) (LIST X Y) "")
  4051. ))
  4052. ))
  4053. (SETQ KW (+ KW 1))
  4054. (IF (> KW 3)
  4055. (PROGN(SETQ KW 1)
  4056. (SETQ D (/ D1 2))
  4057. (SETQ KT (+ KT 1))
  4058. (IF (> KT 2)
  4059. (PROGN(SETQ KT 1)
  4060. ))
  4061. ))
  4062. (IF (= KW 2)
  4063. (PROGN(SETQ D (/ D1 2))
  4064. ))
  4065. (IF (= KW 3)
  4066. (PROGN(SETQ D D2)
  4067. ))
  4068. (SETQ X0 X)
  4069. (SETQ Y0 Y)
  4070. (SETQ KP 0)
  4071. )
  4072. )
  4073. )
  4074. ;;;;;;;;;;;;;;;;;;;;;以上为替换部分
  4075. );end progn
  4076. );IF LT IS NULL BLOCK
  4077. (setq t (+ 1 t))
  4078. (setq en (ssname ss t))
  4079. );endwhile
  4080. (setvar "PLINEWID" 0)
  4081. (command "layer" "f" la "");根据需要选择此行
  4082. );endfunction
  4083. ;;;;;格网坐标;;;;;;;;;;;;;;;
  4084. (defun c:zjxy()
  4085. (command "style" "STANDARD" "rs,hztxt" "0" "0.75" "0" "n" "n" "n")
  4086. (command "layer" "s" "9800" "" "")
  4087. (setq au (getvar "aunits"))
  4088. (setvar "aunits" 1)
  4089. (setq e (entsel "SELCET GRID OBJECT:"))
  4090. (setq en (car e))
  4091. (setq ed (entget en))
  4092. (setq pt (cdr (assoc 10 ed)))
  4093. (setq ptx (car pt))
  4094. (setq pty (cadr pt))
  4095. (setq px (itoa (fix ptx)))
  4096. (setq py (itoa (fix pty)))
  4097. (setq x "X")
  4098. (setq y "Y")
  4099. (setq zx (strcat y px))
  4100. (setq zy (strcat x py))
  4101. (setq pd (getpoint pt "请指定方向:"))
  4102. (setq pdx (car pd))
  4103. (setq pdy (cadr pd))
  4104. (cond
  4105. ((< pdx ptx) (setq pzx (list (- ptx 30) (+ pty 0.4) 0)))
  4106. ((> pdx ptx) (setq pzx (list (+ ptx 0.5) (+ pty 0.4) 0)))
  4107. )
  4108. (cond
  4109. ((> pdy pty) (setq pzy (list (+ ptx 0.4) (+ pty 38) 0)))
  4110. ((< pdy pty) (setq pzy (list (- ptx 0.4) (+ pty 6) 0)))
  4111. )
  4112. (command "text" pzx 5 0 zy)
  4113. (cond
  4114. ((> pdy pty) (command "text" pzy 5 270 zx))
  4115. ((< pdy pty) (command "text" pzy 5 90 zx))
  4116. )
  4117. (setvar "aunits" 0)
  4118. )
  4119. ;;;;一般铁路611
  4120. (defun c:611()
  4121. (setvar "cmdecho" 0)
  4122. (setvar "aunits" 3)
  4123. (setvar "auprec" 4)
  4124. (setq ss (ssget "x" '((0 . "POLYLINE") (8 . "4110"))))
  4125. (setq len (sslength ss))
  4126. (setq t 0)
  4127. (setq en (ssname ss t))
  4128. (setq ed (entget en))
  4129. (setq la (cdr (assoc 8 ed)))
  4130. (setq lla (strcat la "_sym"))
  4131. (command "layer" "m" lla "c" "4" "" "")
  4132. (while (< t len)
  4133. (setq lt (get-line-list en))
  4134. (IF (/= LT NIL)
  4135. (progn
  4136. (setq i 0)
  4137. (setq d1 (* 0.01 wwblc))
  4138. (setq d2 (* 0.01 wwblc))
  4139. (setq width (* 0.0008 wwblc)) ;;;注意线宽
  4140. (setvar "PLINEWID" width);;;
  4141. (setq D D1)
  4142. (setq PC (nth i lt))
  4143. (setq i (+ 1 I))
  4144. (setq DC (nth i lt))
  4145. ;;;;;;;;;;;;;;;;;;;;;以下为替换部分
  4146. (setq ang (angle pc dc))
  4147. (command "offset" (/ width 2.0) en (polar pc (+ ang (/ pi 2.0)) d1) "")
  4148. (command "change" "last" "" "p" "la" lla "")
  4149. (command "offset" (/ width 2.0) en (polar pc (- ang (/ pi 2.0)) d1)"")
  4150. (command "change" "last" "" "p" "la" lla "")
  4151. (setq kk 1)
  4152. (WHILE (/= dc nil)
  4153. (setq km (distance pc dc))
  4154. (setq ang (angle pc dc))
  4155. (while (>= km d)
  4156. (setq am (polar pc ang d))
  4157. (if (= kk 1)
  4158. (progn(command "pline" pc am ""))
  4159. );endif
  4160. (setq km (- km d))
  4161. (if (= kk 1)
  4162. (progn(setq kk 2)
  4163. (setq d d2))
  4164. (progn(setq kk 1)
  4165. (setq d d1));endprogn
  4166. );endif
  4167. (setq pc am)
  4168. );endwhile
  4169. (if (= kk 1)
  4170. (progn(command "pline" pc dc ""))
  4171. );endif
  4172. (setq d (- d km))
  4173. (setq pc dc)
  4174. ;;;;;;;;;;;;;;;;;;;;;以上为替换部分
  4175. (setq i (+ 1 i))
  4176. (setq DC (nth i lt))
  4177. );endwhile
  4178. ));IF LT IS NULL BLOCK
  4179. (setq t (+ 1 t))
  4180. (setq en (ssname ss t))
  4181. );endwhile
  4182. (setvar "PLINEWID" 0)
  4183. (setvar "aunits" 0)
  4184. (command "layer" "f" la "");根据需要选择此行
  4185. );endfunction
  4186. ;;;;窄轨铁路613
  4187. (defun c:613()
  4188. (setvar "cmdecho" 0)
  4189. (setvar "aunits" 3)
  4190. (setvar "auprec" 4)
  4191. (setq ss (ssget "x" '((0 . "LWPOLYLINE") (8 . "4130"))))
  4192. (setq len (sslength ss))
  4193. (setq t 0)
  4194. (setq en (ssname ss t))
  4195. (setq ed (entget en))
  4196. (setq la (cdr (assoc 8 ed)))
  4197. (setq lla (strcat la "_sym"))
  4198. (command "layer" "m" lla "c" "4" "" "")
  4199. (while (< t len)
  4200. (setq lt (get-line-list en))
  4201. (IF (/= LT NIL)
  4202. (progn
  4203. (setq i 0)
  4204. (setq d1 (* 0.006 wwblc))
  4205. (setq d2 (* 0.006 wwblc))
  4206. (setq width (* 0.0006 wwblc)) ;;;注意线宽
  4207. (setvar "PLINEWID" width);;;
  4208. (setq D D1)
  4209. (setq PC (nth i lt))
  4210. (setq i (+ 1 I))
  4211. (setq DC (nth i lt))
  4212. ;;;;;;;;;;;;;;;;;;;;;以下为替换部分
  4213. (setq ang (angle pc dc))
  4214. (command "offset" (/ width 2.0) en (polar pc (+ ang (/ pi 2.0)) d1) "")
  4215. (command "change" "last" "" "p" "la" lla "")
  4216. (command "offset" (/ width 2.0) en (polar pc (- ang (/ pi 2.0)) d1)"")
  4217. (command "change" "last" "" "p" "la" lla "")
  4218. (setq kk 1)
  4219. (WHILE (/= dc nil)
  4220. (setq km (distance pc dc))
  4221. (setq ang (angle pc dc))
  4222. (while (>= km d)
  4223. (setq am (polar pc ang d))
  4224. (if (= kk 1)
  4225. (progn(command "pline" pc am ""))
  4226. );endif
  4227. (setq km (- km d))
  4228. (if (= kk 1)
  4229. (progn(setq kk 2)
  4230. (setq d d2))
  4231. (progn(setq kk 1)
  4232. (setq d d1));endprogn
  4233. );endif
  4234. (setq pc am)
  4235. );endwhile
  4236. (if (= kk 1)
  4237. (progn(command "pline" pc dc ""))
  4238. );endif
  4239. (setq d (- d km))
  4240. (setq pc dc)
  4241. ;;;;;;;;;;;;;;;;;;;;;以上为替换部分
  4242. (setq i (+ 1 i))
  4243. (setq DC (nth i lt))
  4244. );endwhile
  4245. ));IF LT IS NULL BLOCK
  4246. (setq t (+ 1 t))
  4247. (setq en (ssname ss t))
  4248. );endwhile
  4249. (setvar "PLINEWID" 0)
  4250. (setvar "aunits" 0)
  4251. (command "layer" "f" la "");根据需要选择此行
  4252. );endfunction
  4253. ;;;;轻便轨道615
  4254. (defun c:615()
  4255. (setvar "cmdecho" 0)
  4256. (setvar "aunits" 3)
  4257. (setvar "auprec" 4)
  4258. (setq ss (ssget "x" '((0 . "LWPOLYLINE") (8 . "4150"))))
  4259. (setq len (sslength ss))
  4260. (setq t 0)
  4261. (setq en (ssname ss t))
  4262. (setq ed (entget en))
  4263. (setq la (cdr (assoc 8 ed)))
  4264. (setq lla (strcat la "_sym"))
  4265. (command "layer" "m" lla "c" "4" "" "")
  4266. (while (< t len)
  4267. (setq lt (get-line-list en))
  4268. (IF (/= LT NIL)
  4269. (progn
  4270. (setq i 0)
  4271. (setq d1 (* 0.002 wwblc))
  4272. (setq d2 (* 0.002 wwblc))
  4273. (setq width (* 0.0006 wwblc)) ;;;注意线宽
  4274. (setvar "PLINEWID" width);;;
  4275. (setq D D1)
  4276. (setq PC (nth i lt))
  4277. (setq i (+ 1 I))
  4278. (setq DC (nth i lt))
  4279. ;;;;;;;;;;;;;;;;;;;;;以下为替换部分
  4280. (setq ang (angle pc dc))
  4281. (command "offset" (/ width 2.0) en (polar pc (+ ang (/ pi 2.0)) d1) "")
  4282. (command "change" "last" "" "p" "la" lla "")
  4283. (command "offset" (/ width 2.0) en (polar pc (- ang (/ pi 2.0)) d1)"")
  4284. (command "change" "last" "" "p" "la" lla "")
  4285. (setq kk 1)
  4286. (WHILE (/= dc nil)
  4287. (setq km (distance pc dc))
  4288. (setq ang (angle pc dc))
  4289. (while (>= km d)
  4290. (setq am (polar pc ang d))
  4291. (if (= kk 1)
  4292. (progn(command "pline" pc am ""))
  4293. );endif
  4294. (setq km (- km d))
  4295. (if (= kk 1)
  4296. (progn(setq kk 2)
  4297. (setq d d2))
  4298. (progn(setq kk 1)
  4299. (setq d d1));endprogn
  4300. );endif
  4301. (setq pc am)
  4302. );endwhile
  4303. (if (= kk 1)
  4304. (progn(command "pline" pc dc ""))
  4305. );endif
  4306. (setq d (- d km))
  4307. (setq pc dc)
  4308. ;;;;;;;;;;;;;;;;;;;;;以上为替换部分
  4309. (setq i (+ 1 i))
  4310. (setq DC (nth i lt))
  4311. );endwhile
  4312. ));IF LT IS NULL BLOCK
  4313. (setq t (+ 1 t))
  4314. (setq en (ssname ss t))
  4315. );endwhile
  4316. (setvar "PLINEWID" 0)
  4317. (setvar "aunits" 0)
  4318. (command "layer" "f" la "");根据需要选择此行
  4319. );endfunction
  4320. (defun c:mj();;;;计算面积
  4321. (setvar "cmdecho" 0)
  4322. (setq EnName (car (entsel "\n选择内图廓线:")))
  4323. (command "area" "o" EnName)
  4324. (setq Mj (getvar "area"))
  4325. (setq Mj (/ Mj (expt (* 0.1 wwblc) 2)))
  4326. (prompt "\n此图面积为:")
  4327. (print MJ)
  4328. )
  4329. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  4330. (defun c:tcd();;沙砾地
  4331. (setq md (getreal "\n请输入密度值;[20]"))
  4332. (command "_hatch" "dots" md "0")
  4333. (print)
  4334. )
  4335. ;;;;;;;;;;;;;;;;;;;插符号;;;;;;;;;;;;;;;
  4336. (defun chafuhao(chengma kuaimin fangxiang)
  4337. (if (= wwblc nil) (setq xl 4.0))
  4338. (if (= wwblc 500) (setq xl 1.0))
  4339. (if (= wwblc 1000) (setq xl 2.0))
  4340. (if (= wwblc 2000) (setq xl 4.0))
  4341. (command "layer" "m" chengma "c" "7" "" "")
  4342. (setq p1 (getpoint "\n 插入点:"))
  4343. (while (/= p1 nil)
  4344. (if (= fangxiang 0)
  4345. (progn
  4346. (setq p3 0)
  4347. )
  4348. (progn
  4349. (setq p2 (getorient p1 "\n请指定方向;"))
  4350. (setq p3(/(* p2 180) 3.1415926))
  4351. )
  4352. )
  4353. (command "insert" kuaimin p1 xl xl p3)
  4354. (setq p1 (getpoint "\n 插入点:"))
  4355. )
  4356. (print)
  4357. )
  4358. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  4359. ;;;;;;GB码对应名称
  4360. (defun c:GBmc()
  4361. (print)
  4362. (setq duixiang (entsel "选择一个对象:"))
  4363. (if (/= duixiang nil)
  4364. (progn
  4365. (setq Myen (car duixiang))
  4366. (setq Med (entget myen))
  4367. (setq cenma (assoc 8 Med))
  4368. (setq cema (cdr cenma))
  4369. ))
  4370. (setq fil(findfile "gb.w"))
  4371. (setq f(open fil "r"))
  4372. (setq txt(read-line f))
  4373. (setq sss 0)
  4374. (setq len (strlen cema))
  4375. (if (> len 3)
  4376. (progn
  4377. (while(/= txt "END")
  4378. (setq txt1(substr txt 1 4))
  4379. (setq cema1(substr cema 1 4))
  4380. (if (= txt1 cema1)
  4381. (progn
  4382. (print (strcat "-------------" txt "---------------"))
  4383. (setq txt "END")
  4384. (setq sss 1)
  4385. )
  4386. (progn
  4387. (setq txt(read-line f))
  4388. )
  4389. )
  4390. )
  4391. (close f)
  4392. (if (= sss 0)(print (strcat "***********在GB库中找不到: " cema " ***********")))
  4393. )
  4394. (progn
  4395. (print (strcat "***********在GB库中找不到: " cema " ***********"))
  4396. )
  4397. );endif
  4398. (print)
  4399. )
  4400. ;;;;
  4401. ;;;;处理文本 + ;;;
  4402. (defun c:bg()
  4403. (setvar "cmdecho" 0)
  4404. ;(setq ed8 "8340")
  4405. ;(setq ed0 "text")
  4406. (setq ss0 (ssget "x" (list (cons 0 "text"))))
  4407. (if (/= ss0 nil)
  4408. (progn
  4409. (setq i 0)
  4410. (setq j 0)
  4411. (setq sslen0 (sslength ss0))
  4412. (while (< i sslen0)
  4413. (setq ssen (ssname ss0 i))
  4414. (setq ssed (entget ssen))
  4415. (setq ss10 (cdr (assoc 10 ssed)))
  4416. (setq sstxt1 (cdr (assoc 1 ssed)))
  4417. (setq sstxt2 (substr sstxt1 1 1))
  4418. (if (= sstxt2 "+")
  4419. (progn
  4420. (command "insert" "hp.dwg" ss10 "" "" "")
  4421. (setq sstxt1 (substr sstxt1 2))
  4422. (command "erase" ssen "")
  4423. (command "text" ss10 4 0 sstxt1)
  4424. (setq xx(+ (car ss10) 50))
  4425. (setq yy(+ (cadr ss10) 25))
  4426. (setq xy(list xx yy))
  4427. (setq newtext(entlast))
  4428. ;(command "move" newtext "0,0,0" xy "")
  4429. )
  4430. )
  4431. (setq i (+ 1 i))
  4432. )
  4433. )
  4434. )
  4435. )
  4436. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  4437. (defun c:jb()
  4438. (setq jbe1 (entsel "\n<靠近目标点选择,右键结束>:"))
  4439. (while (/= jbe1 nil)
  4440. (progn
  4441. (redraw (car jbe1) 3)
  4442. (princ "\n选择第二条目标线,<")
  4443. (setq jbe2 (nentsel "<靠近目标点选择,右键结束>:"))
  4444. (if (/= jbe2 nil)
  4445. (progn
  4446. (setq jben1 (car jbe1))
  4447. ;(setq jben2 (car jbe2))
  4448. (block-enty (car jbe2))
  4449. (setq jben2 bsenty)
  4450. (setq jbed1 (entget jben1))
  4451. (setq jbed2 (entget jben2))
  4452. (setq jb0 (cdr (assoc 0 jbed1)))
  4453. (setq jb8 (cdr (assoc 8 jbed1)))
  4454. (setq jb18 (cdr (assoc 8 jbed2)))
  4455. (setq jbbool 0)
  4456. (if (not (equal jb8 jb18))
  4457. (progn
  4458. (print "层码不同,不能相接!!!")
  4459. (setq cmbol (getstring "\n是否强行接边?<Y/N>:N"))
  4460. (if (OR (eq cmbol "N") (eq cmbol "n") (eq cmbol ""))
  4461. (progn (setq jbbool 1)
  4462. ))
  4463. ))
  4464. (if (= jbbool 0)
  4465. (progn
  4466. (if (OR (= jb0 "POLYLINE") (= jb0 "LWPOLYLINE"))
  4467. (progn
  4468. (setq jb10 (cdr (assoc 0 jbed2)))
  4469. (if (OR (= jb10 "POLYLINE") (= jb10 "LWPOLYLINE"))
  4470. (progn
  4471. (setq selp1 (cadr jbe1))
  4472. (setq selp2 (cadr jbe2))
  4473. (setq jblist1 (get-line-list jben1))
  4474. (setq jblist2 (get-line-list jben2))
  4475. (setq p11 (car jblist1))
  4476. (setq p12 (last jblist1))
  4477. (setq ev11 (nth 2 p11))
  4478. (setq ev12 (nth 2 p12))
  4479. (setq pt11 (list (nth 0 p11) (nth 1 p11)))
  4480. (setq pt12 (list (nth 0 p12) (nth 1 p12)))
  4481. (setq p21 (car jblist2))
  4482. (setq p22 (last jblist2))
  4483. (setq ev21 (nth 2 p21))
  4484. (setq ev22 (nth 2 p22))
  4485. (setq pt21 (list (nth 0 p21) (nth 1 p21)))
  4486. (setq pt22 (list (nth 0 p22) (nth 1 p22)))
  4487. (setq spt1 (list (nth 0 selp1) (nth 1 selp1)))
  4488. (setq spt2 (list (nth 0 selp2) (nth 1 selp2)))
  4489. (setq jbd11 (distance spt1 pt11))
  4490. (setq jbd12 (distance spt1 pt12))
  4491. (setq sek 0)
  4492. (setq selv 0)
  4493. (if (< jbd11 jbd12)
  4494. (progn (setq selv ev11)
  4495. (setq sek 1))
  4496. (progn (setq selv ev12)
  4497. (setq sek 2))
  4498. )
  4499. (setq jbd21 (distance spt2 pt21))
  4500. (setq jbd22 (distance spt2 pt22))
  4501. (if (< jbd21 jbd22)
  4502. (setq mpt (list (nth 0 pt21) (nth 1 pt21) selv))
  4503. (setq mpt (list (nth 0 pt22) (nth 1 pt22) selv))
  4504. )
  4505. (endpmod jben1 jb0 mpt sek)
  4506. ))
  4507. ))
  4508. );;;;;;(progn (print "层码不同,不能相接!!!"))
  4509. )
  4510. (princ "\n选择第一条要移动的线,<")
  4511. (setq jbe1 (entsel "<靠近目标点选择,右键结束>:"))
  4512. )(progn (setq jbe1 nil))
  4513. )
  4514. ))
  4515. )
  4516. ;修改线实体端点坐标
  4517. (defun endpmod(sen p0 lpt se)
  4518. (setq ed-list (entget sen))
  4519. (if (= p0 "POLYLINE")
  4520. (progn
  4521. (if (= se 1)
  4522. (progn
  4523. (setq sen1 (entnext sen))
  4524. (setq sed1 (entget sen1))
  4525. (setq sed10 (assoc 10 sed1))
  4526. (setq new10 (cons 10 lpt))
  4527. (setq sed1 (subst new10 sed10 sed1))
  4528. (entmod sed1)
  4529. (entupd sen)
  4530. ))
  4531. (if (= se 2)
  4532. (progn
  4533. (setq sen1 (entnext sen))
  4534. (setq sed1 (entget sen1))
  4535. (setq vex (cdr (assoc 0 sed1)))
  4536. (while (= vex "VERTEX")
  4537. (progn
  4538. (setq lasted sed1)
  4539. (setq sen1 (entnext sen1))
  4540. (setq sed1 (entget sen1))
  4541. (setq vex (cdr (assoc 0 sed1)))
  4542. ))
  4543. (setq sed10 (assoc 10 lasted))
  4544. (setq new10 (cons 10 lpt))
  4545. (setq sed1 (subst new10 sed10 lasted))
  4546. (entmod sed1)
  4547. (entupd sen)
  4548. ))
  4549. ));
  4550. (if (= p0 "LWPOLYLINE")
  4551. (progn
  4552. (if (= se 1)
  4553. (progn
  4554. (setq edlen (length ed-list))
  4555. (setq edi 0)
  4556. (while (< edi edlen)
  4557. (progn
  4558. (setq bz10 (car (nth edi ed-list)))
  4559. (if (= bz10 10)
  4560. (progn
  4561. (setq ed10 (nth edi ed-list))
  4562. (setq new10 (cons 10 lpt))
  4563. (setq ed-list (subst new10 ed10 ed-list))
  4564. (entmod ed-list)
  4565. (entupd sen)
  4566. (setq edi edlen)
  4567. ))
  4568. (setq edi (+ 1 edi))
  4569. ))
  4570. ));
  4571. (if (= se 2)
  4572. (progn
  4573. (setq edlen (length ed-list))
  4574. (setq edi 0)
  4575. (while (< edi (- edlen 3))
  4576. (progn
  4577. (setq bz10 (car (nth edi ed-list)))
  4578. (if (= bz10 10)
  4579. (progn
  4580. (setq edi (+ 3 edi))
  4581. ))
  4582. (setq edi (+ 1 edi))
  4583. ))
  4584. (setq ed10 (nth (- edi 4) ed-list))
  4585. (setq new10 (cons 10 lpt))
  4586. (setq ed-list (subst new10 ed10 ed-list))
  4587. (entmod ed-list)
  4588. (entupd sen)
  4589. ))
  4590. ))
  4591. )
  4592. ;;;;;;;;;;;;;;;;;选择块内实体
  4593. (defun block-enty(benty)
  4594. (setq bentyd (entget benty))
  4595. (setq bpol (cdr (assoc 0 bentyd)))
  4596. (if (= bpol "VERTEX")
  4597. (progn
  4598. (setq benty (entnext benty))
  4599. (setq bpol (cdr (assoc 0 bentyd)))
  4600. (while (/= bpol "SEQEND")
  4601. (progn
  4602. (setq benty (entnext benty))
  4603. (setq bentyd (entget benty))
  4604. (setq bpol (cdr (assoc 0 bentyd)))
  4605. ))
  4606. (setq bsenty (cdr (assoc -2 bentyd)))
  4607. )
  4608. (progn
  4609. (setq bsenty benty)
  4610. ))
  4611. )
  4612. ;;;;;;;;;;;;;;填充房屋
  4613. (defun c:tcfw ()
  4614. (undo_begin)
  4615. (clos)
  4616. (setvar "cmdecho" 1)
  4617. (command "osnap" "none")
  4618. (setq askdst (getreal "请输入填充间距?(3.2 米)"))
  4619. (if (= askdst nil)(setq askdst 3.2))
  4620. (setq ang2 (getreal "角度:(0.0)"))
  4621. (if (= ang2 nil)(setq ang2 0))
  4622. (command "zoom" "extents")
  4623. (if (= askdst nil)
  4624. (progn
  4625. (setq hadist 80.0)
  4626. (setq askdst 80.0)
  4627. )
  4628. (progn
  4629. (setq hadist (* 8 askdst))
  4630. )
  4631. )
  4632. (setq haasmb (ssget "x" (list (cons 0 "hatch") (cons 8 laynm))))
  4633. (command "erase" haasmb "")
  4634. (setq haasmb nil)
  4635. (setq entasmb nil)
  4636. (setq entasmb(ssget "x"(list (cons 0 "polyline") (cons 8 laynm))))
  4637. (command "layer" "m" laynm "")
  4638. (setq tmpasmb nil)
  4639. (setq tmpasmb (ssadd))
  4640. (setq i 0)
  4641. (princ "\n 填充中... 请等待.\n")
  4642. (while (< i (sslength entasmb))
  4643. (setq lnent1 nil)
  4644. (setq lnent1 (ssname entasmb i))
  4645. (getaposition)
  4646. (if (< (length poasmb) 3)
  4647. (command "erase" lnent1 "")
  4648. (progn
  4649. (getmxdist)
  4650. (setq aaa poasmb)
  4651. (setq point1 (nth 0 poasmb)
  4652. point2 (nth 1 poasmb)
  4653. )
  4654. (setq ptkkk (nth 0 poasmb))
  4655. (setq maxdist 0)
  4656. (setq j 1)
  4657. (while (/= point2 nil)
  4658. (setq dist (distance point1 point2))
  4659. (setq dist1 (distance ptkkk point2))
  4660. (if (> dist maxdist)
  4661. (progn
  4662. (setq angl (/ (*(angle point1 point2) 180.0) pi))
  4663. (setq maxdist dist)
  4664. )
  4665. )
  4666. (setq j (1+ j))
  4667. (setq point1 point2)
  4668. (setq point2 (nth j poasmb))
  4669. )
  4670. (setq ang3(+ angl (- 360 ang2)))
  4671. (if (> ang3 360)(setq ang3(- ang3 360)))
  4672. (if (and (> ang3 45) (< ang3 135))
  4673. (progn
  4674. (setq angl (- angl 90))
  4675. )
  4676. (progn
  4677. (if (and (> ang3 225) (< ang3 315))
  4678. (setq angl (- angl 90))
  4679. )
  4680. )
  4681. )
  4682. (if (and (< mxdist1 (* askdst 3)) (< maxdist (* askdst 3)))
  4683. (setq hadist (* (/ maxdist 2.5) 8))
  4684. (progn
  4685. (setq hadist (* askdst 8))
  4686. )
  4687. )
  4688. (if (> hadist (* askdst 8))
  4689. (setq hadist (* askdst 8))
  4690. )
  4691. (if (= (ssmemb lnent1 tmpasmb) nil)
  4692. (progn
  4693. (setq tmpasmb (ssadd lnent1 tmpasmb))
  4694. (setq subasmb (ssget "_cp"
  4695. poasmb
  4696. (list (cons 0 "polyline")
  4697. (cons 8 laynm)
  4698. (cons 70 1)
  4699. )
  4700. )
  4701. )
  4702. (if (= subasmb nil)
  4703. (progn
  4704. (setq subasmb (ssadd))
  4705. (setq subasmb (ssadd lnent1 subasmb))
  4706. )
  4707. (progn
  4708. (setq subasmb (ssadd lnent1 subasmb))
  4709. )
  4710. )
  4711. (setq haasmb (ssget "_cp"
  4712. poasmb
  4713. (list (cons 0 "hatch") (cons 8 laynm))
  4714. )
  4715. )
  4716. (command "erase" haasmb "")
  4717. (command "bhatch" "s" subasmb "" "p" "ansi31" hadist angl "")
  4718. (setq k 0)
  4719. (while (< k (sslength subasmb))
  4720. (setq lnent1 (ssname subasmb k))
  4721. (setq tmpasmb (ssadd lnent1 tmpasmb))
  4722. (setq k (1+ k))
  4723. )
  4724. )
  4725. (progn
  4726. (princ "\n Be Hatched!!")
  4727. )
  4728. )
  4729. )
  4730. )
  4731. (setq i (1+ i))
  4732. )
  4733. (print "房屋已填充!" )
  4734. (princ)
  4735. (undo_end)
  4736. )
  4737. (defun clos()
  4738. (setvar "cmdecho" 0)
  4739. (command "osnap" "none")
  4740. (setq laynm (getstring "请输入要处理的层:"))
  4741. (princ "\n Procissing... Please Wait.\n")
  4742. (setq entasmb (ssget "x" (list (cons 0 "polyline") (cons 8 laynm))))
  4743. (setq i 0)
  4744. (while (< i (sslength entasmb))
  4745. (setq lnent1 nil)
  4746. (setq lnent1 (ssname entasmb i))
  4747. (getaposition)
  4748. (setq ent2 (entget lnent1))
  4749. (if (/= (rem (cdr (assoc 70 ent2)) 2) 1)
  4750. (progn
  4751. (if (< (distance (car poasmb) (last poasmb)) 0.5)
  4752. (progn
  4753. (setq ent2 (subst (cons 70 1) (assoc 70 ent2) ent2))
  4754. (entmod ent2)
  4755. (entupd lnent1)
  4756. )
  4757. )
  4758. )
  4759. (progn
  4760. (setq ent2 (subst (cons 70 1) (assoc 70 ent2) ent2))
  4761. (entmod ent2)
  4762. (entupd lnent1)
  4763. )
  4764. )
  4765. (setq i (1+ i))
  4766. )
  4767. (setq i nil
  4768. entasmb nil
  4769. )
  4770. )
  4771. (defun getaposition ()
  4772. (setq poasmb nil)
  4773. (setq suben1 (entnext lnent1))
  4774. (setq suben2 (entget suben1))
  4775. (setq nameid (cdr (assoc 0 suben2)))
  4776. (while (and (/= nameid "SEQEND") (/= suben1 nil))
  4777. (setq suben2 (entget suben1))
  4778. (setq nameid (cdr (assoc 0 suben2)))
  4779. (if (= (strcase nameid) "VERTEX")
  4780. (progn
  4781. (setq point (cdr (assoc 10 suben2)))
  4782. (setq poasmb (cons point poasmb))
  4783. (setq suben2 nil
  4784. point nil
  4785. nameid nil
  4786. )
  4787. )
  4788. )
  4789. (setq suben1 (entnext suben1))
  4790. (setq suben2 (entget suben1))
  4791. (setq nameid (cdr (assoc 0 suben2)))
  4792. )
  4793. (setq suben2 (entget lnent1))
  4794. (setq pt1 (nth 0 poasmb))
  4795. (setq tmpsmb nil)
  4796. (setq tmpsmb (cons pt1 tmpsmb))
  4797. (setq subk 1)
  4798. (while (< subk (length poasmb))
  4799. (setq pt1 (nth subk poasmb))
  4800. (setq jstflg t)
  4801. (setq subi 0)
  4802. (while (< subi (length tmpsmb))
  4803. (if (<= (distance pt1 (nth subi tmpsmb)) 0.1)
  4804. (setq jstflg nil)
  4805. )
  4806. (setq subi (1+ subi))
  4807. )
  4808. (if (= jstflg t)
  4809. (setq tmpsmb (cons pt1 tmpsmb))
  4810. (setq jstflg t)
  4811. )
  4812. (setq subk (1+ subk))
  4813. )
  4814. (setq poasmb tmpsmb)
  4815. (if (= (rem (cdr (assoc 70 suben2)) 2) 1)
  4816. (progn
  4817. (setq point (last poasmb))
  4818. (setq poasmb (cons point poasmb))
  4819. )
  4820. )
  4821. (setq suben2 nil
  4822. point nil
  4823. )
  4824. (setq poasmb (reverse poasmb))
  4825. (setq suben1 nil)
  4826. )
  4827. (defun getmxdist ()
  4828. (setq mxdist1 0)
  4829. (setq mxiiii 0)
  4830. (while (< mxiiii (length poasmb))
  4831. (setq mxpt1 (nth mxiiii poasmb))
  4832. (setq mxkkkk (+ mxiiii 1))
  4833. (while (< mxkkkk (length poasmb))
  4834. (setq mxpt2 (nth mxkkkk poasmb))
  4835. (if (> (distance mxpt1 mxpt2) mxdist1)
  4836. (progn
  4837. (setq mxdist1 (distance mxpt1 mxpt2))
  4838. (setq mxangl (angle mxpt1 mxpt2))
  4839. )
  4840. )
  4841. (setq mxkkkk (1+ mxkkkk))
  4842. )
  4843. (setq mxiiii (1+ mxiiii))
  4844. )
  4845. )
  4846. (defun c:gczj()
  4847. (undo_begin)
  4848. (setq lla (getstring "输入层名:"))
  4849. (gzg lla)
  4850. (gzk lla)
  4851. (undo_end)
  4852. )
  4853. ;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;
  4854. (defun gzg(lla)
  4855. (setq zg 4)
  4856. (setq ss (ssget "x" (list (cons 8 lla) (cons 0 "text"))))
  4857. (setq i 0)
  4858. (setq len (sslength ss))
  4859. (while (< i len)
  4860. (setq en (ssname ss i))
  4861. (setq ed (entget en))
  4862. (setq h40 (assoc 40 ed))
  4863. (setq hh40 (cons 40 zg))
  4864. (setq ed (subst hh40 h40 ed))
  4865. (entmod ed)
  4866. (setq i (+ 1 i))
  4867. )
  4868. )
  4869. ;;;;;;;;;;;;;;;;;
  4870. (defun gzk(lla)
  4871. (SETQ WID 0.8)
  4872. (setq ss (ssget "x" (list (cons 8 lla) (cons 0 "TEXT"))))
  4873. (setq i 0)
  4874. (setq len (sslength ss))
  4875. (while (< i len)
  4876. (progn
  4877. (setq en (ssname ss i))
  4878. (setq ed (entget en))
  4879. (setq h41 (assoc 41 ed))
  4880. (setq hh41 (cons 41 wid))
  4881. (setq ed (subst hh41 h41 ed))
  4882. (entmod ed)
  4883. (setq i (+ 1 i))
  4884. ))
  4885. )
  4886. ;;;;;;;;;;;;;;;
  4887. (defun c:dgxzj()
  4888. (print)
  4889. (setq setqx (entsel "选择一根记曲线:"))
  4890. (setq setxy (cadr setqx))
  4891. (setq setqx (car setqx))
  4892. (setq enqx(entget setqx))
  4893. (setq en0(cdr (assoc 0 enqx)))
  4894. (setq txt "ERROR")
  4895. (if (= en0 "POLYLINE")(setq txt (itoa (fix (cadddr (assoc 10 enqx))))))
  4896. (if (= en0 "LWPOLYLINE")(setq txt (itoa (fix (cdr (assoc 38 enqx))))))
  4897. (setq txtfx (getorient setxy "\n请指定方向;"))
  4898. (setq setxy(polar setxy (+ 1.6 txtfx) -2))
  4899. (setq txtfx(/(* txtfx 180) 3.1415926))
  4900. (command "layer" "m" "曲线注记" "" )
  4901. (command "style" "STANDARD" "rs,hztxt" "0" "0.75" "0" "n" "n" "n")
  4902. (command "_text" setxy txtfx txt)
  4903. (princ)
  4904. )
  4905. (defun c:ybjmd()
  4906. (setq setxy (getpoint "\n 输入位置:"))
  4907. (command "layer" "m" "一般居民地" "" )
  4908. (command "style" "STANDARD" "rs,hztxt" "0" "0.75" "0" "n" "n" "n")
  4909. (setq txt (getstring "\n输入文字:"))
  4910. (command "_text" setxy 0 txt )
  4911. )
  4912. (defun c:szzj()
  4913. (setq setxy (getpoint "\n 输入位置:"))
  4914. (command "layer" "m" "数字注记" "" )
  4915. (command "style" "STANDARD" "rs,hztxt" "0" "0.75" "0" "n" "n" "n")
  4916. (setq txt (getstring "\n输入数字:"))
  4917. (command "_text" setxy 0 txt )
  4918. )
  4919. (defun c:smzj()
  4920. (setq setxy (getpoint "\n 输入位置:"))
  4921. (command "layer" "m" "说明注记" "" )
  4922. (command "style" "STANDARD" "rs,hztxt" "0" "0.75" "0" "n" "n" "n")
  4923. (setq txt (getstring "\n输入文字:"))
  4924. (command "_text" setxy 0 txt )
  4925. )
  4926. (defun c:xzzj()
  4927. (setq setxy (getpoint "\n 输入位置:"))
  4928. (command "layer" "m" "乡镇" "" )
  4929. (command "style" "STANDARD" "rs,hztxt" "0" "0.75" "0" "n" "n" "n")
  4930. (setq txt (getstring "\n输入文字:"))
  4931. (command "_text" setxy 0 txt )
  4932. )
  4933. (defun c:fmzj()
  4934. (setq setxy (getpoint "\n 输入位置:"))
  4935. (command "layer" "m" "附名" "" )
  4936. (command "style" "STANDARD" "rs,hztxt" "0" "0.75" "0" "n" "n" "n")
  4937. (setq txt (getstring "\n输入文字:"))
  4938. (command "_text" setxy 0 txt )
  4939. )
  4940. (defun c:jdzj()
  4941. (setq setxy (getpoint "\n 输入位置:"))
  4942. (command "layer" "m" "界端注记" "" )
  4943. (command "style" "STANDARD" "rs,hztxt" "0" "0.75" "0" "n" "n" "n")
  4944. (setq txt (getstring "\n输入文字:"))
  4945. (command "_text" setxy 0 txt )
  4946. )
  4947. ;;;检查曲线值
  4948. (defun c:jcqxz()
  4949. (setq rcKey nil)
  4950. (setq rckey1 "jcqxz1")
  4951. (while (not (eq rcKey "eXit"))
  4952. (progn
  4953. (initget 128 "jcqxz1 jcqxz2 eXit")
  4954. (print)
  4955. (setq rcKey (getkword "起点在高处[1]/起点在低处[2]/退出[X] 右键继续:"))
  4956. (if (eq rcKey nil)(setq rckey rckey1)(setq rckey1 rckey))
  4957. (cond
  4958. ((eq rcKey "jcqxz1") (jcqxz1)); (princ "\n起点在高处[1]:\n"))
  4959. ((eq rcKey "jcqxz2") (jcqxz2)); (princ "\n起点在低处[2]:\n"))
  4960. (t nil)
  4961. );;;cond
  4962. )
  4963. (princ)
  4964. )
  4965. )
  4966. (defun jcqxz2()
  4967. (setvar "cmdecho" 0)
  4968. (setvar "osmode" 0)
  4969. (print)
  4970. (setq p1(getpoint "低处"))
  4971. (print)
  4972. (setq p2(getpoint p1 "高处"))
  4973. (print)
  4974. (setq ck (ssget "F" (list p1 p2 )))
  4975. (setq ss -1)
  4976. (setq ys 3)
  4977. (setq gc nil)
  4978. (while (= gc nil)
  4979. (setq ss(+ ss 1))
  4980. (setq ck1(ssname ck ss))
  4981. (setq cm(cdr (assoc 8 (entget ck1))))
  4982. (print cm)
  4983. (if (or (= cm jc_jqx)(= cm jc_sqx))
  4984. (progn
  4985. (command "_change" ck1 "" "p" "c" ys "")
  4986. (setq lin-list (get-line-list ck1))
  4987. (setq gc(nth 2 (nth 1 lin-list)))
  4988. (print gc)
  4989. (princ "a")
  4990. ));;endif
  4991. )
  4992. (repeat (- (sslength ck) (+ ss 1))
  4993. (setq ss (+ ss 1))
  4994. (setq ys 3)
  4995. (setq ck1(ssname ck ss))
  4996. (setq cm(cdr (assoc 8 (entget ck1))))
  4997. (if (or (= cm jc_jqx)(= cm jc_sqx))
  4998. (progn
  4999. (setq lin-list (get-line-list ck1))
  5000. (setq gc1(nth 2 (nth 1 lin-list)))
  5001. (setq gc(+ gc jc_dgj))
  5002. (print gc1)
  5003. (princ "b")
  5004. (if (/= gc1 gc)(setq ys 1))
  5005. ;(command "_change" ck1 "" "p" "e" gc "")
  5006. (command "_change" ck1 "" "p" "c" ys "")
  5007. )))
  5008. (princ)
  5009. )
  5010. (defun jcqxz1()
  5011. (setvar "cmdecho" 0)
  5012. (setvar "osmode" 0)
  5013. (print)
  5014. (setq p1(getpoint "高处"))
  5015. (print)
  5016. (setq p2(getpoint p1 "低处"))
  5017. (print)
  5018. (setq ck (ssget "F" (list p1 p2 )))
  5019. (setq ss -1)
  5020. (setq ys 3)
  5021. (setq gc nil)
  5022. (while (= gc nil)
  5023. (setq ss(+ ss 1))
  5024. (setq ck1(ssname ck ss))
  5025. (setq cm(cdr (assoc 8 (entget ck1))))
  5026. (if (or (= cm jc_jqx)(= cm jc_sqx))
  5027. (progn
  5028. (command "_change" ck1 "" "p" "c" ys "")
  5029. (setq lin-list (get-line-list ck1))
  5030. (setq gc(nth 2 (nth 1 lin-list)))
  5031. (print gc)
  5032. ));;endif
  5033. )
  5034. (repeat (- (sslength ck) (+ ss 1))
  5035. (setq ss (+ ss 1))
  5036. (setq ck1(ssname ck ss))
  5037. (setq cm(cdr (assoc 8 (entget ck1))))
  5038. (if (or (= cm jc_jqx)(= cm jc_sqx))
  5039. (progn
  5040. (setq gc(- gc jc_dgj))
  5041. (setq ys 3)
  5042. (setq lin-list (get-line-list ck1))
  5043. (setq gc1(nth 2 (nth 1 lin-list)))
  5044. (if (/= gc1 gc)(setq ys 1))
  5045. ;(command "_change" ck1 "" "p" "e" gc "")
  5046. (print gc1)
  5047. (command "_change" ck1 "" "p" "c" ys "")
  5048. ))
  5049. )
  5050. (princ)
  5051. )
  5052. ;;;;桥
  5053. (defun c:sxq()
  5054. (setq en(car (entsel "/选择直线:")))
  5055. (while (/= en nil)
  5056. (setq en-list(get-line-list en))
  5057. (setq list1(car en-list))
  5058. (setq list2(nth (- (length en-list) 1) en-list))
  5059. (setq pt(angle list1 list2))
  5060. (setq list11(polar list1 (+ 2.356 pt) 4))
  5061. (setq list22(polar list2 (+ 0.785 pt) 4))
  5062. (command "layer" "m" "4620" "" )
  5063. (command "pline" list11 list1 list2 list22 "")
  5064. (command "erase" en "")
  5065. (setq en(car (entsel "选择直线:")))
  5066. (print)
  5067. )
  5068. )
  5069. (defun c:dxq()
  5070. (setq en(car (entsel "选择一直线:")))
  5071. (setq en-list(get-line-list en))
  5072. (setq list1(car en-list))
  5073. (setq list2(nth (- (length en-list) 1) en-list))
  5074. (setq pt(angle list1 list2))
  5075. (setq list11(polar list1 (+ 2.356 pt) 2.5))
  5076. (setq list22(polar list2 (+ 0.785 pt) 2.5))
  5077. (setq list111(polar list1 (+ 3.93 pt) 2.5))
  5078. (setq list222(polar list2 (+ 5.5 pt) 2.5))
  5079. (command "layer" "m" "4642" "" )
  5080. (command "pline" list11 list1 list111 "")
  5081. (command "pline" list22 list2 list222 "")
  5082. (command "pline" list1 list2 "")
  5083. (command "erase" en "")
  5084. (print)
  5085. )
  5086. ;;;;;
  5087. (defun c:TXT1();;;;备注;;;
  5088. (print)
  5089. ;(print " 内部道路:虚线--实线1,空格1,线宽0.15 ")
  5090. (print)
  5091. )
  5092. ;;获得线的节点表
  5093. ;;{get-line-list 实体名(Type:"LWPOLYLINE" OR "POLYLINE")};
  5094. ;;返回3D line-list ,line-elev ,ames-plnclose=1 close
  5095. (defun get-line-list (line-en-name / line-name-list line-type)
  5096. (setq ames-plnclose 0)
  5097. (setq line-name-list (entget line-en-name))
  5098. (setq line-type (cdr (assoc 0 line-name-list)))
  5099. (cond
  5100. ((= line-type "LWPOLYLINE") (get-lwpl-List line-en-name))
  5101. ((= line-type "POLYLINE") (get-pl-List line-en-name))
  5102. (T (prompt "\n此实体不是多义线!") (setq line-list nil) (setq line-elev nil) (*error*))
  5103. );endcond
  5104. );end get-line-list
  5105. ;获得LWPOLYLINE线节点表
  5106. (defun get-lwpl-List(line-en-name / line-name-list list-length
  5107. pt1 p10 ptx pty ptz pt I m kk)
  5108. (setq line-name-list (entget line-en-name))
  5109. (setq list-length (length line-name-list))
  5110. (setq line-list nil)
  5111. (setq line-elev (cdr (assoc 38 line-name-list)))
  5112. (setq d70 (cdr (assoc 70 line-name-list)))
  5113. (setq I 0 m 0)
  5114. (while (< m 20)
  5115. (progn
  5116. (setq kk (car (nth m line-name-list)))
  5117. (if (= kk 10)
  5118. (progn
  5119. (setq i m)
  5120. (setq m 21)
  5121. ))
  5122. (setq m (+ 1 m))
  5123. ))
  5124. (while (< i list-length)
  5125. (progn
  5126. (setq pt1 (nth i line-name-list))
  5127. (setq p10 (nth 0 pt1))
  5128. (if (= p10 10)
  5129. (progn
  5130. (setq ptx (nth 1 pt1))
  5131. (setq pty (nth 2 pt1))
  5132. (setq ptz line-elev)
  5133. (setq pt (list ptx pty ptz))
  5134. (setq line-list (cons pt line-list))
  5135. ))
  5136. (setq i (+ 4 i))
  5137. ))
  5138. (IF (OR (= D70 1) (= D70 9))
  5139. (PROGN
  5140. (SETQ line-list (CONS (LAST line-list) line-list))
  5141. (setq ames-plnclose 1)
  5142. ))
  5143. (setq line-list (reverse line-list))
  5144. );end get-lwpl-List
  5145. ;获得POLYLINE线节点表
  5146. (defun get-pl-List (line-en-name / line-name-list list-length vertex-name vertex-prop
  5147. vertex-list ptx pty ptz pt)
  5148. (setq line-list nil)
  5149. (setq vertex-list (entget line-en-name))
  5150. (setq d70 (cdr (assoc 70 vertex-list)))
  5151. (setq vertex-name (entnext line-en-name))
  5152. (setq vertex-list (entget vertex-name))
  5153. (setq line-elev (nth 3 (assoc 10 vertex-list)))
  5154. (setq vertex-prop (cdr (assoc 0 vertex-list)))
  5155. (while (/= vertex-prop "SEQEND")
  5156. (setq pt (cdr (assoc 10 vertex-list)))
  5157. (if (/= pt nil)
  5158. (progn
  5159. (setq ptx (nth 0 pt))
  5160. (setq pty (nth 1 pt))
  5161. (setq ptz (nth 2 pt))
  5162. (setq pt (list ptx pty ptz))
  5163. (setq line-list (cons pt line-list))
  5164. );endprogn
  5165. );endif
  5166. (setq vertex-name (entnext vertex-name))
  5167. (setq vertex-list (entget vertex-name))
  5168. (setq vertex-prop (cdr (assoc 0 vertex-list)))
  5169. );endwhile
  5170. (IF (OR (= D70 1) (= D70 9))
  5171. (PROGN
  5172. (SETQ line-list (CONS (LAST line-list) line-list))
  5173. (setq ames-plnclose 1)
  5174. ))
  5175. (setq line-list (reverse line-list))
  5176. );end get-pl-List
  5177. ;;;;
  5178. (DEFUN C:72b()
  5179. (undo_begin)
  5180. (setq sblip (getvar "blipmode"))
  5181. (setq scmde (getvar "cmdecho"))
  5182. (setvar "blipmode" 0)
  5183. (setvar "cmdecho" 0)
  5184. (setvar "cmdecho" 0)
  5185. (setvar "aunits" 3)
  5186. (if (= jieshi "0")
  5187. (progn
  5188. (SETQ enn '((-4 . "<OR")
  5189. (0 . "POLYLINE")
  5190. (0 . "LWPOLYLINE")
  5191. (-4 . "OR>"))
  5192. )
  5193. (prompt "\n选择基线: ")
  5194. (setq sssel (ssget enn))
  5195. )
  5196. (progn
  5197. (setq SsSel (ssget "x" '((-4 . "<or") (0 . "POLYLINE") (0 . "LWPOLYLINE")(-4 . "or>")(8 . "5220"))))
  5198. )
  5199. )
  5200. (command "layer" "m" "5220_SYM" "c" "4" "" "")
  5201. (if (/= SsSel nil)
  5202. (progn
  5203. (setq SsLen (sslength SsSel))
  5204. (setq T -1)
  5205. (while (/= t (- SsLen 1))
  5206. (setq T (+ T 1))
  5207. (a72b_a (ssname SsSel T))
  5208. )
  5209. ))
  5210. (setvar "aunits" 0)
  5211. (undo_end)
  5212. )
  5213. (defun a72b_a(en)
  5214. (setq en-list(get-line-list en))
  5215. (setq en-s(length en-list))
  5216. (setq ii 1.0)
  5217. (setq j 1)
  5218. (setq d1 (* 0.004 wwblc))
  5219. (setq d2 (* 0.001 wwblc))
  5220. (setq d3 (* 0.008 wwblc))
  5221. (SETQ D D1)
  5222. (setq kk 1)
  5223. (setq pc(nth 0 en-list))
  5224. (setq dc(nth 1 en-list))
  5225. (setq ss 1)
  5226. (WHILE (/= ss en-s)
  5227. (SETQ km (distance pc dc))
  5228. (setq ang (angle pc dc))
  5229. (while (>= km d)
  5230. (setq ii ( + ii 1))
  5231. (setq am (polar pc ang d))
  5232. (setq df d)
  5233. (if (= kk 1)
  5234. (progn(command "pline" pc am ""))
  5235. )
  5236. (setq km (- km d))
  5237. (if (= kk 1)
  5238. (progn(setq kk 2)
  5239. (progn
  5240. (setq d d2))
  5241. )
  5242. (progn(setq kk 1)
  5243. (if (= (fix (/ ii 3.0)) (/ ii 3.0))
  5244. (progn
  5245. (setq d d3)
  5246. (setq pcs pc)
  5247. (setq pc1 (polar pc ang (+ d3 2)))
  5248. (setq pc2 (polar pc ang 2))
  5249. (setq pcs pc2)
  5250. )
  5251. (progn (setq j (+ j 1))
  5252. (setq pcy pc)
  5253. (setq d d1)))
  5254. )
  5255. )
  5256. (if (and (= kk 1) (= (fix (/ (- ii 1) 3.0)) (/ (- ii 1) 3.0)))
  5257. (progn (setq pc3 pc)
  5258. (command "donut" "0" "1" pcs "")))
  5259. (if (and (= kk 1) (= (fix (/ j 2.0)) (/ j 2.0)))
  5260. (progn (command "donut" "0" "1" pcy "")))
  5261. (setq pc am)
  5262. )
  5263. (if (= kk 1)
  5264. (progn(command "pline" pc dc ""))
  5265. )
  5266. (setq d (- d km))
  5267. (setq pc dc)
  5268. (setq ss(+ ss 1))
  5269. (setq dc(nth ss en-list))
  5270. )
  5271. (setvar "blipmode" sblip)
  5272. (setvar "cmdecho" scmde)
  5273. )
  5274. ;;;
  5275. (DEFUN C:445()
  5276. (undo_begin)
  5277. (setq sblip (getvar "blipmode"))
  5278. (setq scmde (getvar "cmdecho"))
  5279. (setvar "blipmode" 0)
  5280. (setvar "cmdecho" 0)
  5281. (command "layer" "m" "2460_SYM" "c" "4" "" "")
  5282. (if (= jieshi "1")
  5283. (PROGN
  5284. (setq enss (ssget "x" '((-4 . "<OR")(0 . "POLYLINE")(0 . "LWPOLYLINE")(-4 . "OR>") (8 . "2460"))))
  5285. (if (= enss nil)(PROGN(print "找不到 2460 !")(exit)))
  5286. (setq len (sslength enss))
  5287. (setq s -1)
  5288. (WHILE (/= s (- len 1))
  5289. (setq s(+ s 1))
  5290. (setq en (ssname enss s))
  5291. (a445_a en)
  5292. );endwhile
  5293. )
  5294. (PROGN
  5295. (setq en(car (entsel "\n选择基线:")))
  5296. (a445_a en)
  5297. ));endif
  5298. (command "layer" "f" "2460" "")
  5299. (undo_end)
  5300. )
  5301. (DEFUN a445_a(en)
  5302. (setq en-list(get-line-list en))
  5303. (setq en-s(length en-list))
  5304. (SETQ D1 (* 0.01 wwblc))
  5305. (SETQ D D1)
  5306. (SETQ D2 (* 0.001 wwblc))
  5307. (setq pc(nth 0 en-list))
  5308. ;(SETQ PC (GETPOINT "\n Frome point:" ))
  5309. (SETQ X0 (CAR PC))
  5310. (SETQ Y0 (CADR PC))
  5311. (SETQ XA X0)
  5312. (SETQ YA Y0)
  5313. (setq ss 1)
  5314. (setq dc(nth 1 en-list))
  5315. ;(SETQ DC (GETPOINT "\n To point:" ))
  5316. (IF (= DC NIL)
  5317. (PROGN(SETQ KK 1))
  5318. (progn(setq kk 0)
  5319. (SETQ X1 (CAR DC))
  5320. (SETQ Y1 (CADR DC))
  5321. )
  5322. )
  5323. (SETQ KP 1)
  5324. (WHILE (/= KK 1)
  5325. (SETQ KM (DISTANCE (LIST X0 Y0) (LIST X1 Y1)))
  5326. (IF (< KM D)
  5327. (PROGN(SETQ D (- D KM))
  5328. (SETQ KP 1)
  5329. (SETQ X0 X1)
  5330. (SETQ Y0 Y1)
  5331. (SETQ XB X0)
  5332. (SETQ YB Y0)
  5333. (COMMAND "LINE" (LIST XA YA) (LIST XB YB) "")
  5334. (SETQ XA XB)
  5335. (SETQ YA YB)
  5336. )
  5337. (PROGN(SETQ HS D)
  5338. (SETQ X (+ X0 (* HS (/ (- X1 X0) KM))))
  5339. (SETQ Y (+ Y0 (* HS (/ (- Y1 Y0) KM))))
  5340. (SETQ XB (- X (* D2 (/ (- X1 X0) KM))))
  5341. (SETQ YB (- Y (* D2 (/ (- Y1 Y0) KM))))
  5342. (SETQ XC1 (- X (* (/ D2 2) (/ (- X1 X0) KM))))
  5343. (SETQ YC1 (- Y (* (/ D2 2) (/ (- Y1 Y0) KM))))
  5344. (SETQ XC2 (+ X (* (/ D2 2) (/ (- X1 X0) KM))))
  5345. (SETQ YC2 (+ Y (* (/ D2 2) (/ (- Y1 Y0) KM))))
  5346. (SETQ XE1 (- X (* (/ D2 2) (/ (- Y1 Y0) KM))))
  5347. (SETQ YE1 (+ Y (* (/ D2 2) (/ (- X1 X0) KM))))
  5348. (SETQ XE2 (+ X (* (/ D2 2) (/ (- Y1 Y0) KM))))
  5349. (SETQ YE2 (- Y (* (/ D2 2) (/ (- X1 X0) KM))))
  5350. (COMMAND "LINE" (LIST XA YA) (LIST XB YB) "")
  5351. (COMMAND "LINE" (LIST XC1 YC1) (LIST XC2 YC2) "")
  5352. (COMMAND "LINE" (LIST XE1 YE1) (LIST XE2 YE2) "")
  5353. (SETQ XA (+ X (* D2 (/ (- X1 X0) KM))))
  5354. (SETQ YA (+ Y (* D2 (/ (- Y1 Y0) KM))))
  5355. (SETQ X0 X)
  5356. (SETQ Y0 Y)
  5357. (SETQ D D1)
  5358. (SETQ KP 0)
  5359. )
  5360. )
  5361. (IF (= KP 1)
  5362. (PROGN
  5363. (setq ss(+ ss 1))
  5364. (setq dc(nth ss en-list))
  5365. ;(PROGN(SETQ DC (GETPOINT "\n To point:" ))
  5366. (IF (= ss en-s)
  5367. (PROGN(SETQ KK 1)
  5368. (COMMAND "LINE" (LIST XA YA) (LIST X1 Y1) "")
  5369. )
  5370. (PROGN(SETQ X1 (CAR DC))
  5371. (SETQ Y1 (CADR DC))
  5372. ))
  5373. ))
  5374. )
  5375. (setvar "blipmode" sblip)
  5376. (setvar "cmdecho" scmde)
  5377. )
  5378. (DEFUN C:446()
  5379. (undo_begin)
  5380. (setq sblip (getvar "blipmode"))
  5381. (setq scmde (getvar "cmdecho"))
  5382. (setvar "blipmode" 0)
  5383. (setvar "cmdecho" 0)
  5384. (command "layer" "m" "2470_SYM" "c" "4" "" "")
  5385. (if (= jieshi "1")
  5386. (PROGN
  5387. (setq enss (ssget "x" '((-4 . "<OR")(0 . "POLYLINE")(0 . "LWPOLYLINE")(-4 . "OR>") (8 . "2470"))))
  5388. (if (= enss nil)(PROGN(print "找不到 2470 !")(exit)))
  5389. (setq len (sslength enss))
  5390. (setq s -1)
  5391. (WHILE (/= s (- len 1))
  5392. (setq s(+ s 1))
  5393. (setq en (ssname enss s))
  5394. (a445_a en)
  5395. );endwhile
  5396. )
  5397. (PROGN
  5398. (setq en(car (entsel "\n选择基线:")))
  5399. (a445_a en)
  5400. ));endif
  5401. (command "layer" "f" "2470" "")
  5402. (undo_end)
  5403. )
  5404. (DEFUN a446_a(en / ss)
  5405. (setq en-list(get-line-list en))
  5406. (setq en-s(length en-list))
  5407. (SETQ D (* 0.002 wwblc))
  5408. (SETQ D2 (* 0.001 wwblc))
  5409. (SETQ D3 (* 0.0006 wwblc))
  5410. (setq pc(nth 0 en-list))
  5411. ;(SETQ PC (GETPOINT "\n Frome point:" ))
  5412. (SETQ X0 (CAR PC))
  5413. (SETQ Y0 (CADR PC))
  5414. (COMMAND "CIRCLE" (LIST X0 Y0) (/ D3 2))
  5415. (setq ss 1)
  5416. (setq dc(nth 1 en-list))
  5417. ;(SETQ DC (GETPOINT "\n To point:" ))
  5418. (IF (= DC NIL)
  5419. (PROGN(SETQ KK 1)
  5420. )
  5421. (PROGN(SETQ X1 (CAR DC))
  5422. (SETQ Y1 (CADR DC))
  5423. (setq kk 0)
  5424. ))
  5425. (SETQ KW 2)
  5426. (SETQ D4 D3)
  5427. (WHILE (/= KK 1)
  5428. (SETQ KM (DISTANCE (LIST X0 Y0) (LIST X1 Y1)))
  5429. (IF (< KM D)
  5430. (PROGN(SETQ D (- D KM))
  5431. (SETQ KP 1)
  5432. (SETQ X0 X1)
  5433. (SETQ Y0 Y1)
  5434. )
  5435. (PROGN(SETQ HS D)
  5436. (SETQ X (+ X0 (* HS (/ (- X1 X0) KM))))
  5437. (SETQ Y (+ Y0 (* HS (/ (- Y1 Y0) KM))))
  5438. (COMMAND "CIRCLE" (LIST X Y) (/ D4 2))
  5439. (SETQ X0 X)
  5440. (SETQ Y0 Y)
  5441. (SETQ KW (+ KW 1))
  5442. (IF (> KW 3)
  5443. (PROGN(SETQ KW 1)
  5444. (SETQ D (* 0.002 wwblc))
  5445. (SETQ D4 D3)))
  5446. (IF (= KW 2)
  5447. (PROGN(SETQ D (* 0.002 wwblc))
  5448. (SETQ D4 D3)))
  5449. (IF (= KW 3)
  5450. (PROGN(SETQ D (* 0.002 wwblc))
  5451. (SETQ D4 D2)))
  5452. (SETQ KP 0)
  5453. )
  5454. )
  5455. (IF (= KP 1)
  5456. ;(PROGN(SETQ DC (GETPOINT "\n To point:" ))
  5457. (PROGN
  5458. (setq ss(+ ss 1))
  5459. (setq dc(nth ss en-list))
  5460. (IF (= ss en-s)
  5461. (PROGN(SETQ KK 1)
  5462. )
  5463. (PROGN(SETQ X1 (CAR DC))
  5464. (SETQ Y1 (CADR DC))
  5465. ))
  5466. ))
  5467. )
  5468. (setvar "blipmode" sblip)
  5469. (setvar "cmdecho" scmde)
  5470. )
  5471. (DEFUN c:447()
  5472. (undo_begin)
  5473. (setq sblip (getvar "blipmode"))
  5474. (setq scmde (getvar "cmdecho"))
  5475. (setvar "blipmode" 0)
  5476. (setvar "cmdecho" 0)
  5477. (command "layer" "m" "2480_SYM" "c" "4" "" "")
  5478. (if (= jieshi "1")
  5479. (PROGN
  5480. (setq enss (ssget "x" '((-4 . "<OR")(0 . "POLYLINE")(0 . "LWPOLYLINE")(-4 . "OR>") (8 . "2480"))))
  5481. (if (= enss nil)(PROGN(print "找不到 2480 !")(exit)))
  5482. (setq len (sslength enss))
  5483. (setq s -1)
  5484. (WHILE (/= s (- len 1))
  5485. (setq s(+ s 1))
  5486. (setq en (ssname enss s))
  5487. (a447_a en)
  5488. );endwhile
  5489. )
  5490. (PROGN
  5491. (setq en(car (entsel "\n选择基线:")))
  5492. (a447_a en)
  5493. ));endif
  5494. (command "layer" "f" "2480" "")
  5495. (undo_end)
  5496. );endif
  5497. (DEFUN a447_a(en)
  5498. (setq en-list(get-line-list en))
  5499. (setq en-s(length en-list))
  5500. (SETQ D1 (* 0.01 wwblc))
  5501. (SETQ D D1)
  5502. (SETQ D2 (* 0.001 wwblc))
  5503. (setq pc(nth 0 en-list))
  5504. ;(SETQ PC (GETPOINT "\n Frome point:" ))
  5505. (SETQ X0 (CAR PC))
  5506. (SETQ Y0 (CADR PC))
  5507. (SETQ XA X0)
  5508. (SETQ YA Y0)
  5509. (setq dc(nth 1 en-list))
  5510. (setq ss 1)
  5511. ;(SETQ DC (GETPOINT "\n To point:" ))
  5512. (IF (= DC NIL)
  5513. (PROGN(SETQ KK 1)
  5514. )
  5515. (PROGN(SETQ X1 (CAR DC))
  5516. (SETQ Y1 (CADR DC))
  5517. (SETQ KK 0)
  5518. ))
  5519. (WHILE (/= KK 1)
  5520. (SETQ KM (DISTANCE (LIST X0 Y0) (LIST X1 Y1)))
  5521. (IF (< KM D)
  5522. (PROGN(SETQ D (- D KM))
  5523. (SETQ KP 1)
  5524. (SETQ X0 X1)
  5525. (SETQ Y0 Y1)
  5526. (SETQ XB X0)
  5527. (SETQ YB Y0)
  5528. (COMMAND "LINE" (LIST XA YA) (LIST XB YB) "")
  5529. (SETQ XA XB)
  5530. (SETQ YA YB)
  5531. )
  5532. (PROGN(SETQ HS D)
  5533. (SETQ X (+ X0 (* HS (/ (- X1 X0) KM))))
  5534. (SETQ Y (+ Y0 (* HS (/ (- Y1 Y0) KM))))
  5535. (SETQ XB (- X (* D2 (/ (- X1 X0) KM))))
  5536. (SETQ YB (- Y (* D2 (/ (- Y1 Y0) KM))))
  5537. (SETQ XC1 (- X (* (/ D2 2) (/ (- X1 X0) KM))))
  5538. (SETQ YC1 (- Y (* (/ D2 2) (/ (- Y1 Y0) KM))))
  5539. (SETQ XC2 (+ X (* (/ D2 2) (/ (- X1 X0) KM))))
  5540. (SETQ YC2 (+ Y (* (/ D2 2) (/ (- Y1 Y0) KM))))
  5541. (SETQ XH1 (+ X (+ (* (- XC1 X) 0.707) (* (- YC1 Y) 0.707))))
  5542. (SETQ YH1 (+ Y (- (* (- XC1 X) 0.707) (* (- YC1 Y) 0.707))))
  5543. (SETQ XH2 (+ X (+ (* (- XC2 X) 0.707) (* (- YC2 Y) 0.707))))
  5544. (SETQ YH2 (+ Y (- (* (- XC2 X) 0.707) (* (- YC2 Y) 0.707))))
  5545. (SETQ XE1 (- X (* (/ D2 2) (/ (- Y1 Y0) KM))))
  5546. (SETQ YE1 (+ Y (* (/ D2 2) (/ (- X1 X0) KM))))
  5547. (SETQ XE2 (+ X (* (/ D2 2) (/ (- Y1 Y0) KM))))
  5548. (SETQ YE2 (- Y (* (/ D2 2) (/ (- X1 X0) KM))))
  5549. (SETQ XG1 (+ X (+ (* (- XE1 X) 0.707) (* (- YE1 Y) 0.707))))
  5550. (SETQ YG1 (+ Y (- (* (- XE1 X) 0.707) (* (- YE1 Y) 0.707))))
  5551. (SETQ XG2 (+ X (+ (* (- XE2 X) 0.707) (* (- YE2 Y) 0.707))))
  5552. (SETQ YG2 (+ Y (- (* (- XE2 X) 0.707) (* (- YE2 Y) 0.707))))
  5553. (COMMAND "LINE" (LIST XA YA) (LIST XB YB) "")
  5554. (COMMAND "LINE" (LIST XH1 YH1) (LIST XH2 YH2) "")
  5555. (COMMAND "LINE" (LIST XG1 YG1) (LIST XG2 YG2) "")
  5556. (SETQ XA (+ X (* D2 (/ (- X1 X0) KM))))
  5557. (SETQ YA (+ Y (* D2 (/ (- Y1 Y0) KM))))
  5558. (SETQ X0 X)
  5559. (SETQ Y0 Y)
  5560. (SETQ D D1)
  5561. (SETQ KP 0)
  5562. )
  5563. )
  5564. (IF (= KP 1)
  5565. (PROGN
  5566. (setq ss(+ ss 1))
  5567. (setq dc(nth ss en-list))
  5568. ;(PROGN(SETQ DC (GETPOINT "\n To point:" ))
  5569. (IF (= ss en-s)
  5570. (PROGN(SETQ KK 1)
  5571. (COMMAND "LINE" (LIST XA YA) (LIST X1 Y1) "")
  5572. )
  5573. (PROGN(SETQ X1 (CAR DC))
  5574. (SETQ Y1 (CADR DC))
  5575. ))
  5576. ))
  5577. )
  5578. (setvar "blipmode" sblip)
  5579. (setvar "cmdecho" scmde)
  5580. )
  5581. ;;;;;;;;************修线
  5582. (defun c:Edpln()
  5583. (undo_begin)
  5584. (setvar "plinewid" 0)
  5585. (setq cla (getvar "Clayer"))
  5586. (setq delenLt nil addLt nil Ltqxn nil)
  5587. (princ "\n曲线编辑[画线]:\n")
  5588. (princ ">>")
  5589. (setq tp 0)
  5590. (while (not (or (= tp "POLYLINE") (= tp "LWPOLYLINE") (= tp "LINE")))
  5591. (setq qx1 (entsel "选择一根线(起始点):"))
  5592. (if (/= qx1 nil)
  5593. (progn
  5594. (setq en1 (car qx1))
  5595. (setq tp (cdr (assoc 0 (entget en1))))
  5596. )
  5597. (setq tp "POLYLINE")
  5598. )
  5599. )
  5600. (if (/= qx1 nil)
  5601. (progn
  5602. (setq en1 (car qx1))
  5603. (setq qsd (cadr qx1))
  5604. (setq endel en1)
  5605. (redraw en1 3)
  5606. (setq ed (entget en1))
  5607. (setq zzz (nth 3 (assoc 10 ed)))
  5608. (setq en1wid (cdr (assoc 40 ed)))
  5609. (if (= zzz 0.0)
  5610. (progn
  5611. (setq edzzz (entget (entnext en1)))
  5612. (setq zzz (nth 3 (assoc 10 edzzz)))
  5613. ))
  5614. (setq enlay (assoc 8 ed))
  5615. (setq enlay (cdr enlay))
  5616. (command "layer" "m" enlay "")
  5617. (princ "\n画线:")
  5618. (setq xyd qsd)
  5619. (setq qyd qsd)
  5620. (setq addlt (cons qsd addlt))
  5621. (while (/= xyd nil)
  5622. (progn
  5623. (princ "\n[")
  5624. (princ zzz)
  5625. (setq xyd (getpoint qyd "]画下一点[右键结束]:"))
  5626. (if (/= xyd nil)
  5627. (progn
  5628. (command "line" qyd xyd "")
  5629. (setq ena (entlast))
  5630. (setq delenLt (cons ena delenLt))
  5631. (setq qyd xyd)
  5632. (setq jsd xyd)
  5633. (setq xydx (nth 0 xyd))
  5634. (setq xydy (nth 1 xyd))
  5635. (setq xyd (list xydx xydy))
  5636. (setq addlt (cons xyd addlt))
  5637. ))
  5638. ))
  5639. (redraw en1 4)
  5640. (setq addlt (reverse addlt))
  5641. (setq qsdx (nth 0 qsd))
  5642. (setq qsdy (nth 1 qsd))
  5643. (setq qsd (list qsdx qsdy))
  5644. (setq jsdx (nth 0 jsd))
  5645. (setq jsdy (nth 1 jsd))
  5646. (setq jsd (list jsdx jsdy))
  5647. (if (/= delenLt nil)
  5648. (progn
  5649. (setq Delen (Length delenLt))
  5650. (setq Deln 0)
  5651. (while (< deln delen)
  5652. (progn
  5653. (setq delent (nth deln delenLt))
  5654. (command "erase" delent "")
  5655. (setq Deln (+ 1 deln))
  5656. ))
  5657. (redraw en1 4)
  5658. (get-line-list en1)
  5659. (edplnaddbiao line-list addlt qsd jsd line-elev)
  5660. (if (/= en1wid 0.0)
  5661. (setvar "plinewid" en1wid)
  5662. )
  5663. (Draw_Pln_lt lt)
  5664. (command "erase" endel "")
  5665. ))
  5666. (command "layer" "m" cla "")
  5667. ))
  5668. (setvar "plinewid" 0)
  5669. (undo_end)
  5670. )
  5671. (defun undo_begin()
  5672. (if (equal 0 (getvar "UNDOCTL")) ;Make sure undo is fully enabled.
  5673. (command "_.undo" "_all")
  5674. )
  5675. (if (or (not (equal 1 (logand 1 (getvar "UNDOCTL"))))
  5676. (equal 2 (logand 2 (getvar "UNDOCTL")))
  5677. );or
  5678. (command "_.undo" "_control" "_all")
  5679. )
  5680. (command "undo" "begin")
  5681. )
  5682. (defun undo_end()
  5683. (command "undo" "end")
  5684. )
  5685. (defun Draw_Pln_lt(Plt / i pf len pto)
  5686. (if (/= Plt nil)
  5687. (progn
  5688. (setq i 0)
  5689. (setq pf (nth i Plt))
  5690. (setq len (length Plt))
  5691. (if (= Is_3Dpln 1)
  5692. (command "3dpoly" pf)
  5693. (command "pline" pf)
  5694. )
  5695. (setq i 1)
  5696. (while (< i len)
  5697. (setq pto (nth i Plt))
  5698. (command pto)
  5699. (setq i (+ 1 i))
  5700. )
  5701. (command "")
  5702. ))
  5703. )
  5704. (defun EDPLnaddbiao(enlt addlt p1 p2 enz / pt)
  5705. (SETVAR "CMDECHO" 0)
  5706. (setq Isenadd 1)
  5707. ;;;;;
  5708. (setq EnLen (length enlt))
  5709. (setq n 0)
  5710. (setq min1 1000)
  5711. (setq min2 1000)
  5712. (while (< n Enlen)
  5713. (progn
  5714. (setq pt (nth n enlt))
  5715. (setq ds1 (distance pt p1))
  5716. (setq ds2 (distance pt p2))
  5717. (if (< ds1 min1)
  5718. (progn
  5719. (setq min1 ds1)
  5720. (setq the1 n)
  5721. ))
  5722. (if (< ds2 min2)
  5723. (progn
  5724. (setq min2 ds2)
  5725. (setq the2 n)
  5726. ))
  5727. (setq n (+ 1 n))
  5728. ))
  5729. ;;;;
  5730. (if (> the1 the2)
  5731. (progn
  5732. (setq addlt (reverse addlt))
  5733. (setq thetmp the1)
  5734. (setq the1 the2)
  5735. (setq the2 thetmp)
  5736. ))
  5737. ;;;;
  5738. (setq lt nil)
  5739. (setq n 0)
  5740. (while (< n Enlen)
  5741. (progn
  5742. ;;
  5743. (if (or (< n the1) (> n the2))
  5744. (progn
  5745. (setq pt (nth n enlt))
  5746. (setq ptx (nth 0 pt))
  5747. (setq pty (nth 1 pt))
  5748. (setq pt (list ptx pty enz))
  5749. (setq lt (cons pt lt))
  5750. )
  5751. (progn
  5752. (if (= isenadd 1)
  5753. (progn
  5754. (setq m 0)
  5755. (setq addltlen (length addlt))
  5756. (while (< m addltlen)
  5757. (progn
  5758. (setq pt (nth m addlt))
  5759. (setq ptx (nth 0 pt))
  5760. (setq pty (nth 1 pt))
  5761. (setq pt (list ptx pty enz))
  5762. (setq lt (cons pt lt))
  5763. (setq m (+ 1 m))
  5764. ))
  5765. (setq isenadd 0)
  5766. ))
  5767. )
  5768. )
  5769. ;;
  5770. (setq n (+ 1 n))
  5771. ))
  5772. (princ)
  5773. )
  5774. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  5775. (defun EdPlnaddLt(Plt)
  5776. (if (/= Plt nil)
  5777. (progn
  5778. (setq i 0)
  5779. (setq pf (nth i Plt))
  5780. (setq len (length Plt))
  5781. (command "pline" pf)
  5782. (setq i 1)
  5783. (while (< i len)
  5784. (progn
  5785. (setq pto (nth i Plt))
  5786. (command pto)
  5787. (setq i (+ 1 i))
  5788. ))
  5789. (command "")
  5790. ))
  5791. ;(setq plt nil)
  5792. ;(setq enn1 (entlast))
  5793. ;(command "pedit" enn1 "w" itW "")
  5794. (princ)
  5795. )
  5796. ;;;;;;;;;;;;*
  5797. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;断线连接;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  5798. (defun c:lj(/ ssent ppent e1 ek1 p1 e2 ek2 p2 sslen ssn ptzd
  5799. pk11 pk12 pk21 pk22 ltk1 ltk2 d11 d12 d21 d22 QzPLJoin
  5800. en1z en2z pt1x pt1y pt1z pt2x pt2y pt2z edk c10 c10n RetYN)
  5801. (setq *error* myerr)
  5802. (princ "\n曲线连接:\n")
  5803. (setq Ssent nil)
  5804. (setq Ppent nil)
  5805. (setq e1 "xxx")
  5806. (while (/= e1 nil)
  5807. (progn
  5808. (print)
  5809. (setq E1 (entsel "选择第一根线[右键结束]:"))
  5810. (if (/= e1 nil)
  5811. (progn
  5812. (setq ek1 (car e1))
  5813. (setq p1 (cadr e1))
  5814. (REDRAW Ek1 3)
  5815. (print)
  5816. (SETQ E2 (ENTSEL "选择第二根线:"))
  5817. (REDRAW Ek1 4)
  5818. (if (/= e2 nil)
  5819. (progn
  5820. (setq ek2 (car e2))
  5821. (setq p2 (cadr e2))
  5822. (setq ssent (cons ek1 ssent))
  5823. (setq ssent (cons ek2 ssent))
  5824. (setq Ppent (cons p1 PPent))
  5825. (setq Ppent (cons p2 PPent))
  5826. ))
  5827. ))
  5828. ))
  5829. (setq ssLen (length ssent))
  5830. (setq ssn 0)
  5831. (setq ssent (reverse ssent))
  5832. (setq ppent (reverse PPent))
  5833. (while (< ssn sslen)
  5834. (progn
  5835. (setq ek1 (nth ssn ssent))
  5836. (setq enj ek1)
  5837. (setq p1 (nth ssn PPent))
  5838. (setq ssn (+ 1 ssn))
  5839. (setq ek2 (nth ssn Ssent))
  5840. (setq p2 (nth ssn Ppent))
  5841. (setq ssn (+ 1 ssn))
  5842. (if (eq ek1 ek2)
  5843. (progn
  5844. (command "pedit" ek1 "c" "x")
  5845. )
  5846. (progn
  5847. (get-line-list ek1)
  5848. (setq ltk1 line-list)
  5849. (setq en1z line-elev)
  5850. (get-line-list ek2)
  5851. (setq ltk2 line-list)
  5852. (setq en2z line-elev)
  5853. (setq QzPLJoin 0)
  5854. (setq dz12 (- en1z en2z))
  5855. (setq dz12 (abs dz12))
  5856. (if (> dz12 0.001)
  5857. (progn
  5858. (princ "\n高程值不相等,要强制连结吗?(Y/N)<N>")
  5859. (setq RetYN (getstring))
  5860. (setq RetYN (strcase RetYN))
  5861. (if (= RetYN "Y")
  5862. (setq QzPLJoin 1)
  5863. )
  5864. ))
  5865. (if (or (< dz12 0.001) (= QzPLJoin 1))
  5866. (progn
  5867. (setq pk11 (nth 0 ltk1))
  5868. (setq pk12 (nth (- (length ltk1) 1) ltk1))
  5869. (setq pk21 (nth 0 ltk2))
  5870. (setq pk22 (nth (- (length ltk2) 1) ltk2))
  5871. (setq d11 (distance p1 pk11))
  5872. (setq d12 (distance p1 pk12))
  5873. (setq d21 (distance p2 pk21))
  5874. (setq d22 (distance p2 pk22))
  5875. (if (> d11 d12)
  5876. (setq ltk1 (reverse ltk1))
  5877. )
  5878. (if (< d21 d22)
  5879. (setq ltk2 (reverse ltk2))
  5880. )
  5881. (setq pk11 (nth 0 ltk1))
  5882. (setq pk22 (nth (- (length ltk2) 1) ltk2))
  5883. (setq pt1x (nth 0 pk11))
  5884. (setq pt1y (nth 1 pk11))
  5885. (setq pt1z (nth 2 pk11))
  5886. (setq pt2x (nth 0 pk22))
  5887. (setq pt2y (nth 1 pk22))
  5888. (setq pt2z (nth 2 pk22))
  5889. (setq pz12 (- pt1z pt2z))
  5890. (setq pz12 (abs pz12))
  5891. (setq ptzdx (/ (+ pt1x pt2x) 2))
  5892. (setq ptzdy (/ (+ pt1y pt2y) 2))
  5893. (setq Ptzd (list ptzdx ptzdy pt1z))
  5894. (setq ltk1 (cons ptzd ltk1))
  5895. (and-list ltk1 ltk2)
  5896. (ames-PlnList and-lt)
  5897. (get-attrib enj)
  5898. (set-attrib (entlast))
  5899. (COMMAND "erase" ek1 "")
  5900. (COMMAND "erase" ek2 "")
  5901. ))
  5902. ));;
  5903. ))
  5904. )
  5905. (defun and-List(lt1 lt2 / i len1 xyz)
  5906. (setq i 0)
  5907. (setq len1 (length lt1))
  5908. (setq lt2 (reverse lt2))
  5909. (while (< i len1)
  5910. (progn
  5911. (setq xyz (nth i lt1))
  5912. (setq lt2 (cons xyz lt2))
  5913. (setq i (+ 1 i))
  5914. ))
  5915. (setq and-lt (reverse lt2))
  5916. )
  5917. (defun ames-PlnList(Plt / pf len i pto)
  5918. (if (/= Plt nil)
  5919. (progn
  5920. (setq i 0)
  5921. (setq pf (nth i Plt))
  5922. (setq len (length Plt))
  5923. (command "pline" pf)
  5924. (setq i 1)
  5925. (while (< i len)
  5926. (progn
  5927. (setq pto (nth i Plt))
  5928. (command pto)
  5929. (setq i (+ 1 i))
  5930. ))
  5931. (command "")
  5932. ))
  5933. (princ)
  5934. )
  5935. (defun get-attrib(en-name / en-name-list)
  5936. ;;;;;inint
  5937. ;(attrib-init)
  5938. (setq en-name-list (entget en-name))
  5939. (setq en-type (cdr (assoc 0 en-name-list)))
  5940. (setq en-color (cdr (assoc 62 en-name-list)))
  5941. (if (or (= en-color 0) (= en-color nil))
  5942. (setq en-color "BYLAYER")
  5943. )
  5944. (setq en-layer (cdr (assoc 8 en-name-list)))
  5945. (setq en-Thickness (cdr (assoc 39 en-name-list)))
  5946. (setq en-scale (cdr (assoc 48 en-name-list)))
  5947. (setq en-ltype (cdr (assoc 6 en-name-list)))
  5948. (if (= en-ltype nil) (setq en-ltype "BYLAYER"))
  5949. (cond
  5950. ((= en-type "LWPOLYLINE") (get-lwpl-attrib en-name))
  5951. ((= en-type "POLYLINE") (get-pl-attrib en-name))
  5952. ((= en-type "TEXT") (get-TEXT-attrib en-name))
  5953. ((= en-type "INSERT") (get-insert-attrib en-name))
  5954. (T (prompt "\n不能获得此实体更多属性!") (EXIT))
  5955. );endcond
  5956. )
  5957. (defun get-lwpl-attrib( en-name / en-name-list width width0)
  5958. (setq en-name-list (entget en-name))
  5959. (setq en-elev (cdr (assoc 38 en-name-list)))
  5960. (setq en-close (cdr (assoc 70 en-name-list)))
  5961. (setq width (cdr (assoc 40 en-name-list)))
  5962. (setq width0 (cdr (assoc 41 en-name-list)))
  5963. (if (equal width width0 0.001)
  5964. (setq en-Width width)
  5965. (setq en-Width nil)
  5966. )
  5967. )
  5968. (defun set-attrib(en-name)
  5969. (if (/= en-Layer nil) (command "change" en-name "" "p" "layer" en-layer ""))
  5970. (if (/= en-Ltype nil) (command "change" en-name "" "p" "ltype" en-ltype ""))
  5971. (if (/= en-Thickness nil) (command "change" en-name "" "p" "Thickness" en-Thickness ""))
  5972. (if (/= en-scale nil) (command "change" en-name "" "P" "ltscale" en-scale ""))
  5973. (if (/= en-elev nil) (command "change" en-name "" "p" "elev" en-elev ""))
  5974. (if (/= en-color nil) (command "change" en-name "" "p" "color" en-color ""))
  5975. (if (/= en-width nil) (command "pedit" en-name "width" en-width ""))
  5976. (if (= en-close 1) (command "pedit" en-name "c" ""))
  5977. (if (/= en-Hight nil)
  5978. (command "change" en-name "" en-style en-Hight en-angle en-text "")
  5979. )
  5980. )
  5981. (defun get-pl-attrib( en-name / en-name-list vertex-name
  5982. vertex-list width0 width1)
  5983. (setq en-name-list (entget en-name))
  5984. (setq en-close (cdr (assoc 70 en-name-list)))
  5985. (setq width0 (cdr (assoc 40 en-name-list)))
  5986. (setq width1 (cdr (assoc 41 en-name-list)))
  5987. (if (equal width0 width1 0.001)
  5988. (setq en-Width width0)
  5989. (setq en-Width nil)
  5990. )
  5991. (setq vertex-name (entnext en-name))
  5992. (setq vertex-list (entget vertex-name))
  5993. (setq en-elev (nth 3 (assoc 10 vertex-list)))
  5994. )
  5995. ;;;;;;;;;;;;;;;;;;;;;;;;**
  5996. (defun c:kgd();;;块改点
  5997. (print "选择需要改的点")
  5998. (setq SsSel (ssget ))
  5999. (setq s -1)
  6000. (setq Len (sslength SsSel))
  6001. (while (/= s (- len 1))
  6002. (setq s(+ s 1))
  6003. (setq en (ssname sssel s))
  6004. (setq ed (entget en))
  6005. (setq la (cdr (assoc 0 ed)))
  6006. (if (= la "INSERT")
  6007. (progn
  6008. (setq la (cdr (assoc 10 ed)))
  6009. (command "point" la)
  6010. (command "erase" en "")
  6011. )
  6012. )
  6013. )
  6014. )
  6015. (defun c:clgctxt()
  6016. (undo_begin)
  6017. (setvar "cmdecho" 0)
  6018. (setq ed8 (getstring "输入层名:"))
  6019. (command "layer" "m" ed8 "c" "32" """")
  6020. (setq ed0 "text")
  6021. (setq ss0 (ssget "x" (list (cons 8 ed8) (cons 0 ed0))))
  6022. (setq kk (delete_list ss0))
  6023. )
  6024. (defun delete_list(ss)
  6025. (if (/= ss0 nil)
  6026. (progn
  6027. (setq i 0)
  6028. (setq j 0)
  6029. (setq sslen0 (sslength ss0))
  6030. (while (< i sslen0)
  6031. (setq ssen (ssname ss0 i))
  6032. (setq ssed (entget ssen))
  6033. (setq ss10 (cdr (assoc 10 ssed)))
  6034. (setq ay (nth 1 ss10))
  6035. (setq ax ( + (nth 0 ss10) 2))
  6036. (setq az (nth 2 ss10))
  6037. (setq ss20 (list ax ay az))
  6038. (setq sstxt1 (cdr (assoc 1 ssed)))
  6039. (command "insert" "hp.dwg" ss10 "" "" "")
  6040. (command "erase" ssen "")
  6041. (setq txt1 (sebstr sstxt1 1 1))
  6042. (if (= txt1 "+")(setq sstxt1 (substr sstxt1 2)))
  6043. (command "text" ss20 4 0 sstxt1)
  6044. (setq i (+ 1 i))
  6045. )
  6046. )
  6047. )
  6048. (undo_end)
  6049. )
  6050. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  6051. ;;;曲线付值
  6052. (defun c:qxfz()
  6053. (setq rcKey nil)
  6054. (setq rckey1 "jcqxz1")
  6055. (while (not (eq rcKey "eXit"))
  6056. (progn
  6057. (initget 128 "jcqxz1 jcqxz2 eXit")
  6058. (print)
  6059. (setq rcKey (getkword "起点在高处[1]/起点在低处[2]/退出[X] 右键继续:"))
  6060. (if (eq rcKey nil)(setq rckey rckey1)(setq rckey1 rckey))
  6061. (cond
  6062. ((eq rcKey "jcqxz1") (jcqxz1)); (princ "\n起点在高处[1]:\n"))
  6063. ((eq rcKey "jcqxz2") (jcqxz2)); (princ "\n起点在低处[2]:\n"))
  6064. (t nil)
  6065. );;;cond
  6066. )
  6067. (princ)
  6068. )
  6069. )
  6070. (defun jcqxz2()
  6071. (setvar "cmdecho" 0)
  6072. (setvar "osmode" 0)
  6073. (print)
  6074. (setq p1(getpoint "低处"))
  6075. (print)
  6076. (setq p2(getpoint p1 "高处"))
  6077. (print)
  6078. (setq ck (ssget "F" (list p1 p2 )))
  6079. (setq ss -1)
  6080. (setq ys 3)
  6081. (setq gc nil)
  6082. (while (= gc nil)
  6083. (setq ss(+ ss 1))
  6084. (setq ck1(ssname ck ss))
  6085. (setq cm(cdr (assoc 8 (entget ck1))))
  6086. (print cm)
  6087. (if (or (= cm jc_jqx)(= cm jc_sqx))
  6088. (progn
  6089. (command "_change" ck1 "" "p" "c" ys "")
  6090. (setq lin-list (get-line-list ck1))
  6091. (setq gc(nth 2 (nth 1 lin-list)))
  6092. (print gc)
  6093. ));;endif
  6094. )
  6095. (repeat (- (sslength ck) (+ ss 1))
  6096. (setq ss (+ ss 1))
  6097. (setq ys 3)
  6098. (setq ck1(ssname ck ss))
  6099. (setq cm(cdr (assoc 8 (entget ck1))))
  6100. (if (or (= cm jc_jqx)(= cm jc_sqx))
  6101. (progn
  6102. (setq gc(+ gc jc_dgj))
  6103. (print gc)
  6104. (command "_change" ck1 "" "p" "e" gc "")
  6105. (command "_change" ck1 "" "p" "c" ys "")
  6106. )))
  6107. (princ)
  6108. )
  6109. (defun jcqxz1()
  6110. (setvar "cmdecho" 0)
  6111. (setvar "osmode" 0)
  6112. (print)
  6113. (setq p1(getpoint "高处"))
  6114. (print)
  6115. (setq p2(getpoint p1 "低处"))
  6116. (print)
  6117. (setq ck (ssget "F" (list p1 p2 )))
  6118. (setq ss -1)
  6119. (setq ys 3)
  6120. (setq gc nil)
  6121. (while (= gc nil)
  6122. (setq ss(+ ss 1))
  6123. (setq ck1(ssname ck ss))
  6124. (setq cm(cdr (assoc 8 (entget ck1))))
  6125. (if (or (= cm jc_jqx)(= cm jc_sqx))
  6126. (progn
  6127. (command "_change" ck1 "" "p" "c" ys "")
  6128. (setq lin-list (get-line-list ck1))
  6129. (setq gc(nth 2 (nth 1 lin-list)))
  6130. (print gc)
  6131. ));;endif
  6132. )
  6133. (repeat (- (sslength ck) (+ ss 1))
  6134. (setq ss (+ ss 1))
  6135. (setq ck1(ssname ck ss))
  6136. (setq cm(cdr (assoc 8 (entget ck1))))
  6137. (if (or (= cm jc_jqx)(= cm jc_sqx))
  6138. (progn
  6139. (setq gc(- gc jc_dgj))
  6140. (setq ys 3)
  6141. (command "_change" ck1 "" "p" "e" gc "")
  6142. (print gc)
  6143. (command "_change" ck1 "" "p" "c" ys "")
  6144. ))
  6145. )
  6146. (princ)
  6147. )
  6148. ;;;;检查点线
  6149. (defun c:jcdx()
  6150. (if (= jcdx1 "0")(zdjcdx)(sdjcdx))
  6151. )
  6152. (defun msgv(pntVEL En1VEL En2VEL)
  6153. (princ "\nPntVEL: ")
  6154. (princ pntVEL)
  6155. (princ " En1VEL: ")
  6156. (princ En1VEL)
  6157. (princ " En2VEL ")
  6158. (princ En2VEL)
  6159. (princ "\n"))
  6160. (defun SetData()
  6161. (setq LaJqx jc_jqx)
  6162. (setq LaSqx jc_sqx)
  6163. (setq LaDian jc_gcd)
  6164. (setq SearchR 80)
  6165. (setq EnAng 0)
  6166. (setq EnDis 0)
  6167. (setq StpAng 23)
  6168. (setq StpDis 0.5)
  6169. (setq StpDis (* StpDis Blc)))
  6170. (defun chkd(EnPnt BLC DGj / dv absdv En1VEL En2VEL )
  6171. (SetData)
  6172. (setq dgj (float dgj))
  6173. (setq Pnt (assoc 10 (entget EnPnt)))
  6174. (if (/= Pnt nil)
  6175. (progn
  6176. (setq ptx (nth 1 Pnt))
  6177. (setq pty (nth 2 Pnt))
  6178. (setq Pnt0 (list ptx pty));create point (2d)
  6179. (setq EvlEnpnt (nth 3 Pnt));get point evl
  6180. (princ EvlEnpnt)
  6181. (setq EvlEnpnt (float EvlEnpnt))
  6182. ))
  6183. (setq Do 1)
  6184. (while (= Do 1);0
  6185. (progn
  6186. (setq Done1 1)
  6187. (setq EnDis StpDis)
  6188. (while (= Done1 1)
  6189. (progn
  6190. (setq Pnt1 (polar Pnt0 EnAng EnDis))
  6191. (SETQ SS1 (SSGET "F" (LIST Pnt0 Pnt1)))
  6192. (if (/= SS1 nil)
  6193. (progn
  6194. (SETQ LEN (SSLENGTH SS1))
  6195. (setq n 0)
  6196. (while (< n LEN)
  6197. (progn
  6198. (setq en (ssname SS1 n))
  6199. (setq SS1ed (entget en))
  6200. (SETQ Lay (CDR (ASSOC 8 SS1ED)))
  6201. (if (or (= Lay LaJqx) (= Lay LaSqx))
  6202. (progn
  6203. (setq Done1 0)
  6204. (setq tmppnt pnt1)
  6205. (setq SS1en en)
  6206. (setq n LEN)
  6207. )
  6208. )
  6209. (setq n (+ n 1))
  6210. ))
  6211. ))
  6212. (if (> EnDis SearchR)
  6213. (progn
  6214. (setq EnAng (+ EnAng StpAng))
  6215. (if (> EnAng (- 360 StpAng))
  6216. (progn
  6217. (setq Done1 2)
  6218. ))
  6219. (setq EnDis StpDis)
  6220. ))
  6221. (setq EnDis (+ EnDis StpDis))
  6222. )
  6223. )
  6224. (if (= Done1 0)
  6225. (progn
  6226. (setq Done 1)
  6227. (setq EnDis StpDis)
  6228. (while (= Done 1)
  6229. (progn
  6230. (setq pnt2 (polar tmpPnt EnAng EnDis))
  6231. (SETQ SS2 (SSGET "F" (LIST tmpPnt Pnt2)))
  6232. (if (/= SS2 nil)
  6233. (progn
  6234. (SETQ LEN (SSLENGTH SS2))
  6235. (setq n 0)
  6236. (while (< n LEN)
  6237. (progn
  6238. (setq en (ssname SS2 n))
  6239. (setq SS2ed (entget en))
  6240. (SETQ Lay (CDR (ASSOC 8 SS2ED)))
  6241. (if (or (= Lay LaJqx) (= Lay LaSqx))
  6242. (progn
  6243. (setq SS2en en)
  6244. (setq done 0)
  6245. (setq n LEN)
  6246. )
  6247. )
  6248. (setq n (+ n 1))
  6249. ))
  6250. ))
  6251. (if (> EnDis SearchR)
  6252. (progn
  6253. (setq Done 2)
  6254. (setq do 1)
  6255. ))
  6256. (setq EnDis (+ EnDis StpDis))
  6257. )
  6258. )
  6259. ))
  6260. (if (= Done 0)
  6261. (progn
  6262. (setq SS1ED (entnext SS1en))
  6263. (setq SS1ED (entget SS1ED))
  6264. (setq En1VEL (nth 3 (assoc 10 SS1ED)))
  6265. (setq SS2ED (entnext SS2en))
  6266. (setq SS2ED (entget SS2ED))
  6267. (setq En2VEL (nth 3 (assoc 10 SS2ED)))
  6268. (setq En1VEL (float En1VEL))
  6269. (setq En2VEL (float En2VEL))
  6270. (setq adgj (+ En1VEL DGJ))
  6271. (setq jdgj (- En1VEL DGJ))
  6272. (setq dv (- En2VEL En1VEL))
  6273. (setq absdv (abs dv))
  6274. (if (< absdv 0.0001)
  6275. (progn
  6276. (setq dv 0.0)
  6277. (setq absdv 0.0)
  6278. )
  6279. )
  6280. (if (= 0 absdv)
  6281. (progn
  6282. (setq Do 1)
  6283. (princ)
  6284. ))
  6285. (if (< dv 0)
  6286. (progn
  6287. (if ( and (> EvlEnpnt En1VEL) (< EvlEnpnt adgj))
  6288. (progn
  6289. (setq Do 0)
  6290. )
  6291. (progn
  6292. (setq Do 3)
  6293. )
  6294. )
  6295. ))
  6296. (if (> dv 0)
  6297. (progn
  6298. (if ( and (< EvlEnpnt En1VEL) (> EvlEnpnt jdgj))
  6299. (progn
  6300. (setq Do 0)
  6301. )
  6302. (progn
  6303. (setq Do 3)
  6304. )
  6305. )
  6306. ))
  6307. )
  6308. )
  6309. (if (and (> EnAng 360) (= do 1))
  6310. (progn
  6311. (setq Do 2)
  6312. (princ)
  6313. ))
  6314. (setq EnAng (+ EnAng StpAng))
  6315. (setq EnDis StpDis)
  6316. (princ)
  6317. ))
  6318. (if (= Do 4)
  6319. (progn
  6320. (msgv EvlEnpnt En1VEL En2VEL)
  6321. (command "layer" "make" "XXXX的点" "color" 5 "" "")
  6322. (command "circle" Pnt0 (* 5 BLC) "")
  6323. (princ)
  6324. (setq do4 (+ 1 do4))
  6325. ))
  6326. (if (= Do 3)
  6327. (progn
  6328. (command "layer" "make" "错误的点" "color" 1 "" "")
  6329. (command "circle" Pnt0 (* 5 BLC) "")
  6330. (princ)
  6331. (setq do3 (+ 1 do3))
  6332. ))
  6333. (if (= Do 2)
  6334. (progn
  6335. (command "layer" "make" "不能判断的点" "color" 2 "" "")
  6336. (command "circle" Pnt0 (* 5 BLC) "")
  6337. (princ)
  6338. (setq do2 (+ 1 do2))
  6339. ))
  6340. (if (= Do 0)
  6341. (progn
  6342. (command "layer" "make" "正确的点" "color" 3 "" "")
  6343. (command "circle" Pnt0 (* 3 BLC) "")
  6344. (setq do0 (+ 1 do0))
  6345. (princ)
  6346. ))
  6347. (princ)
  6348. )
  6349. (defun sdjcdx()
  6350. (SETVAR "CMDECHO" 0)
  6351. (setq p1 (getpoint "选择第一点:"))
  6352. (setq p2 (getcorner p1 "选择第二点:"))
  6353. (SETQ Pnts (ssget "w" p1 p2))
  6354. (SETQ LENth (SSLENGTH Pnts))
  6355. (princ lenth)
  6356. (setq m 0)
  6357. (while (< m lenth)
  6358. (progn
  6359. (setq en (ssname Pnts m))
  6360. (princ "判断")
  6361. (princ m)
  6362. (princ "点: ")
  6363. (print)
  6364. (setq ed0 (entget en))
  6365. (SETQ La (CDR (ASSOC 8 ED0)))
  6366. (if(= La "8140")
  6367. (chkd en Blc0 dgj0)
  6368. )
  6369. (setq m (+ m 1))
  6370. (command "pline" pnt0 pnt1 pnt2 "")
  6371. ));end while
  6372. )
  6373. (defun zdjcdx()
  6374. (setq Blc0 (/ wwblc 1000))
  6375. (setq Dgj0 jc_dgj)
  6376. (princ "\n请稍等一会儿......")
  6377. (setq do4 0)
  6378. (setq do3 0)
  6379. (setq do2 0)
  6380. (setq do0 0)
  6381. (SETVAR "CMDECHO" 0)
  6382. (SETQ Pnts (SSGET "x" (list (cons 0 "POINT")(cons 8 jc_gcd))))
  6383. (if (= pnts nil)(SETQ Pnts (SSGET "x" (list (cons 0 "INSERT")(cons 8 jc_gcd)))))
  6384. (if (= pnts nil)(progn(print "找不到高程点!")(exit abort)))
  6385. (SETQ LENth (SSLENGTH Pnts))
  6386. (princ lenth)
  6387. (setq m 0)
  6388. (while (< m lenth)
  6389. (progn
  6390. (setq en (ssname Pnts m))
  6391. (princ "判断")
  6392. (princ m)
  6393. (princ "点: ")
  6394. (print)
  6395. (setq ed0 (entget en))
  6396. (SETQ La (CDR (ASSOC 8 ED0)))
  6397. ; (if(= La LaDian)
  6398. (if(= La "8140")
  6399. (chkd en Blc0 dgj0)
  6400. )
  6401. (setq m (+ m 1))
  6402. ))
  6403. (princ "错误点个数:[ ")
  6404. (princ do3)
  6405. (princ " ] 不能判定点个数:[ ")
  6406. (princ do2)
  6407. (princ " ] 正确点个数:[ ")
  6408. (princ do0)
  6409. (princ " ]")
  6410. (princ)
  6411. )
  6412. ;;;;;;;;;;;;;;;;
  6413. ;内插
  6414. (defun dxf(ent i / val)
  6415. (setq val (cdr (assoc i (entget ent)))))
  6416. (defun sysvarinit()
  6417. (setvar "cmdecho" 0)
  6418. (setvar "plinetype" 0)
  6419. (setvar "luprec" 3)
  6420. (setvar "OSMODE" 0))
  6421. (sysvarinit)
  6422. (if (= Gol_wid nil)
  6423. (setq Gol_wid 0.0))
  6424. (setq NcKjwayNI 0)
  6425. (setq sqxlayer "8110")
  6426. (setq rcQxgs 4)
  6427. (setq LjDis 30.0)
  6428. (setq dges-dgj 2.0)
  6429. (setq rcCs 1 pc_lj 1 NC_BJ_LJ 1)
  6430. (setq DrcCs0 1)
  6431. (setq DrcCs1 1)
  6432. (setq Is_3Dpln 0)
  6433. (setq rcBlc 2)
  6434. (setq qbo_ang1 25.0)
  6435. (setq qbo_ang2 40.0)
  6436. (defun c:qxnc()
  6437. (princ "\n曲线内插:")
  6438. (qxnc_xg 0)
  6439. )
  6440. (defun c:qxxg()
  6441. (princ "\n修多根曲线:")
  6442. (qxnc_xg 1)
  6443. )
  6444. (defun qxnc_xg(NC_BJ_LJ)
  6445. (setq ed_scale(/ wwblc 1000))
  6446. ;(setq NC_BJ_LJ 1)
  6447. (setq NcKjwayNI 0)
  6448. (if (= NcKjwayNI 0)
  6449. (NcEd_N)
  6450. (NcEd_I)))
  6451. (defun NcEd_I()
  6452. (ed-qxrcin)
  6453. (setq NcKjway 0)
  6454. (setq NcKjwayNI 1)
  6455. (if (= isedpln_qxnc 1)
  6456. (progn
  6457. (undo_begin)
  6458. (Ed_QxIns lt1 lt2 p1z p2z)
  6459. (Ed_Nc_Lj qxncaddent)
  6460. (undo_end))))
  6461. (defun NcEd_N()
  6462. (ed-qxrcin)
  6463. (setq NcKjway 0)
  6464. (setq NcKjwayNI 0)
  6465. (if (= isedpln_qxnc 1)
  6466. (progn
  6467. (undo_begin)
  6468. (Ed_QxNc lt1 lt2 p1z p2z)
  6469. (Ed_Nc_Lj qxncaddent)
  6470. (undo_end))))
  6471. (defun ed-qxrcin( / rc_qxgs pt3 qx1 qx2 en1 qsd1 en2 qsd2 dz dgj rckey)
  6472. (setq isedpln_qxnc 0)
  6473. (setq pt3 nil)
  6474. (setvar "cmdecho" 0)
  6475. (setq Dges-dgj JC_dgj)
  6476. (princ "\n曲线根数[")
  6477. (princ rcqxgs)
  6478. (princ "]:")
  6479. (if (= NcKjway 0)
  6480. (setq Rc_Qxgs (getint)))
  6481. (if (/= Rc_Qxgs nil)
  6482. (setq rcQxgs rc_Qxgs))
  6483. (princ "\n");;曲线
  6484. (setq tp 0)
  6485. (while (not (or (= tp "POLYLINE") (= tp "LWPOLYLINE") (= tp "LINE")))
  6486. (setq qx1 (entsel "选择第一根线(起始点):"))
  6487. (if (/= qx1 nil)
  6488. (progn
  6489. (setq en11 (car qx1))
  6490. (setq tp (dxf en11 0)))
  6491. (setq tp "POLYLINE")))
  6492. (if (/= qx1 nil)
  6493. (progn
  6494. (setq en1 (car qx1))
  6495. (setq qsd1 (cadr qx1))
  6496. (redraw en1 3)
  6497. (print)
  6498. (setq tp 0)
  6499. (while (not (or (= tp "POLYLINE") (= tp "LWPOLYLINE") (= tp "LINE")))
  6500. (setq qx2 (ENTSEL "\n选择第二根线(起始点):"))
  6501. (if (/= qx2 nil)
  6502. (progn
  6503. (setq en22 (car qx2))
  6504. (setq tp (dxf en22 0)))
  6505. (setq tp "POLYLINE")))
  6506. (if (/= qx2 nil)
  6507. (progn
  6508. (setq en2 (car qx2))
  6509. (setq qsd2 (cadr qx2))
  6510. (setq zzd1 (getpoint "\n选择第一根线(终止点)[右键结束]:"))
  6511. (if (= zzd1 nil)
  6512. (progn
  6513. (redraw en1 4)
  6514. (redraw en2 4)
  6515. (redraw en1 1)
  6516. (redraw en2 1)
  6517. (get-line-list en1)
  6518. (setq l1close Dges-plnclose)
  6519. (setq p1z line-elev)
  6520. (setq Lt1 line-list)
  6521. (get-line-list en2)
  6522. (setq l2close Dges-plnclose)
  6523. (setq p2z line-elev)
  6524. (setq Lt2 line-list)
  6525. (if (or (= l1close 1) (= l2close 1))
  6526. (progn
  6527. (setq pt1 (nth 0 lt1))
  6528. (p-lt-min pt1 lt2)
  6529. (setq pt2 (nth 0 lt2))
  6530. (Dges-resort lt2 ptm ptm pt2);sortlt
  6531. (setq lt2 sortlt)
  6532. (Dges-lt-area lt1)
  6533. (setq area1 area)
  6534. (Dges-lt-area lt2)
  6535. (if (< (* area1 area) 0)
  6536. (setq lt1 (reverse lt1)))
  6537. ));end if closed
  6538. );else 选起止点
  6539. (progn
  6540. (redraw en2 1)
  6541. (setq zzd2 (getpoint "\n选择第二根线(终止点):"))
  6542. (redraw en1 4)
  6543. (redraw en2 1)
  6544. (get-line-list en1)
  6545. (setq p1z line-elev)
  6546. (setq l1close Dges-plnclose)
  6547. (setq Lt1 line-list)
  6548. (get-line-list en2)
  6549. (setq p2z line-elev)
  6550. (setq lt2 line-list)
  6551. (setq l2close Dges-plnclose)
  6552. (setq pt3 nil)
  6553. (if (= l1close 1)
  6554. (progn
  6555. (setq pt3 (getpoint "\n选择内插区间:"))
  6556. (Dges-resort lt1 qsd1 zzd1 pt3)
  6557. (setq lt1 sortlt));no close
  6558. (progn
  6559. (Dges-resort lt1 qsd1 zzd1 pt3)
  6560. (setq lt1 sortlt)
  6561. ));end if l1close
  6562. (get-line-list en2)
  6563. (setq l2close Dges-plnclose)
  6564. (setq p2z line-elev)
  6565. (setq Lt2 line-list)
  6566. (if (= l2close 1)
  6567. (progn
  6568. (if (= pt3 nil) (setq pt3 (getpoint "\n选择内插区间:")))
  6569. (Dges-resort lt2 qsd2 zzd2 pt3)
  6570. (setq lt2 sortlt)
  6571. );no close
  6572. (progn
  6573. (Dges-resort lt2 qsd2 zzd2 pt3)
  6574. (setq lt2 sortlt)
  6575. )) ;end if l2close
  6576. ));;;;;end 选择 if
  6577. (setq isedpln_qxnc 1)
  6578. (setq dz (- p1z p2z))
  6579. (setq dgj (/ dz (+ 1 rcQxgs)))
  6580. (if (not (equal (abs dgj) Dges-dgj 0.001))
  6581. (progn
  6582. (initget 128 "Yes No")
  6583. (princ "\n")
  6584. (if (eq rcKey nil)
  6585. (setq rckey "yes"))
  6586. (cond
  6587. ((eq rcKey "Yes") (setq isedpln_qxnc 1))
  6588. ((eq rcKey "No") (setq isedpln_qxnc 0))))))))))
  6589. (defun Ed_QxIns(lt1 lt2 p1z p2z / len1 dlt dpt len1 len2 lt1 lt2 ltmp tmpz n1 n2 l1pt l2pt dis1 dis2
  6590. nmin mm addpt addn)
  6591. (if (and (/= lt1 nil) (/= lt2 nil))
  6592. (progn
  6593. (setq dlt nil)
  6594. (setq len1 (length Lt1))
  6595. (setq len2 (length Lt2))
  6596. (if (< len1 len2);<
  6597. (progn
  6598. (setq Ltmp Lt1)
  6599. (setq Lt1 Lt2)
  6600. (setq Lt2 Ltmp)
  6601. (setq Lent Len1)
  6602. (setq Len1 Len2)
  6603. (setq Len2 Lent)
  6604. (setq tmpz p1z)
  6605. (setq p1z p2z)
  6606. (setq p2z tmpz)))
  6607. (setq n1 0)
  6608. (setq n2 0)
  6609. (setq L1pt (nth n1 Lt1))
  6610. (setq L2pt (nth n2 Lt2))
  6611. (setq dis1 (distance l1pt l2pt))
  6612. (setq L2pt (nth (- Len2 1) Lt2))
  6613. (setq dis2 (distance l1pt l2pt))
  6614. (if (> dis1 dis2)
  6615. (setq lt2 (reverse lt2)))
  6616. (setq L1pt (car Lt1))
  6617. (setq L2pt (car Lt2))
  6618. (setq dpt (list l1pt l2pt))
  6619. (setq dlt (cons dpt dlt))
  6620. (setq nmin 0)
  6621. (setq tmpn nmin)
  6622. (setq Len21 (- Len2 1))
  6623. (while (< n1 Len1)
  6624. (setq L1pt (nth n1 Lt1))
  6625. (setq mm n2)
  6626. (setq L2pt0 (nth n2 Lt2))
  6627. (setq dis1 (distance l1pt l2pt0))
  6628. (setq dis1tmp dis1)
  6629. (while (< mm Len21)
  6630. (setq mm (+ 1 mm))
  6631. (setq L2pt1 (nth mm Lt2))
  6632. (setq dis2 (distance l1pt l2pt1))
  6633. (if (> dis1 dis2)
  6634. (progn
  6635. (setq nmin mm)
  6636. (setq dis1 dis2))));;;while
  6637. (if (/= dis1tmp dis1)
  6638. (setq n2 (+ 1 n2)))
  6639. (setq L2pt (nth nmin Lt2))
  6640. (if (> nmin (+ rccs tmpn))
  6641. (progn
  6642. (setq addn (+ tmpn drccs0))
  6643. (while (< addn (- nmin drccs1))
  6644. (setq addpt (nth addn Lt2))
  6645. (setq dpt (list l1pt addpt))
  6646. (setq dlt (cons dpt dlt))
  6647. (setq addn (+ 1 addn)))))
  6648. (setq dpt (list l1pt l2pt))
  6649. (setq dlt (cons dpt dlt))
  6650. (setq n1 (+ 1 n1))
  6651. (setq tmpn nmin));while
  6652. (setq L1pt (last Lt1))
  6653. (setq L2pt (last Lt2))
  6654. (setq dpt (list l1pt l2pt))
  6655. (setq dlt (cons dpt dlt))
  6656. (Draw_pln_n dlt))))
  6657. (defun Ed_Nc_Lj(qxncent / woff i len ent delent ed zz0 zzz edzzz entiii plzb strpt endpt strx stry pt1 pt2 ss iii nnn)
  6658. (if (= NC_BJ_LJ 1)
  6659. (progn
  6660. (setq qxncaddent qxncent)
  6661. (setq delqxncent qxncent)
  6662. (setq woff (* ED_SCALE 1.5))
  6663. (if (/= qxncaddent nil)
  6664. (progn
  6665. (setq i 0)
  6666. (setq len (length qxncaddent))
  6667. (while (< i len)
  6668. (setq ent (nth i qxncaddent))
  6669. (setq delent ent)
  6670. (setq ed (entget ent))
  6671. (if (/= ed nil)
  6672. (progn
  6673. (setq zz0 (nth 3 (assoc 10 ed)))
  6674. (if (= zz0 0.0)
  6675. (progn
  6676. (setq edzzz (entget (entnext ent)))
  6677. (setq zz0 (nth 3 (assoc 10 edzzz)))))
  6678. (setq zz0 (rtos zz0 2 1))
  6679. (setq plzb (get-line-list ent))
  6680. (setq strpt (car plzb))
  6681. (setq endpt (last plzb))
  6682. (IF (and (/= plzb nil) (/= strpt nil) (/= endpt nil))
  6683. (progn
  6684. (setq strx (nth 0 strpt))
  6685. (setq stry (nth 1 strpt))
  6686. (setq pt1 (list (- strx woff) (- stry woff)))
  6687. (setq pt2 (list (+ strx woff) (+ stry woff)))
  6688. (setq ss (ssget "c" pt1 pt2))
  6689. (if (/= ss nil)
  6690. (progn
  6691. (setq iii 0)
  6692. (SETQ nnn (sslength ss))
  6693. (while (< iii nnn)
  6694. (SETQ entiii (ssname ss iii))
  6695. (if (/= ent entiii)
  6696. (progn
  6697. (setq ed (entget entiii))
  6698. (if (/= ed nil)
  6699. (progn
  6700. (setq ed38 (assoc 38 ed))
  6701. (if (= ed38 nil)
  6702. (setq zzz (nth 3 (assoc 10 ed)))
  6703. (setq zzz (cdr ed38)))
  6704. (if (= zzz 0.0)
  6705. (progn
  6706. (setq edzzz (entget (entnext entiii)))
  6707. (setq zzz (nth 3 (assoc 10 edzzz)))))
  6708. (if (/= zzz nil)
  6709. (setq ZZz (rtos zzz 2 1 ))
  6710. (setq ZZz 0))
  6711. (if (= zzz zz0)
  6712. (progn
  6713. (command "ERASE" delent "")
  6714. (setq delent (nth i delqxncent))
  6715. (command "ERASE" delent "")
  6716. (setq lt (get-line-list entiii))
  6717. (edplnaddbiao lt plzb strpt endpt (atof zzz))
  6718. (Draw_Pln_lt lt)
  6719. (entdel entiii)))))))
  6720. (setq iii (+ 1 iii)))))))))
  6721. (setq endpt nil strpt nil)
  6722. (setq i (+ 1 i))))))))
  6723. (defun Ed_QxNc(lt1 lt2 p1z p2z / qx1 en1 qsd1 zzd1 qx2 en2 qsd2 zzd2 p1z lt1 p2z lt2 len1 len2 duand1 duand2 i j sti stj pi2 diand
  6724. pt1i pt1j ptsi ptsj jiaod11 jiaod12 jiaod21 jiaod22 jiaod1 jiaod2 listpp)
  6725. (if (and (/= lt1 nil) (/= lt2 nil))
  6726. (progn
  6727. (setq len1 (- (length Lt1) 1))
  6728. (setq len2 (- (length Lt2) 1))
  6729. (setq duand1 (distance (nth 0 lt1) (nth 0 lt2)))
  6730. (setq duand2 (distance (nth 0 lt1) (nth len2 lt2)))
  6731. (if (> duand1 duand2)
  6732. (setq lt2 (reverse lt2)))
  6733. (setq i 0)
  6734. (setq j 0)
  6735. (setq sti i stj j)
  6736. (setq pi2 (* pi 2))
  6737. (setq diand (list (list (nth 0 lt1) (nth 0 lt2))))
  6738. (while (and (< i len1) (< j len2))
  6739. (setq pt1i (nth (+ 1 i) lt1))
  6740. (setq pt1j (nth (+ 1 j) lt2))
  6741. (setq ptsi (nth sti lt1))
  6742. (setq ptsj (nth stj lt2))
  6743. (setq jiaod11 (angle pt1i ptsi))
  6744. (setq jiaod12 (angle pt1i ptsj))
  6745. (setq jiaod21 (angle pt1j ptsi))
  6746. (setq jiaod22 (angle pt1j ptsj))
  6747. (setq jiaod1 (abs (- jiaod11 jiaod12)))
  6748. (setq jiaod2 (abs (- jiaod21 jiaod22)))
  6749. (if (> jiaod1 pi) (setq jiaod1 (- pi2 jiaod1)))
  6750. (if (> jiaod2 pi) (setq jiaod2 (- pi2 jiaod2)))
  6751. (if (> jiaod1 jiaod2)
  6752. (progn
  6753. (setq i (+ 1 i))
  6754. (setq listpp (list (nth i lt1) (nth j lt2)))
  6755. (setq diand (cons listpp diand))
  6756. (setq sti i))
  6757. (progn
  6758. (setq j (+ 1 j))
  6759. (setq listpp (list (nth i lt1) (nth j lt2)))
  6760. (setq diand (cons listpp diand))
  6761. (setq stj j))))
  6762. (if (and (< (- len1 i) 4) (< (- len2 j) 4))
  6763. (progn
  6764. (setq listpp (list (last lt1) (last lt2)))
  6765. (setq diand (cons listpp diand))))
  6766. (Draw_pln_n diand))))
  6767. (defun Dges-resort(lt pt111 pt222 pt3 / n xyz ltzj
  6768. fdpt1 fdpt2 fdpt3 fdpt1n fdpt2n tmplt1 tmplt2)
  6769. (setq sortlt nil tmplt1 nil tmplt2 nil)
  6770. (if (= pt111 nil)
  6771. (setq pt1 (car lt))
  6772. (setq pt1 pt111))
  6773. (if (= pt222 nil)
  6774. (setq pt2 (last lt))
  6775. (setq pt2 pt222))
  6776. (setq ltzj 1)
  6777. (setq n (length lt))
  6778. (setq xyz (nth 0 lt))
  6779. (if (/= xyz (nth (- n 1) lt))
  6780. (progn
  6781. (setq lt (reverse lt))
  6782. (setq lt (cons xyz lt))
  6783. (setq lt (reverse lt))
  6784. (setq n (+ 1 n))
  6785. ));;if /=xyz
  6786. (p-lt-min pt1 lt)
  6787. (setq pt1 ptm)
  6788. (p-lt-min pt2 lt)
  6789. (setq pt2 ptm)
  6790. (if (/= pt3 nil)
  6791. (progn
  6792. (p-lt-min pt3 lt)
  6793. (setq pt3 ptm)))
  6794. (setq i 0 fdpt1 0 fdpt2 0 fdpt3 0)
  6795. (while (< i n)
  6796. (progn
  6797. (setq xyz (nth i lt))
  6798. (if (equal xyz pt1 0.001)
  6799. (progn
  6800. (setq fdpt1 1)
  6801. (setq fdpt1n i)));if
  6802. (if (equal xyz pt2 0.001)
  6803. (progn
  6804. (setq fdpt2 1)
  6805. (setq fdpt2n i)));if
  6806. (if (/= pt3 nil)
  6807. (progn
  6808. (if (equal xyz pt3 0.001)
  6809. (progn
  6810. (setq fdpt3 1)
  6811. (if (or (and (= fdpt1 1) (= fdpt2 1)) (and (= fdpt1 0) (= fdpt2 0)))
  6812. (progn
  6813. (setq ltzj 0)
  6814. ));if (or
  6815. ));;(if (= xyz pt3)
  6816. ));; (/= pt3 nil)
  6817. (if (and (= fdpt1 1) (= fdpt2 1)(= pt3 nil))
  6818. (progn
  6819. (setq ltzj 1)
  6820. (setq i n)
  6821. ))
  6822. (setq i (+ 1 i))
  6823. ));end while
  6824. (if (> fdpt1n fdpt2n)
  6825. (setq tmp fdpt1n fdpt1n fdpt2n fdpt2n tmp)
  6826. )
  6827. (if (= ltzj 1)
  6828. (progn
  6829. (setq i fdpt1n)
  6830. (while (<= i fdpt2n)
  6831. (progn
  6832. (setq xyz (nth i lt))
  6833. (setq sortlt (cons xyz sortlt))
  6834. (setq i (+ 1 i))
  6835. ))
  6836. (setq sortlt (reverse sortlt))
  6837. );else /= 1
  6838. (progn
  6839. (setq i 0)
  6840. (while (<= i fdpt1n)
  6841. (progn
  6842. (setq xyz (nth i lt))
  6843. (setq tmplt1 (cons xyz tmplt1))
  6844. (setq i (+ 1 i))
  6845. ))
  6846. (setq tmplt1 (reverse tmplt1))
  6847. (setq i fdpt2n)
  6848. (while (< i n)
  6849. (progn
  6850. (setq xyz (nth i lt))
  6851. (setq tmplt2 (cons xyz tmplt2))
  6852. (setq i (+ 1 i))
  6853. ))
  6854. (setq tmplt2 (reverse tmplt2))
  6855. (append tmplt1 tmplt2)
  6856. (setq ptz (last xyz))
  6857. (setq sortlt and-lt)
  6858. ));end if
  6859. (setq sortlt sortlt)
  6860. )
  6861. (defun p-lt-min(pt lt / i pti mins n dis)
  6862. (setq mins 9999.0)
  6863. (if (and (/= lt nil) (/= pt nil))
  6864. (progn
  6865. (setq n (length lt))
  6866. (setq i 0)
  6867. (repeat n
  6868. (setq pti (nth i lt))
  6869. (if (/= pti nil)
  6870. (progn
  6871. (setq dis (distance pt pti))
  6872. (if (< dis mins)
  6873. (progn
  6874. (setq mins dis)
  6875. (setq ptm pti)
  6876. ))
  6877. ));if pti
  6878. (setq i (+ 1 i))
  6879. );repeat
  6880. ));if and
  6881. )
  6882. (defun Draw_pln_n(diand / ddlen di ddb
  6883. tmpp11 tmpp12 tmpp21 tmpp22 ang1 ang2 ang3 ang4 pnt1 pnt2 pnt3 pnt4 pnt5 m gs n pt1 pt2 pptx
  6884. ppty pptz ppt ang12 ang13 ang2a )
  6885. (setq qxncaddent nil)
  6886. ;;;;;;;;; 优化
  6887. (setq ddlen (length diand))
  6888. (setq di 0)
  6889. (SETQ ddb (list (nth 0 diand)))
  6890. (while (< di (- ddlen 2))
  6891. (progn
  6892. (setq tmpp11 (nth 0 (nth di diand)))
  6893. (setq tmpp12 (nth 1 (nth di diand)))
  6894. (setq tmpp21 (nth 0 (nth (+ 2 di) diand)))
  6895. (setq tmpp22 (nth 1 (nth (+ 2 di) diand)))
  6896. (if (or (equal tmpp11 tmpp21) (equal tmpp12 tmpp22))
  6897. (progn
  6898. (setq ddb (cons (nth (+ 1 di) diand) ddb))
  6899. (setq di (+ 1 di))
  6900. )
  6901. (progn
  6902. (setq ddb (cons (nth (+ 2 di) diand) ddb))
  6903. (setq di (+ 2 di))
  6904. ))
  6905. ))
  6906. (if (= di (- ddlen 2))
  6907. (setq ddb (cons (nth (- ddlen 1) diand) ddb))
  6908. )
  6909. (setq diand ddb ddb nil)
  6910. ;;;;;画线
  6911. (command "layer" "m" sqxlayer "" "")
  6912. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;yjy去波init bg
  6913. (setq ang1 nil ang2 nil ang3 nil ang4 nil
  6914. pnt1 nil pnt2 nil pnt3 nil pnt4 nil pnt5 nil
  6915. )
  6916. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;yjyed
  6917. (setq m (length diand))
  6918. (setq gs 0)
  6919. (while (< gs RCQxgs)
  6920. (setq n 0)
  6921. (setq plzb nil)
  6922. (if (= Is_3Dpln 1)
  6923. (command "3dpoly")
  6924. (command "pline")
  6925. )
  6926. (setq pptz (+ (* (/ (- p2z p1z) (+ 1 RCQxgs)) (+ 1 gs)) p1z))
  6927. (while (< n m)
  6928. (setq diandd (nth n diand))
  6929. (setq pt1 (nth 0 diandd))
  6930. (setq pt2 (nth 1 diandd))
  6931. (setq pptx (+ (* (/ (- (nth 0 pt2) (nth 0 pt1)) (+ 1 RCQxgs)) (+ 1 gs)) (nth 0 pt1)))
  6932. (setq ppty (+ (* (/ (- (nth 1 pt2) (nth 1 pt1)) (+ 1 RCQxgs)) (+ 1 gs)) (nth 1 pt1)))
  6933. (setq ppt (list pptx ppty pptz))
  6934. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;yjy去波bg
  6935. (if (/= pnt4 nil)
  6936. (setq pnt5 pnt4)
  6937. )
  6938. (if (/= pnt3 nil)
  6939. (setq pnt4 pnt3)
  6940. )
  6941. (if (/= pnt2 nil)
  6942. (setq pnt3 pnt2)
  6943. )
  6944. (if (/= pnt1 nil)
  6945. (setq pnt2 pnt1)
  6946. )
  6947. (setq pnt1 ppt)
  6948. (if (and (/= pnt1 nil) (/= pnt2 nil) (/= pnt3 nil) (/= pnt4 nil) (/= pnt5 nil))
  6949. (progn
  6950. (setq ang1 (ang3pnt pnt5 pnt4 pnt3))
  6951. (setq ang2 (ang3pnt pnt4 pnt3 pnt2))
  6952. (setq ang3 (ang3pnt pnt3 pnt2 pnt1))
  6953. (setq ang12 (* ang1 ang2))
  6954. (setq ang13 (* ang1 ang3))
  6955. (setq ang2A (abs ang2))
  6956. (if (not (or (and (> ang13 0) (< ang12 0) (> ang2A qbo_ang1)) (> ang2A qbo_ang2)))
  6957. (if (> n 8)
  6958. (command pnt3)
  6959. (command ppt)
  6960. )
  6961. )
  6962. )
  6963. (progn
  6964. (command ppt)
  6965. ))
  6966. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;yjyed
  6967. (setq n (+ 1 n))
  6968. )
  6969. ;;;;;;;;;;;;;;;
  6970. (command pnt2)
  6971. (command pnt1)
  6972. ;;;;;;;;;;;;;;;
  6973. (command "")
  6974. (setq entL (entlast))
  6975. (setq qxncaddent (cons entL qxncaddent))
  6976. (setq gs (+ 1 gs))
  6977. )
  6978. )
  6979. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;yjy
  6980. (defun ang3pnt(pt0 pt1 pt2 / ang10 ang12 angzy zzjj)
  6981. (setq ang10 (rtod (angle pt1 pt0)))
  6982. (setq ang12 (rtod (angle pt1 pt2)))
  6983. (setq ang (- ang10 ang12))
  6984. (setq angabs (abs ang))
  6985. (setq angJ (- angabs 180.0))
  6986. (if (< angabs 180.0)
  6987. (progn
  6988. (if (< ang 0.0)
  6989. (setq angJ (abs angJ))
  6990. (setq angJ (- 0.0 (abs angJ)))
  6991. )
  6992. ))
  6993. (if (> angabs 180.0)
  6994. (progn
  6995. (if (< ang 0.0)
  6996. (setq angJ (- 0.0 (abs angJ)))
  6997. (setq angJ (abs angJ))
  6998. )
  6999. ))
  7000. ;;;;;;
  7001. ;(setvar "luprec" 0)
  7002. ;(setq zzjj (rtos angJ))
  7003. ;(command "text" pt1 "1" "" zzjj)
  7004. (setq Myang angJ)
  7005. )
  7006. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  7007. (defun rtod(r)
  7008. (/ (* r 180.0) 3.1415926)
  7009. )
  7010. ;;;;;;;;;;;;;;;;;;;;;;;;
  7011. (print)
  7012. (princ " (^_^)GB-512(^_^) OK!")
  7013. (GB512blc)